@forward-widget/danmu-universe 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/danmu-universe.js +92 -64
- package/package.json +1 -1
package/dist/danmu-universe.js
CHANGED
|
@@ -695,8 +695,8 @@ var __webpack_modules__ = {
|
|
|
695
695
|
var r = t + n, i = e[r];
|
|
696
696
|
e[r] = (i << 8 | i >>> 24) & 0x00ff00ff | (i << 24 | i >>> 8) & 0xff00ff00;
|
|
697
697
|
}
|
|
698
|
-
var o = this._hash.words, s = e[t + 0], u = e[t + 1], f = e[t + 2], h = e[t + 3], m = e[t + 4], g = e[t + 5], v = e[t + 6], y = e[t + 7], b = e[t + 8], _ = e[t + 9], w = e[t + 10], x = e[t + 11], k = e[t + 12], j = e[t + 13],
|
|
699
|
-
z = l(z, O, I, $, s, 7, a[0]), $ = l($, z, O, I, u, 12, a[1]), I = l(I, $, z, O, f, 17, a[2]), O = l(O, I, $, z, h, 22, a[3]), z = l(z, O, I, $, m, 7, a[4]), $ = l($, z, O, I, g, 12, a[5]), I = l(I, $, z, O, v, 17, a[6]), O = l(O, I, $, z, y, 22, a[7]), z = l(z, O, I, $, b, 7, a[8]), $ = l($, z, O, I, _, 12, a[9]), I = l(I, $, z, O, w, 17, a[10]), O = l(O, I, $, z, x, 22, a[11]), z = l(z, O, I, $, k, 7, a[12]), $ = l($, z, O, I, j, 12, a[13]), I = l(I, $, z, O,
|
|
698
|
+
var o = this._hash.words, s = e[t + 0], u = e[t + 1], f = e[t + 2], h = e[t + 3], m = e[t + 4], g = e[t + 5], v = e[t + 6], y = e[t + 7], b = e[t + 8], _ = e[t + 9], w = e[t + 10], x = e[t + 11], k = e[t + 12], j = e[t + 13], E = e[t + 14], S = e[t + 15], z = o[0], O = o[1], I = o[2], $ = o[3];
|
|
699
|
+
z = l(z, O, I, $, s, 7, a[0]), $ = l($, z, O, I, u, 12, a[1]), I = l(I, $, z, O, f, 17, a[2]), O = l(O, I, $, z, h, 22, a[3]), z = l(z, O, I, $, m, 7, a[4]), $ = l($, z, O, I, g, 12, a[5]), I = l(I, $, z, O, v, 17, a[6]), O = l(O, I, $, z, y, 22, a[7]), z = l(z, O, I, $, b, 7, a[8]), $ = l($, z, O, I, _, 12, a[9]), I = l(I, $, z, O, w, 17, a[10]), O = l(O, I, $, z, x, 22, a[11]), z = l(z, O, I, $, k, 7, a[12]), $ = l($, z, O, I, j, 12, a[13]), I = l(I, $, z, O, E, 17, a[14]), O = l(O, I, $, z, S, 22, a[15]), z = c(z, O, I, $, u, 5, a[16]), $ = c($, z, O, I, v, 9, a[17]), I = c(I, $, z, O, x, 14, a[18]), O = c(O, I, $, z, s, 20, a[19]), z = c(z, O, I, $, g, 5, a[20]), $ = c($, z, O, I, w, 9, a[21]), I = c(I, $, z, O, S, 14, a[22]), O = c(O, I, $, z, m, 20, a[23]), z = c(z, O, I, $, _, 5, a[24]), $ = c($, z, O, I, E, 9, a[25]), I = c(I, $, z, O, h, 14, a[26]), O = c(O, I, $, z, b, 20, a[27]), z = c(z, O, I, $, j, 5, a[28]), $ = c($, z, O, I, f, 9, a[29]), I = c(I, $, z, O, y, 14, a[30]), O = c(O, I, $, z, k, 20, a[31]), z = d(z, O, I, $, g, 4, a[32]), $ = d($, z, O, I, b, 11, a[33]), I = d(I, $, z, O, x, 16, a[34]), O = d(O, I, $, z, E, 23, a[35]), z = d(z, O, I, $, u, 4, a[36]), $ = d($, z, O, I, m, 11, a[37]), I = d(I, $, z, O, y, 16, a[38]), O = d(O, I, $, z, w, 23, a[39]), z = d(z, O, I, $, j, 4, a[40]), $ = d($, z, O, I, s, 11, a[41]), I = d(I, $, z, O, h, 16, a[42]), O = d(O, I, $, z, v, 23, a[43]), z = d(z, O, I, $, _, 4, a[44]), $ = d($, z, O, I, k, 11, a[45]), I = d(I, $, z, O, S, 16, a[46]), O = d(O, I, $, z, f, 23, a[47]), z = p(z, O, I, $, s, 6, a[48]), $ = p($, z, O, I, y, 10, a[49]), I = p(I, $, z, O, E, 15, a[50]), O = p(O, I, $, z, g, 21, a[51]), z = p(z, O, I, $, k, 6, a[52]), $ = p($, z, O, I, h, 10, a[53]), I = p(I, $, z, O, w, 15, a[54]), O = p(O, I, $, z, u, 21, a[55]), z = p(z, O, I, $, b, 6, a[56]), $ = p($, z, O, I, S, 10, a[57]), I = p(I, $, z, O, v, 15, a[58]), O = p(O, I, $, z, j, 21, a[59]), z = p(z, O, I, $, m, 6, a[60]), $ = p($, z, O, I, x, 10, a[61]), I = p(I, $, z, O, f, 15, a[62]), O = p(O, I, $, z, _, 21, a[63]), o[0] = o[0] + z | 0, o[1] = o[1] + O | 0, o[2] = o[2] + I | 0, o[3] = o[3] + $ | 0;
|
|
700
700
|
},
|
|
701
701
|
_doFinalize: function() {
|
|
702
702
|
var e = this._data, n = e.words, r = 8 * this._nDataBytes, i = 8 * e.sigBytes;
|
|
@@ -4187,9 +4187,10 @@ const getExternalIdsByTmdbId = async (e, t)=>{
|
|
|
4187
4187
|
}
|
|
4188
4188
|
case "youku":
|
|
4189
4189
|
{
|
|
4190
|
-
let { showid: e } = t.query;
|
|
4191
|
-
e && (o.providers.youku = {
|
|
4192
|
-
showId: e
|
|
4190
|
+
let { showid: e, vid: n } = t.query;
|
|
4191
|
+
(e || n) && (o.providers.youku = {
|
|
4192
|
+
showId: e,
|
|
4193
|
+
vid: n
|
|
4193
4194
|
});
|
|
4194
4195
|
break;
|
|
4195
4196
|
}
|
|
@@ -5617,11 +5618,13 @@ function youku_define_property(e, t, n) {
|
|
|
5617
5618
|
}) : e[t] = n, e;
|
|
5618
5619
|
}
|
|
5619
5620
|
const youkuIdSchema = schemas_object({
|
|
5620
|
-
showId: schemas_string(),
|
|
5621
|
+
showId: schemas_string().optional(),
|
|
5621
5622
|
vid: schemas_string().optional()
|
|
5622
5623
|
}), youkuEpisodeInfoSchema = schemas_object({
|
|
5623
5624
|
id: schemas_string(),
|
|
5625
|
+
show_id: schemas_string().optional(),
|
|
5624
5626
|
title: schemas_string(),
|
|
5627
|
+
seq: schemas_string().transform((e)=>parseInt(e)).optional(),
|
|
5625
5628
|
duration: schemas_string(),
|
|
5626
5629
|
category: schemas_string(),
|
|
5627
5630
|
link: schemas_string()
|
|
@@ -5663,36 +5666,57 @@ class YoukuScraper extends BaseScraper {
|
|
|
5663
5666
|
return null != (e = this.fetch.getCookie("cna")) ? e : "";
|
|
5664
5667
|
}
|
|
5665
5668
|
async getEpisodes(e, t) {
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5673
|
-
let a = e.videos.filter((e)=>!this.EPISODE_BLACKLIST_KEYWORDS.some((t)=>e.title.includes(t)));
|
|
5674
|
-
if (r.push(...a), r.length >= s || e.videos.length < o || t && r.length >= t) break;
|
|
5675
|
-
i++, await this.sleep(300);
|
|
5676
|
-
} catch (e) {
|
|
5677
|
-
console.error(`Youku: Failed to get episodes page ${i} for media_id ${n.showId}:`, e);
|
|
5678
|
-
break;
|
|
5669
|
+
var n, r, i;
|
|
5670
|
+
let o = this.parseIdString(e);
|
|
5671
|
+
if (!o) return [];
|
|
5672
|
+
let s = o.showId;
|
|
5673
|
+
if (!s && o.vid) {
|
|
5674
|
+
let e = await this.getVideoInfo(o.vid);
|
|
5675
|
+
s = null != (n = null == e ? void 0 : e.show_id) ? n : "";
|
|
5679
5676
|
}
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
5677
|
+
if (!s) return [];
|
|
5678
|
+
let a = 20, u = null != t ? t : 1, l = Math.max(1, Math.ceil(u / 20));
|
|
5679
|
+
try {
|
|
5680
|
+
let e = (e)=>e.filter((e)=>!this.EPISODE_BLACKLIST_KEYWORDS.some((t)=>e.title.includes(t))), n = (e, t)=>({
|
|
5681
|
+
provider: this.providerName,
|
|
5682
|
+
episodeId: this.generateIdString({
|
|
5683
|
+
showId: s,
|
|
5684
|
+
vid: e.id
|
|
5685
|
+
}),
|
|
5686
|
+
episodeTitle: e.title,
|
|
5687
|
+
episodeNumber: t
|
|
5688
|
+
}), o = await this.getEpisodesPage(s, l, a), c = e(null != (r = null == o ? void 0 : o.videos) ? r : []), d = c.find((e)=>e.seq === u);
|
|
5689
|
+
if (d) return [
|
|
5690
|
+
n(d, u)
|
|
5691
|
+
];
|
|
5692
|
+
let p = Number(null != (i = null == o ? void 0 : o.total) ? i : 0), f = Math.max(1, Math.ceil(p / a)), h = Array.from({
|
|
5693
|
+
length: f
|
|
5694
|
+
}, (e, t)=>t + 1).filter((e)=>e !== l), m = [];
|
|
5695
|
+
for (let e of h){
|
|
5696
|
+
await this.sleep(500);
|
|
5697
|
+
let t = await this.getEpisodesPage(s, e, a);
|
|
5698
|
+
m.push(t);
|
|
5699
|
+
}
|
|
5700
|
+
let g = e(m.flatMap((e)=>{
|
|
5701
|
+
var t;
|
|
5702
|
+
return null != (t = null == e ? void 0 : e.videos) ? t : [];
|
|
5703
|
+
})), v = [
|
|
5704
|
+
...c,
|
|
5705
|
+
...g
|
|
5706
|
+
];
|
|
5707
|
+
if (void 0 !== t) {
|
|
5708
|
+
let e = v.find((e)=>e.seq === u);
|
|
5709
|
+
return e ? [
|
|
5710
|
+
n(e, u)
|
|
5711
|
+
] : [];
|
|
5712
|
+
}
|
|
5713
|
+
return v.sort((e, t)=>{
|
|
5714
|
+
var n, r;
|
|
5715
|
+
return (null != (n = e.seq) ? n : Number.MAX_SAFE_INTEGER) - (null != (r = t.seq) ? r : Number.MAX_SAFE_INTEGER);
|
|
5716
|
+
}).map((e, t)=>n(e, t + 1));
|
|
5717
|
+
} catch (e) {
|
|
5718
|
+
return console.error(`Youku: \u{83B7}\u{53D6}\u{5206}\u{96C6}\u{5931}\u{8D25} showId=${s}:`, e), [];
|
|
5694
5719
|
}
|
|
5695
|
-
return a;
|
|
5696
5720
|
}
|
|
5697
5721
|
async getSegments(e) {
|
|
5698
5722
|
var t;
|
|
@@ -5700,17 +5724,7 @@ class YoukuScraper extends BaseScraper {
|
|
|
5700
5724
|
if (!n) return [];
|
|
5701
5725
|
try {
|
|
5702
5726
|
await this.ensureTokenCookie();
|
|
5703
|
-
let e =
|
|
5704
|
-
params: {
|
|
5705
|
-
client_id: "53e6cc67237fc59a",
|
|
5706
|
-
package: "com.huawei.hwvplayer.youku",
|
|
5707
|
-
video_id: n
|
|
5708
|
-
},
|
|
5709
|
-
schema: youkuEpisodeInfoSchema,
|
|
5710
|
-
cache: {
|
|
5711
|
-
cacheKey: `youku:segments:${n}`
|
|
5712
|
-
}
|
|
5713
|
-
})).data;
|
|
5727
|
+
let e = await this.getVideoInfo(n);
|
|
5714
5728
|
if (!e) return console.warn(`Youku: Failed to get episode info for vid ${n}`), [];
|
|
5715
5729
|
let t = e.totalMat;
|
|
5716
5730
|
if (0 === t) return console.warn(`Youku: Video ${n} has duration 0, no danmaku to fetch.`), [];
|
|
@@ -5735,6 +5749,19 @@ class YoukuScraper extends BaseScraper {
|
|
|
5735
5749
|
return console.error(`Youku: Failed to get danmaku for vid ${r}:`, e), [];
|
|
5736
5750
|
}
|
|
5737
5751
|
}
|
|
5752
|
+
async getVideoInfo(e) {
|
|
5753
|
+
return (await this.fetch.get("https://openapi.youku.com/v2/videos/show_basic.json", {
|
|
5754
|
+
params: {
|
|
5755
|
+
client_id: "53e6cc67237fc59a",
|
|
5756
|
+
package: "com.huawei.hwvplayer.youku",
|
|
5757
|
+
video_id: e
|
|
5758
|
+
},
|
|
5759
|
+
schema: youkuEpisodeInfoSchema,
|
|
5760
|
+
cache: {
|
|
5761
|
+
cacheKey: `youku:segments:${e}`
|
|
5762
|
+
}
|
|
5763
|
+
})).data;
|
|
5764
|
+
}
|
|
5738
5765
|
async getEpisodesPage(e, t, n) {
|
|
5739
5766
|
return (await this.fetch.get("https://openapi.youku.com/v2/shows/videos.json", {
|
|
5740
5767
|
params: {
|
|
@@ -5906,8 +5933,10 @@ class scrapers_Scraper {
|
|
|
5906
5933
|
let i = this.findSegmentAtTime(r, e);
|
|
5907
5934
|
if (!i) return null;
|
|
5908
5935
|
let o = this.scraperMap[t];
|
|
5909
|
-
|
|
5910
|
-
|
|
5936
|
+
if (!o) return null;
|
|
5937
|
+
let s = await o.getComments(n, i.segmentId);
|
|
5938
|
+
return s ? {
|
|
5939
|
+
comments: s,
|
|
5911
5940
|
provider: t
|
|
5912
5941
|
} : null;
|
|
5913
5942
|
})());
|
|
@@ -5947,38 +5976,37 @@ class scrapers_Scraper {
|
|
|
5947
5976
|
async getEpisodes() {
|
|
5948
5977
|
for(var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n];
|
|
5949
5978
|
let r = [];
|
|
5950
|
-
for (let { provider: e, idString: n } of t){
|
|
5979
|
+
for (let { provider: e, idString: n, episodeNumber: i } of t){
|
|
5951
5980
|
let t = this.scraperMap[e];
|
|
5952
|
-
t && r.push(t.getEpisodes(n).catch((e)=>(console.error(e), [])));
|
|
5981
|
+
t && r.push(t.getEpisodes(n, i).catch((e)=>(console.error(e), [])));
|
|
5953
5982
|
}
|
|
5954
5983
|
return (await Promise.all(r).catch((e)=>(console.error(e), []))).flat().map((e)=>({
|
|
5955
5984
|
...e,
|
|
5956
5985
|
episodeId: `${e.provider}:${e.episodeId}`
|
|
5957
5986
|
}));
|
|
5958
5987
|
}
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
return "tv" === t && r ? e.filter((e)=>e.episodeNumber === r) : e;
|
|
5988
|
+
getEpisodeNumber(e, t) {
|
|
5989
|
+
if ("tv" === e && t) return parseInt(t);
|
|
5962
5990
|
}
|
|
5963
5991
|
async getDetailWithAnimeId(e, t, n) {
|
|
5964
|
-
let [r, i] = e.split(":")
|
|
5992
|
+
let [r, i] = e.split(":");
|
|
5993
|
+
return await this.getEpisodes({
|
|
5965
5994
|
provider: r,
|
|
5966
|
-
idString: i
|
|
5995
|
+
idString: i,
|
|
5996
|
+
episodeNumber: this.getEpisodeNumber(t, n)
|
|
5967
5997
|
});
|
|
5968
|
-
return this.formatEpisodeResult(o, t, n);
|
|
5969
5998
|
}
|
|
5970
5999
|
async getDetailWithDoubanId(e, t, n) {
|
|
5971
|
-
let r = await getVideoPlatformInfoByDoubanId(e.toString()), i = [];
|
|
5972
|
-
Object.entries(r.providers).forEach((e)=>{
|
|
6000
|
+
let r = await getVideoPlatformInfoByDoubanId(e.toString()), i = this.getEpisodeNumber(t, n), o = [];
|
|
6001
|
+
return Object.entries(r.providers).forEach((e)=>{
|
|
5973
6002
|
var t, n;
|
|
5974
|
-
let [r,
|
|
5975
|
-
|
|
6003
|
+
let [r, s] = e;
|
|
6004
|
+
o.push({
|
|
5976
6005
|
provider: r,
|
|
5977
|
-
idString: null != (n = null == (t = this.scraperMap[r]) ? void 0 : t.generateIdString(
|
|
6006
|
+
idString: null != (n = null == (t = this.scraperMap[r]) ? void 0 : t.generateIdString(s)) ? n : "",
|
|
6007
|
+
episodeNumber: i
|
|
5978
6008
|
});
|
|
5979
|
-
});
|
|
5980
|
-
let o = await this.getEpisodes(...i);
|
|
5981
|
-
return this.formatEpisodeResult(o, t, n);
|
|
6009
|
+
}), this.getEpisodes(...o);
|
|
5982
6010
|
}
|
|
5983
6011
|
constructor(){
|
|
5984
6012
|
scrapers_define_property(this, "scrapers", []), scrapers.forEach((e)=>{
|
|
@@ -5991,7 +6019,7 @@ WidgetMetadata = {
|
|
|
5991
6019
|
title: "\u901A\u7528\u5F39\u5E55",
|
|
5992
6020
|
description: "\u901A\u7528\u5F39\u5E55\u63D2\u4EF6\uFF0C\u652F\u6301\u817E\u8BAF\u3001\u4F18\u9177\u3001\u7231\u5947\u827A\u3001\u54D4\u54E9\u54D4\u54E9\u7B49\u5E73\u53F0",
|
|
5993
6021
|
author: "Baran",
|
|
5994
|
-
version: "0.0.
|
|
6022
|
+
version: "0.0.7",
|
|
5995
6023
|
site: "https://github.com/baranwang/forward-widgets/tree/main/packages/danmu-universe",
|
|
5996
6024
|
requiredVersion: "0.0.2",
|
|
5997
6025
|
modules: [
|