Files
toolbox/plugin/dev/github/index.html
T
2023-09-28 16:21:06 +08:00

142 lines
5.6 KiB
HTML

{extend name="common/plugin_layout" /}
{block name="title"}{$plugin.title} - {:config_get('title')}{/block}
{block name="main"}
<div class="container-xl" id="app">
<div class="col-sm-12 col-md-10 col-xl-8 center-block">
<div class="card card-preview">
<div class="card-inner mt-3">
<div class="nya-title nk-ibx-action-item progress-rating">
<span class="nk-menu-text font-weight-bold">GitHub下载加速</span>
</div>
<div class="alert alert-info">有些节点不支持某些文件的下载,切换节点即可解决</div>
<div class="form-group">
<label class="form-label" for="set.input">Github链接</label>
<div class="form-control-wrap">
<input v-model="set.input" id="set.input" type="text" class="form-control form-control-lg" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="form-label" >选择节点</label>
<div class="form-control-wrap">
<select class="form-control form-control-lg" v-model="set.api">
<option v-for="(v,k) in apis" :value="k">{{k}}</option>
</select>
</div>
</div>
<div class="row pt-1 pb-1">
<div class="col-4">
<button class="btn btn-dim btn-outline-secondary btn-block card-link" @click="download">
<em class="icon ni ni-download"></em>下载
</button>
</div>
<div class="col-4">
<button class="btn btn-dim btn-outline-secondary btn-block card-link" @click="copy">
<em class="icon ni ni-copy"></em>复制
</button>
</div>
<div class="col-4">
<button class="btn btn-dim btn-outline-secondary btn-block card-link" @click="reset">
<em class="icon ni ni-reload"></em>清空
</button>
</div>
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script src="{$cdn_cdnjs}vue/2.6.14/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
set: {
input: '',
output: '',
api: 'jsdelivr.net',
},
apis: {
'jsdelivr.net': (github) => {
if (github.version === 'archive') {
return 'https://ghproxy.com/' + github.url.toString()
}
return `https://fastly.jsdelivr.net/gh/${github.owner}/${github.repo}@${github.version}/${github.file}`
},
'ghproxy.com': (github) => {
return 'https://ghproxy.com/' + github.url.toString()
},
'tool.mintimate.cn': (github) => {
return 'https://tool.mintimate.cn/ghs/' + github.url.toString()
},
'monika.love[HK]': (github) => {
return `https://hk1.monika.love/${github.owner}/${github.repo}/${github.version}/${github.file}`
},
'ghproxy.fsou.cc': (github) => {
return 'https://ghproxy.fsou.cc/' + github.url.toString()
},
'gh.xiu2.xyz': (github) => {
return 'https://gh.xiu2.xyz/' + github.url.toString()
},
'pd.zwc365.com': (github) => {
return 'https://pd.zwc365.com/seturl/' + github.url.toString()
},
'gh.api.99988866.xyz': (github) => {
return 'https://gh.api.99988866.xyz/' + github.url.toString()
},
'fastgit.org': (github) => {
if (github.version === 'archive') {
return `https://download.fastgit.org/${github.owner}/${github.repo}/${github.version}/${github.file}`
}
return `https://raw.fastgit.org/${github.owner}/${github.repo}/${github.version}/${github.file}`
},
'staticaly.com': (github) => {
if (github.version === 'archive') {
return 'https://ghproxy.com/' + github.url.toString()
}
return `https://cdn.staticaly.com/gh/${github.owner}/${github.repo}/${github.version}/${github.file}`
},
},
},
watch: {
'set.input'(newVal) {
this.set.input = newVal.trim()
}
},
methods: {
download() {
this.set.output = this.apis[this.set.api](this.parse(this.set.input))
open(this.set.output)
},
reset() {
this.set.input = ''
this.set.output = ''
},
copy() {
this.set.output = this.apis[this.set.api](this.parse(this.set.input))
copy(this.set.output)
layer.msg('复制成功', {icon:1, time:600})
},
parse(url) {
if (!url.match(/http(s)?:\/\//)) {
url = 'https://' + url
}
let ins = new URL(url);
let split = ins.pathname.split('/');
if (ins.host === 'github.com' && split[3] === 'raw') {
split.splice(3,1)
}
return {
url: ins,
owner: split[1],
repo: split[2],
version: split[3],
file: split.slice(4).join('/'),
}
}
},
})
</script>
{/block}