mirror of
https://github.com/tachiyomiorg/website.git
synced 2024-12-21 07:31:58 +01:00
Add the list of available extensions.
This commit is contained in:
parent
c6ea68b370
commit
159f8c9e3d
45
package-lock.json
generated
45
package-lock.json
generated
@ -1737,6 +1737,43 @@
|
||||
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
|
||||
"dev": true
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.19.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
|
||||
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
|
||||
"requires": {
|
||||
"follow-redirects": "1.5.10",
|
||||
"is-buffer": "^2.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"follow-redirects": {
|
||||
"version": "1.5.10",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
|
||||
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
|
||||
"requires": {
|
||||
"debug": "=3.1.0"
|
||||
}
|
||||
},
|
||||
"is-buffer": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
|
||||
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
}
|
||||
}
|
||||
},
|
||||
"babel-loader": {
|
||||
"version": "8.0.6",
|
||||
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
|
||||
@ -5585,6 +5622,11 @@
|
||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
||||
"dev": true
|
||||
},
|
||||
"iso-639-1": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-2.1.0.tgz",
|
||||
"integrity": "sha512-8CTinLimb9ncAJ11wpCETWZ51qsQ3LS4vMHF2wxRRtR3+b7bvIxUlXOGYIdq0413+baWnbyG5dBluVcezOG/LQ=="
|
||||
},
|
||||
"isobject": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
|
||||
@ -5784,8 +5826,7 @@
|
||||
"lodash": {
|
||||
"version": "4.17.15",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
||||
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
|
||||
},
|
||||
"lodash._reinterpolate": {
|
||||
"version": "3.0.0",
|
||||
|
@ -13,5 +13,10 @@
|
||||
"devDependencies": {
|
||||
"http-server": "^0.11.1",
|
||||
"vuepress": "^1.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.19.0",
|
||||
"iso-639-1": "^2.1.0",
|
||||
"lodash": "^4.17.15"
|
||||
}
|
||||
}
|
||||
|
104
src/.vuepress/components/ExtensionList.vue
Normal file
104
src/.vuepress/components/ExtensionList.vue
Normal file
@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-for="extensionGroup in extensions" :key="extensionGroup[0].lang">
|
||||
<h2>{{ langName(extensionGroup[0].lang) }}</h2>
|
||||
<div class="extension" v-for="extension in extensionGroup" :key="extension.apk">
|
||||
<img :src="iconUrl(extension.apk)" width="42" height="42">
|
||||
<div class="extension-text">
|
||||
<div class="upper">
|
||||
<span class="bold">{{ extension.name.split(': ')[1] }}</span>
|
||||
<Badge :text="'v' + extension.version"/>
|
||||
</div>
|
||||
<div class="down">
|
||||
{{ extension.pkg }}
|
||||
</div>
|
||||
</div>
|
||||
<a :href="apkUrl(extension.apk)" class="button" download>Download</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const axios = require('axios')
|
||||
const groupBy = require('lodash/groupBy')
|
||||
const sortBy = require('lodash/sortBy')
|
||||
const ISO6391 = require('iso-639-1').default
|
||||
|
||||
const EXTENSION_JSON = 'https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/index.json'
|
||||
|
||||
export default {
|
||||
data: function () {
|
||||
return {
|
||||
extensions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
langName: code => code === 'all' ? 'All' : ISO6391.getName(code),
|
||||
iconUrl (pkg) {
|
||||
const pkgName = pkg.substring(0, pkg.lastIndexOf('.'))
|
||||
return `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/icon/${pkgName}.png`
|
||||
},
|
||||
apkUrl: apk => `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`
|
||||
},
|
||||
async beforeMount () {
|
||||
const { data } = await axios.get(EXTENSION_JSON)
|
||||
const values = Object.values(groupBy(data, 'lang'))
|
||||
this.$data.extensions = sortBy(values, [g => this.langName(g[0].lang)])
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.extension {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.4em 0.2em;
|
||||
}
|
||||
|
||||
.extension:not(:last-child) {
|
||||
border-bottom: 1px solid #eaecef;
|
||||
}
|
||||
|
||||
.extension img {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.extension .extension-text {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.extension .extension-text .down {
|
||||
font-size: 0.8rem;
|
||||
font-family: monospace;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
.extension .button {
|
||||
display: inline-block;
|
||||
font-size: 0.8em;
|
||||
color: #fff;
|
||||
background-color: #2e84bf;
|
||||
padding: 0.3rem;
|
||||
border-radius: 4px;
|
||||
transition: background-color 0.1s ease;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #2977ac;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.extension .button:hover {
|
||||
background-color: #3992cf;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.extension .extension-text .down {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -10,13 +10,15 @@ module.exports = {
|
||||
nav: [
|
||||
{ text: 'Guide', link: '/guide/' },
|
||||
{ text: 'FAQ', link: '/faq/' },
|
||||
{ text: 'Extensions', link: '/extensions/' },
|
||||
{ text: 'Wiki', link: 'https://github.com/inorichi/tachiyomi/wiki' },
|
||||
{ text: 'Discord', link: 'https://discord.gg/tachiyomi' }
|
||||
],
|
||||
sidebar: [
|
||||
'/',
|
||||
'/guide/',
|
||||
'/faq/'
|
||||
'/faq/',
|
||||
'/extensions/'
|
||||
],
|
||||
lastUpdated: 'Last Updated'
|
||||
}
|
||||
|
10
src/extensions/README.md
Normal file
10
src/extensions/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: Available extensions
|
||||
lang: en-US
|
||||
---
|
||||
|
||||
# Extensions
|
||||
|
||||
Here is a list of all available extensions to download inside the app.
|
||||
|
||||
<ExtensionList/>
|
Loading…
Reference in New Issue
Block a user