Last active
May 5, 2020 11:54
-
-
Save LussacZheng/c6b006d98978b91b0985340946430723 to your computer and use it in GitHub Desktop.
Distribution for the built script of "vdao-api". (https://github.com/LussacZheng/vdao-api)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @description Distribution for the built script of "vdao-api". | |
* Source code on https://github.com/LussacZheng/vdao-api | |
* @author LussacZheng | |
* @file `vdao-api_worker.dist.js` | |
* @link https://gist.github.com/LussacZheng/c6b006d98978b91b0985340946430723 | |
*/ | |
!(function(e) { | |
var t = {} | |
function n(o) { | |
if (t[o]) return t[o].exports | |
var i = (t[o] = { i: o, l: !1, exports: {} }) | |
return e[o].call(i.exports, i, i.exports, n), (i.l = !0), i.exports | |
} | |
;(n.m = e), | |
(n.c = t), | |
(n.d = function(e, t, o) { | |
n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: o }) | |
}), | |
(n.r = function(e) { | |
'undefined' != typeof Symbol && | |
Symbol.toStringTag && | |
Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' }), | |
Object.defineProperty(e, '__esModule', { value: !0 }) | |
}), | |
(n.t = function(e, t) { | |
if ((1 & t && (e = n(e)), 8 & t)) return e | |
if (4 & t && 'object' == typeof e && e && e.__esModule) return e | |
var o = Object.create(null) | |
if ((n.r(o), Object.defineProperty(o, 'default', { enumerable: !0, value: e }), 2 & t && 'string' != typeof e)) | |
for (var i in e) | |
n.d( | |
o, | |
i, | |
function(t) { | |
return e[t] | |
}.bind(null, i), | |
) | |
return o | |
}), | |
(n.n = function(e) { | |
var t = | |
e && e.__esModule | |
? function() { | |
return e.default | |
} | |
: function() { | |
return e | |
} | |
return n.d(t, 'a', t), t | |
}), | |
(n.o = function(e, t) { | |
return Object.prototype.hasOwnProperty.call(e, t) | |
}), | |
(n.p = ''), | |
n((n.s = 1)) | |
})([ | |
function(e) { | |
e.exports = { a: 'https://github.com/LussacZheng/vdao-api' } | |
}, | |
function(e, t, n) { | |
'use strict' | |
n.r(t) | |
const o = e => t => t.method.toLowerCase() === e.toLowerCase(), | |
i = o('connect'), | |
r = o('delete'), | |
s = o('get'), | |
a = o('head'), | |
l = o('options'), | |
u = o('patch'), | |
p = o('post'), | |
c = o('put'), | |
d = o('trace'), | |
h = e => t => { | |
const n = new URL(t.url).pathname | |
return (n.match(e) || [])[0] === n | |
} | |
class g { | |
constructor() { | |
this.routes = [] | |
} | |
handle(e, t) { | |
return this.routes.push({ conditions: e, handler: t }), this | |
} | |
connect(e, t) { | |
return this.handle([i, h(e)], t) | |
} | |
delete(e, t) { | |
return this.handle([r, h(e)], t) | |
} | |
get(e, t) { | |
return this.handle([s, h(e)], t) | |
} | |
head(e, t) { | |
return this.handle([a, h(e)], t) | |
} | |
options(e, t) { | |
return this.handle([l, h(e)], t) | |
} | |
patch(e, t) { | |
return this.handle([u, h(e)], t) | |
} | |
post(e, t) { | |
return this.handle([p, h(e)], t) | |
} | |
put(e, t) { | |
return this.handle([c, h(e)], t) | |
} | |
trace(e, t) { | |
return this.handle([d, h(e)], t) | |
} | |
all(e) { | |
return this.handle([], e) | |
} | |
route(e) { | |
const t = this.resolve(e) | |
return t | |
? t.handler(e) | |
: new Response('resource not found', { | |
status: 404, | |
statusText: 'not found', | |
headers: { 'content-type': 'text/plain' }, | |
}) | |
} | |
resolve(e) { | |
return this.routes.find( | |
t => | |
!(t.conditions && (!Array.isArray(t) || t.conditions.length)) || | |
('function' == typeof t.conditions ? t.conditions(e) : t.conditions.every(t => t(e))), | |
) | |
} | |
} | |
const y = { headers: new Headers({ 'content-type': 'application/json;charset=utf-8' }) }, | |
m = { headers: new Headers({ 'content-type': 'text/plain;charset=utf-8' }) }, | |
f = | |
(new Headers({ | |
'content-type': 'application/json;charset=utf-8', | |
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0', | |
}), | |
new Headers({ | |
'content-type': 'text/html;charset=utf-8', | |
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0', | |
}), | |
'Request Error'), | |
w = 'Parser Error', | |
b = 'The respone data is NOT the expected type (JSON).', | |
_ = 'success', | |
v = 'failed', | |
z = | |
(new Headers({ 'content-type': 'application/json;charset=utf-8' }), | |
new Headers({ 'content-type': 'text/plain;charset=utf-8' }), | |
{ | |
headers: new Headers({ | |
'content-type': 'application/json;charset=utf-8', | |
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0', | |
}), | |
}), | |
$ = { | |
headers: new Headers({ | |
'content-type': 'text/html;charset=utf-8', | |
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0', | |
}), | |
}, | |
L = { | |
status: !1, | |
message: v, | |
info: { | |
name: 'video-downloader-deploy', | |
version: '2.0.0-alpha', | |
description: 'Video Downloaders (you-get, youtube-dl, annie) One-Click Deployment Batch.', | |
author: 'LussacZheng', | |
repository: { type: 'git', url: 'git+https://github.com/LussacZheng/video-downloader-deploy.git' }, | |
homepage: 'https://github.com/LussacZheng/video-downloader-deploy', | |
keywords: [ | |
'video-downloader', | |
'one-click-deploy', | |
'python-embeddable', | |
'you-get', | |
'youtube-dl', | |
'annie', | |
'ffmpeg', | |
], | |
}, | |
sources: [], | |
} | |
async function O(e, t = z) { | |
const n = await fetch(decodeURI(e), t) | |
return await (async function(e) { | |
const { headers: t } = e, | |
n = t.get('content-type') | |
return n.includes('application/json') | |
? await e.json() | |
: (n.includes('application/text') || n.includes('text/html'), await e.text()) | |
})(n) | |
} | |
const x = { | |
LATEST_32: 'latest-32', | |
LATEST_64: 'latest-64', | |
LATEST_BOTH: 'latest', | |
STABLE_32: 'stable-32', | |
STABLE_64: 'stable-64', | |
STABLE_BOTH: 'stable', | |
UNKNOWN: 'system-unknown', | |
}, | |
T = { ZIP: 'format-zip', TAR: 'format-tar', EXE: 'format-exe', UNKNOWN: 'format-unknown' } | |
const R = { | |
getLabel: function(e, t, n = both) { | |
let o, i | |
switch (e) { | |
case 'zip': | |
o = T.ZIP | |
break | |
case 'tar': | |
o = T.TAR | |
break | |
case 'exe': | |
o = T.EXE | |
break | |
default: | |
o = T.UNKNOWN | |
} | |
if ('latest' === t) | |
switch (n) { | |
case '32': | |
i = x.LATEST_32 | |
break | |
case '64': | |
i = x.LATEST_64 | |
break | |
case 'both': | |
i = x.LATEST_BOTH | |
break | |
default: | |
i = x.UNKNOWN | |
} | |
else if ('stable' === t) | |
switch (n) { | |
case '32': | |
i = x.STABLE_32 | |
break | |
case '64': | |
i = x.STABLE_64 | |
break | |
case 'both': | |
i = x.STABLE_BOTH | |
break | |
default: | |
i = x.UNKNOWN | |
} | |
else i = x.UNKNOWN | |
return o + '/' + i | |
}, | |
} | |
class S { | |
constructor() {} | |
static getKeyByName(e) { | |
for (const t in S.PROJs) if (S.PROJs[t] === e) return t | |
} | |
static includes(e) { | |
return S.NamesList.includes(e) | |
} | |
} | |
;(S.PROJs = { | |
you_get: 'you-get', | |
youtube_dl: 'youtube-dl', | |
annie: 'annie', | |
python_embed: 'python-embed', | |
ffmpeg: 'ffmpeg', | |
pypi_you_get: 'pypi_you-get', | |
pypi_youtube_dl: 'pypi_youtube_dl', | |
}), | |
(S.NamesList = []), | |
(S.KeysList = []) | |
for (const e in S.PROJs) S.NamesList.push(S.PROJs[e]), S.KeysList.push(e) | |
let E = { overview: !1, details: {} } | |
for (const e of S.KeysList) E.details[e] = !1 | |
const k = { | |
getSingleStatus: function(e) { | |
if (S.includes(e)) { | |
const t = S.getKeyByName(e) | |
return E.details[t] | |
} | |
}, | |
getOverviewStatus: function() { | |
const e = E.details | |
for (const t in e) if (!e[t]) return !1 | |
return !0 | |
}, | |
setStatus: function(e, t) { | |
if (S.includes(e)) { | |
const n = S.getKeyByName(e) | |
E.details[n] = t | |
} | |
}, | |
} | |
function N(e) { | |
let t = new Date(e), | |
n = { | |
formatMatcher: 'best fit', | |
year: 'numeric', | |
month: '2-digit', | |
day: '2-digit', | |
hour: '2-digit', | |
minute: '2-digit', | |
second: '2-digit', | |
hour12: !1, | |
timeZone: 'UTC', | |
} | |
const o = { | |
zh_cn: { locale: 'zh-CN', timeZone: 'Asia/Shanghai' }, | |
en_us: { locale: 'en-US', timeZone: 'America/New_York' }, | |
} | |
let i = {} | |
for (const e in o) { | |
const r = o[e].timeZone, | |
s = Object.assign({}, n, { timeZone: r }) | |
i[e] = t.toLocaleString(o[e].locale, s) | |
} | |
return i | |
} | |
function U(e) { | |
return new Date(e + ' UTC').toISOString().substr(0, 10) | |
} | |
function P(e) { | |
return new Date(e).toISOString().substr(0, 19) + 'Z' | |
} | |
function q(e, t) { | |
return e.replace(/\$\{(\w+)\}/gi, (e, n) => t[n]) | |
} | |
function A(e, t) { | |
if (t instanceof Array) return e instanceof Array ? e.concat(t) : t | |
if ('[object Object]' !== t.toString()) return t | |
for (const n in t) e[n] ? (e[n] = A(e[n], t[n])) : (e[n] = t[n]) | |
return e | |
} | |
const j = { | |
you_get: { | |
name: S.PROJs.you_get, | |
repo: 'soimort/you-get', | |
api: 'https://api.github.com/repos/soimort/you-get/releases/latest', | |
required_files: /^you-get-[\d\.]+\.tar\.gz$/i, | |
labelHandler: e => R.getLabel('tar', 'latest', 'both'), | |
}, | |
youtube_dl: { | |
name: S.PROJs.youtube_dl, | |
repo: 'ytdl-org/youtube-dl', | |
api: 'https://api.github.com/repos/ytdl-org/youtube-dl/releases/latest', | |
required_files: /^youtube-dl(-[\d\.]+\.tar\.gz|\.exe)$/i, | |
labelHandler(e) { | |
const t = /gz$/i.test(e) ? 'tar' : 'exe' | |
return R.getLabel(t, 'latest', 'both') | |
}, | |
}, | |
annie: { | |
name: S.PROJs.annie, | |
repo: 'iawia002/annie', | |
api: 'https://api.github.com/repos/iawia002/annie/releases/latest', | |
required_files: /^annie_[\d\.]+_Windows_(32|64)-bit\.zip$/i, | |
labelHandler(e) { | |
const t = /64-bit/i.test(e) ? '64' : '32' | |
return R.getLabel('zip', 'latest', t) | |
}, | |
}, | |
}, | |
J = 'github.com' | |
async function H(e) { | |
const t = (function(e) { | |
for (const t in j) if (j[t].name === e) return j[t] | |
return {} | |
})(e) | |
let n, | |
o, | |
i = { name: t.name, status: !1 } | |
try { | |
n = await O(t.api) | |
} catch (e) { | |
return console.error(e), (i.error = f), i | |
} | |
try { | |
o = (function(e, t) { | |
if (!/^{.*}$/i.test(JSON.stringify(e))) throw new TypeError(b) | |
let n = [] | |
return ( | |
e.assets | |
.filter(e => t.required_files.test(e.name)) | |
.forEach(e => { | |
const o = { | |
label: t.labelHandler(e.name), | |
filename: e.name, | |
host: J, | |
urls: { origin: e.browser_download_url }, | |
content_type: e.content_type, | |
size: e.size, | |
} | |
n.push(o) | |
}), | |
{ | |
name: t.name, | |
status: !1, | |
version: e.tag_name.replace('v', ''), | |
time: e.published_at, | |
localetime: N(e.published_at), | |
releases: n, | |
} | |
) | |
})(n, t) | |
} catch (e) { | |
return console.error(e), (i.error = w), i | |
} | |
return k.setStatus(t.name, !0), (o.status = !0), Object.assign(i, o) | |
} | |
function W(e, t, n) { | |
let o = t.exec(e), | |
i = {} | |
return ( | |
null !== o && | |
((o.input = ''), | |
n.length > o.length - 1 && n.splice(o.length - 1), | |
n.forEach((e, t) => { | |
i[e] = o[t + 1] | |
})), | |
(t.lastIndex = 0), | |
i | |
) | |
} | |
var B = function(e, t, n, o = 'first') { | |
return 'last' === o | |
? (function(e, t, n) { | |
const o = e.match(t) | |
if (null !== o) { | |
return W(o[o.length - 1], t, n) | |
} | |
return {} | |
})(e, t, n) | |
: W(e, t, n) | |
} | |
const D = 'python-embed', | |
Z = 'https://www.python.org/downloads/mac-osx/', | |
K = '3.7', | |
M = { win32: 'python-${version}-embed-win32.zip', win64: 'python-${version}-embed-amd64.zip' }, | |
I = 'python.org', | |
F = { | |
win32: { | |
origin: 'https://www.python.org/ftp/python/${version}/python-${version}-embed-win32.zip', | |
cn: 'https://mirrors.huaweicloud.com/python/${version}/python-${version}-embed-win32.zip', | |
cn2: 'https://npm.taobao.org/mirrors/python/${version}/python-${version}-embed-win32.zip', | |
}, | |
win64: { | |
origin: 'https://www.python.org/ftp/python/${version}/python-${version}-embed-amd64.zip', | |
cn: 'https://mirrors.huaweicloud.com/python/${version}/python-${version}-embed-amd64.zip', | |
cn2: 'https://npm.taobao.org/mirrors/python/${version}/python-${version}-embed-amd64.zip', | |
}, | |
} | |
async function C() { | |
let e, | |
t, | |
n = { name: D, status: !1 } | |
try { | |
e = await O(Z, $) | |
} catch (e) { | |
return console.error(e), (n.error = f), n | |
} | |
try { | |
t = (function(e) { | |
const { version: t } = B(e, /Latest Python 3 Release - Python ([\d\.]+)/gim, ['version']), | |
n = new RegExp(`Python ${t} - ([\\w\\d .,]+)`, 'gim'), | |
{ date: o } = B(e, n, ['date']), | |
i = new RegExp(`Python (${K}\\.\\d) - ([\\w\\d .,]+)`, 'gim'), | |
{ stableVersion: r, stableDate: s } = B(e, i, ['stableVersion', 'stableDate']) | |
return { | |
name: D, | |
status: !1, | |
version: t, | |
time: U(o), | |
stable: { version: r, time: U(s) }, | |
releases: [ | |
{ | |
label: R.getLabel('zip', 'latest', '32'), | |
filename: q(M.win32, { version: t }), | |
host: I, | |
urls: { | |
origin: q(F.win32.origin, { version: t }), | |
cn: q(F.win32.cn, { version: t }), | |
cn2: q(F.win32.cn2, { version: t }), | |
}, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'latest', '64'), | |
filename: q(M.win64, { version: t }), | |
host: I, | |
urls: { | |
origin: q(F.win64.origin, { version: t }), | |
cn: q(F.win64.cn, { version: t }), | |
cn2: q(F.win64.cn2, { version: t }), | |
}, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'stable', '32'), | |
filename: q(M.win32, { version: r }), | |
host: I, | |
urls: { | |
origin: q(F.win32.origin, { version: r }), | |
cn: q(F.win32.cn, { version: r }), | |
cn2: q(F.win32.cn2, { version: r }), | |
}, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'stable', '64'), | |
filename: q(M.win64, { version: r }), | |
host: I, | |
urls: { | |
origin: q(F.win64.origin, { version: r }), | |
cn: q(F.win64.cn, { version: r }), | |
cn2: q(F.win64.cn2, { version: r }), | |
}, | |
content_type: 'application/zip', | |
}, | |
], | |
} | |
})(e) | |
} catch (e) { | |
return console.error(e), (n.error = w), n | |
} | |
return k.setStatus(D, !0), (t.status = !0), Object.assign(n, t) | |
} | |
const G = 'ffmpeg', | |
X = 'https://ffmpeg.zeranoe.com/builds/win64/static/', | |
V = { win32: 'ffmpeg-${version}-win32-static.zip', win64: 'ffmpeg-${version}-win64-static.zip' }, | |
Y = 'zeranoe.com', | |
Q = { | |
win32: { origin: 'https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-${version}-win32-static.zip' }, | |
win64: { origin: 'https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-${version}-win64-static.zip' }, | |
} | |
async function ee() { | |
let e, | |
t, | |
n = { name: G, status: !1 } | |
try { | |
e = await O(X, $) | |
} catch (e) { | |
return console.error(e), (n.error = f), n | |
} | |
try { | |
t = (function(e) { | |
const { version: t } = B(e, /ffmpeg-(\d{8}-\w{7})-win64-static.zip/gim, ['version'], 'last'), | |
n = new RegExp(`(?<=ffmpeg-${t}-win64-static\\.zip).*(\\d{4}-[A-Za-z\\.]+-\\d{2} \\d{2}:\\d{2})`, 'gim'), | |
{ date: o } = B(e, n, ['date']), | |
{ stableVersion: i } = B(e, /ffmpeg-([\d\.]+)-win64-static.zip/gim, ['stableVersion'], 'last'), | |
r = new RegExp(`(?<=ffmpeg-${i}-win64-static\\.zip).*(\\d{4}-[A-Za-z\\.]+-\\d{2} \\d{2}:\\d{2})`, 'gim'), | |
{ stableDate: s } = B(e, r, ['stableDate']) | |
return { | |
name: G, | |
status: !1, | |
version: t, | |
time: U(o), | |
stable: { version: i, time: U(s) }, | |
releases: [ | |
{ | |
label: R.getLabel('zip', 'latest', '32'), | |
filename: q(V.win32, { version: t }), | |
host: Y, | |
urls: { origin: q(Q.win32.origin, { version: t }) }, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'latest', '64'), | |
filename: q(V.win64, { version: t }), | |
host: Y, | |
urls: { origin: q(Q.win64.origin, { version: t }) }, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'stable', '32'), | |
filename: q(V.win32, { version: i }), | |
host: Y, | |
urls: { origin: q(Q.win32.origin, { version: i }) }, | |
content_type: 'application/zip', | |
}, | |
{ | |
label: R.getLabel('zip', 'stable', '64'), | |
filename: q(V.win64, { version: i }), | |
host: Y, | |
urls: { origin: q(Q.win64.origin, { version: i }) }, | |
content_type: 'application/zip', | |
}, | |
], | |
} | |
})(e) | |
} catch (e) { | |
return console.error(e), (n.error = w), n | |
} | |
return k.setStatus(G, !0), (t.status = !0), Object.assign(n, t) | |
} | |
const te = { | |
pypi_you_get: { | |
name: S.PROJs.pypi_you_get, | |
repo: 'soimort/you-get', | |
api: 'https://pypi.org/pypi/you-get/json', | |
required_files: /^you-get-[\d\.]+\.tar\.gz$/i, | |
labelHandler: e => R.getLabel('tar', 'latest', 'both'), | |
}, | |
pypi_youtube_dl: { | |
name: S.PROJs.pypi_youtube_dl, | |
repo: 'ytdl-org/youtube-dl', | |
api: 'https://pypi.org/pypi/youtube_dl/json', | |
required_files: /^youtube_dl-[\d\.]+\.tar\.gz$/i, | |
labelHandler: e => R.getLabel('tar', 'latest', 'both'), | |
}, | |
}, | |
ne = 'pypi.org', | |
oe = { | |
origin: 'https://files.pythonhosted.org/packages/${uniqueUrl}', | |
cn: 'https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/${uniqueUrl}', | |
cn2: 'https://mirrors.aliyun.com/pypi/packages/${uniqueUrl}', | |
cn3: 'https://mirrors.huaweicloud.com/repository/pypi/packages/${uniqueUrl}', | |
test: 'http://mirrors.163.com/pypi/packages/${uniqueUrl}', | |
REGEX: /(?<=packages\/)([a-z\d\/]{66})/gim, | |
} | |
async function ie(e) { | |
const t = (function(e) { | |
for (const t in te) if (te[t].name === e) return te[t] | |
return {} | |
})(e) | |
let n, | |
o, | |
i = { name: t.name, status: !1 } | |
try { | |
n = await O(t.api) | |
} catch (e) { | |
return console.error(e), (i.error = f), i | |
} | |
try { | |
o = (function(e, t) { | |
try { | |
e.releases = '' | |
} catch (e) { | |
throw new TypeError(b) | |
} | |
let n = [] | |
const o = e.urls.find(e => t.required_files.test(e.filename)), | |
{ BLAKE2_256: i } = B(o.url, oe.REGEX, ['BLAKE2_256']), | |
r = `${i}/${o.filename}`, | |
s = { | |
label: t.labelHandler(o.filename), | |
filename: o.filename, | |
host: ne, | |
urls: { | |
origin: q(oe.origin, { uniqueUrl: r }), | |
cn: q(oe.cn, { uniqueUrl: r }), | |
cn2: q(oe.cn2, { uniqueUrl: r }), | |
cn3: q(oe.cn3, { uniqueUrl: r }), | |
test: q(oe.test, { uniqueUrl: r }), | |
}, | |
content_type: 'application/x-tar', | |
size: o.size, | |
} | |
return ( | |
n.push(s), | |
{ | |
name: t.name, | |
status: !1, | |
version: e.info.version, | |
time: P(o.upload_time_iso_8601), | |
localetime: N(o.upload_time_iso_8601), | |
releases: n, | |
} | |
) | |
})(n, t) | |
} catch (e) { | |
return console.error(e), (i.error = w), i | |
} | |
return k.setStatus(t.name, !0), (o.status = !0), Object.assign(i, o) | |
} | |
var re = n(0) | |
async function se(e) { | |
const t = new g() | |
return ( | |
t.get('.*/json', async () => { | |
const e = await (async function() { | |
let e = Object.create(null) | |
e = JSON.parse(JSON.stringify(L)) | |
const t = await H(S.PROJs.you_get), | |
n = await H(S.PROJs.youtube_dl), | |
o = await H(S.PROJs.annie), | |
i = await C(), | |
r = await ee() | |
let s = await ie(S.PROJs.pypi_you_get), | |
a = await ie(S.PROJs.pypi_youtube_dl) | |
const l = A(s, t), | |
u = A(a, n) | |
e.sources.push(l, u, o, i, r) | |
const p = k.getOverviewStatus() | |
return (e.status = p), p && (e.message = _), e | |
})() | |
return new Response(JSON.stringify(e), y) | |
}), | |
t.get('.*/text', async () => { | |
const e = await (async function() { | |
const e = await H(S.PROJs.you_get), | |
t = await H(S.PROJs.youtube_dl), | |
n = await H(S.PROJs.annie), | |
o = await C(), | |
i = await ee(), | |
r = await ie(S.PROJs.pypi_you_get), | |
{ uniqueUrl: s } = B(r.releases[0].urls.origin, /(?<=packages\/)([a-z\d\/]{66}\/.*\.tar\.gz)/gim, [ | |
'uniqueUrl', | |
]) | |
let a = Object.create(null) | |
const l = N(Date.now()).zh_cn | |
var u | |
return ( | |
(a = { | |
generatedTime: | |
((u = l), | |
new Date(u + ' UTC') | |
.toISOString() | |
.substr(0, 19) | |
.replace('T', ' ')), | |
python_time: o.stable.time, | |
python_version: o.stable.version, | |
youget_time: U(e.localetime.zh_cn), | |
youget_uniqueUrl: s, | |
youget_version: e.version, | |
youtubedl_time: U(t.localetime.zh_cn), | |
youtubedl_version: t.version, | |
annie_time: U(n.localetime.zh_cn), | |
annie_version: n.version, | |
ffmpeg_time: i.stable.time, | |
ffmpeg_version: i.stable.version, | |
}), | |
q( | |
'## Sources List of "video-downloader-deploy"\n## https://api.vdao.workers.dev/text --\x3e sources.txt\n## For Initial Deployment; Deployment of FFmpeg; Upgrade of You-Get.\n## ( Auto-Generated by "vdao-api" at ${generatedTime} )\n\n\x3c!-- DO NOT EDIT THIS FILE unless you understand the EXAMPLE. --\x3e\n\nEXAMPLE\n## Title or Info\n # Content that already downloaded or existing.\n Content to be downlaoded.\n $ Another (optional) source of the same content above. But the script will ignore this line. Exchange the URLs at your own risk.\nMirrors{\n [origin]\n URL of the content from original source. NO \'@\', called "switch on".\n [%region1%]\n @ URL of the content from mirror source in %region1%.\n $ "@ URL", that content will not to be downlaoded by this URL, called "switch off".\n [%region2%]\n @ For a same content in { }, only one URL is switched on at one time.\n}\n\n<skip>\n\n\n[common]\n## wget.exe , v1.20.3 , win32\n # https://eternallybored.org/misc/wget/1.20.3/32/wget.exe\n $ https://raw.githubusercontent.com/LussacZheng/video-downloader-deploy/master/res/wget.exe\n\n## 7za.exe , v19.00 , win32\n # https://raw.githubusercontent.com/LussacZheng/video-downloader-deploy/master/res/7za.exe\n[/common]\n\n\n[portable][quickstart][withpip]\n## Release log - Python\n## https://www.python.org/downloads/ or https://www.python.org/downloads/windows/\n## Last released: ${python_time}\n\n## python-embed.zip , v${python_version} , win32\nMirrors{\n [origin]\n https://www.python.org/ftp/python/${python_version}/python-${python_version}-embed-win32.zip\n [cn]\n @ https://mirrors.huaweicloud.com/python/${python_version}/python-${python_version}-embed-win32.zip\n $ https://npm.taobao.org/mirrors/python/${python_version}/python-${python_version}-embed-win32.zip\n [test]\n @ https://mirrors.huaweicloud.com/python/${python_version}/python-${python_version}-embed-win32.zip\n}\n[/portable][/quickstart][/withpip]\n\n\n[youget][portable][quickstart]\n## Release log - YouGet\n## https://pypi.org/project/you-get/#history or https://pypi.org/project/you-get/#files\n## Last released: ${youget_time}\n\n## you-get.tar.gz , v${youget_version}\nMirrors{\n [origin]\n https://files.pythonhosted.org/packages/${youget_uniqueUrl}\n $ https://github.com/soimort/you-get/releases/download/v${youget_version}/you-get-${youget_version}.tar.gz\n [cn]\n @ https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/${youget_uniqueUrl}\n $ https://mirrors.aliyun.com/pypi/packages/${youget_uniqueUrl}\n [test]\n @ https://mirrors.huaweicloud.com/repository/pypi/packages/${youget_uniqueUrl}\n $ http://mirrors.163.com/pypi/packages/${youget_uniqueUrl}\n}\n[/youget][/portable][/quickstart]\n\n\n[portable]\n## Release log - YoutubeDL\n## https://github.com/ytdl-org/youtube-dl/releases/latest\n## Last released: ${youtubedl_time}\n\n## youtube-dl.tar.gz , ${youtubedl_version}\n https://github.com/ytdl-org/youtube-dl/releases/download/${youtubedl_version}/youtube-dl-${youtubedl_version}.tar.gz\n[/portable]\n\n\n[portable][withpip]\n## Release log - Annie\n## https://github.com/iawia002/annie/releases/latest\n## Last released: ${annie_time}\n\n## annie_Windows.zip , v${annie_version}\nSystemType{\n [64]\n https://github.com/iawia002/annie/releases/download/${annie_version}/annie_${annie_version}_Windows_64-bit.zip\n [32]\n @ https://github.com/iawia002/annie/releases/download/${annie_version}/annie_${annie_version}_Windows_32-bit.zip\n}\n[/portable][/withpip]\n\n\n[withpip]\n## get-pip.py\n https://bootstrap.pypa.io/get-pip.py\n[/withpip]\n\n\n[ffmpeg]\n## Release log - FFmpeg\n## https://ffmpeg.org/download.html#releases or https://ffmpeg.zeranoe.com/builds/win64/static/\n## Last released: ${ffmpeg_time}\n\n## ffmpeg-static.zip , v${ffmpeg_version}\nSystemType{\n [64]\n https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-${ffmpeg_version}-win64-static.zip\n [32]\n @ https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-${ffmpeg_version}-win32-static.zip\n}\n[/ffmpeg]\n\n', | |
a, | |
) | |
) | |
})() | |
return new Response(e, m) | |
}), | |
t.get('/', () => new Response('Status: success\nUsage Instruction: ' + re.a)), | |
await t.route(e) | |
) | |
} | |
addEventListener('fetch', e => e.respondWith(se(e.request))) | |
}, | |
]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment