@forward-widget/danmu-universe 0.15.1 → 0.15.2
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/README.md +10 -4
- package/dist/danmu-universe.js +64 -23
- package/dist/danmu-universe.lite.js +64 -23
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 通用弹幕插件 (Danmu Universe)
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@forward-widget/danmu-universe)
|
|
4
|
-
[](https://github.com/baranwang/forward-
|
|
4
|
+
[](https://github.com/baranwang/forward-widget)
|
|
5
5
|
|
|
6
6
|
一个通用的弹幕聚合插件,支持从多个主流视频平台获取弹幕数据,为 Forward 生态系统提供跨平台的弹幕服务
|
|
7
7
|
|
|
@@ -25,10 +25,16 @@
|
|
|
25
25
|
|
|
26
26
|
在Forward Widget的模块管理中导入以下URL:
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
#### 完整版
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
https://unpkg.com/@forward-widget/danmu-universe
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### 精简版
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
```
|
|
37
|
+
https://unpkg.com/@forward-widget/danmu-universe/lite
|
|
32
38
|
```
|
|
33
39
|
|
|
34
40
|
## 开发
|
package/dist/danmu-universe.js
CHANGED
|
@@ -1016,8 +1016,8 @@ var compat_ZodFirstPartyTypeKind, __webpack_modules__ = {
|
|
|
1016
1016
|
var n = t + r, i = e[n];
|
|
1017
1017
|
e[n] = (i << 8 | i >>> 24) & 0x00ff00ff | (i << 24 | i >>> 8) & 0xff00ff00;
|
|
1018
1018
|
}
|
|
1019
|
-
var o = this._hash.words, a = e[t + 0], l = e[t + 1], p = 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], w = e[t + 9], _ = e[t + 10], x = e[t + 11], k = e[t + 12], S = e[t + 13], O = e[t + 14], P = e[t + 15],
|
|
1020
|
-
|
|
1019
|
+
var o = this._hash.words, a = e[t + 0], l = e[t + 1], p = 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], w = e[t + 9], _ = e[t + 10], x = e[t + 11], k = e[t + 12], S = e[t + 13], O = e[t + 14], P = e[t + 15], I = o[0], z = o[1], E = o[2], j = o[3];
|
|
1020
|
+
I = u(I, z, E, j, a, 7, s[0]), j = u(j, I, z, E, l, 12, s[1]), E = u(E, j, I, z, p, 17, s[2]), z = u(z, E, j, I, h, 22, s[3]), I = u(I, z, E, j, m, 7, s[4]), j = u(j, I, z, E, g, 12, s[5]), E = u(E, j, I, z, v, 17, s[6]), z = u(z, E, j, I, y, 22, s[7]), I = u(I, z, E, j, b, 7, s[8]), j = u(j, I, z, E, w, 12, s[9]), E = u(E, j, I, z, _, 17, s[10]), z = u(z, E, j, I, x, 22, s[11]), I = u(I, z, E, j, k, 7, s[12]), j = u(j, I, z, E, S, 12, s[13]), E = u(E, j, I, z, O, 17, s[14]), z = u(z, E, j, I, P, 22, s[15]), I = c(I, z, E, j, l, 5, s[16]), j = c(j, I, z, E, v, 9, s[17]), E = c(E, j, I, z, x, 14, s[18]), z = c(z, E, j, I, a, 20, s[19]), I = c(I, z, E, j, g, 5, s[20]), j = c(j, I, z, E, _, 9, s[21]), E = c(E, j, I, z, P, 14, s[22]), z = c(z, E, j, I, m, 20, s[23]), I = c(I, z, E, j, w, 5, s[24]), j = c(j, I, z, E, O, 9, s[25]), E = c(E, j, I, z, h, 14, s[26]), z = c(z, E, j, I, b, 20, s[27]), I = c(I, z, E, j, S, 5, s[28]), j = c(j, I, z, E, p, 9, s[29]), E = c(E, j, I, z, y, 14, s[30]), z = c(z, E, j, I, k, 20, s[31]), I = d(I, z, E, j, g, 4, s[32]), j = d(j, I, z, E, b, 11, s[33]), E = d(E, j, I, z, x, 16, s[34]), z = d(z, E, j, I, O, 23, s[35]), I = d(I, z, E, j, l, 4, s[36]), j = d(j, I, z, E, m, 11, s[37]), E = d(E, j, I, z, y, 16, s[38]), z = d(z, E, j, I, _, 23, s[39]), I = d(I, z, E, j, S, 4, s[40]), j = d(j, I, z, E, a, 11, s[41]), E = d(E, j, I, z, h, 16, s[42]), z = d(z, E, j, I, v, 23, s[43]), I = d(I, z, E, j, w, 4, s[44]), j = d(j, I, z, E, k, 11, s[45]), E = d(E, j, I, z, P, 16, s[46]), z = d(z, E, j, I, p, 23, s[47]), I = f(I, z, E, j, a, 6, s[48]), j = f(j, I, z, E, y, 10, s[49]), E = f(E, j, I, z, O, 15, s[50]), z = f(z, E, j, I, g, 21, s[51]), I = f(I, z, E, j, k, 6, s[52]), j = f(j, I, z, E, h, 10, s[53]), E = f(E, j, I, z, _, 15, s[54]), z = f(z, E, j, I, l, 21, s[55]), I = f(I, z, E, j, b, 6, s[56]), j = f(j, I, z, E, P, 10, s[57]), E = f(E, j, I, z, v, 15, s[58]), z = f(z, E, j, I, S, 21, s[59]), I = f(I, z, E, j, m, 6, s[60]), j = f(j, I, z, E, x, 10, s[61]), E = f(E, j, I, z, p, 15, s[62]), z = f(z, E, j, I, w, 21, s[63]), o[0] = o[0] + I | 0, o[1] = o[1] + z | 0, o[2] = o[2] + E | 0, o[3] = o[3] + j | 0;
|
|
1021
1021
|
},
|
|
1022
1022
|
_doFinalize: function() {
|
|
1023
1023
|
var e = this._data, r = e.words, n = 8 * this._nDataBytes, i = 8 * e.sigBytes;
|
|
@@ -10607,6 +10607,36 @@ class DoubanMatcher {
|
|
|
10607
10607
|
douban_define_property(this, "logger", new Logger("豆瓣")), douban_define_property(this, "tmdbMatcher", new TmdbMatcher()), douban_define_property(this, "imdbMatcher", new ImdbMatcher()), douban_define_property(this, "fetch", new Fetch()), douban_define_property(this, "DOUBAN_API_KEY", "0ac44ae016490db2204ce0a042db2916");
|
|
10608
10608
|
}
|
|
10609
10609
|
}
|
|
10610
|
+
let LOCAL_TMDB_PLATFORM_MAP = {
|
|
10611
|
+
movie: {},
|
|
10612
|
+
tv: {
|
|
10613
|
+
282136: {
|
|
10614
|
+
series: [
|
|
10615
|
+
{
|
|
10616
|
+
provider: "bilibili",
|
|
10617
|
+
idString: "seasonId=45962"
|
|
10618
|
+
}
|
|
10619
|
+
]
|
|
10620
|
+
}
|
|
10621
|
+
}
|
|
10622
|
+
}, cloneProviders = (e)=>e.map(({ provider: e, idString: t, episodeNumber: r })=>void 0 === r ? {
|
|
10623
|
+
provider: e,
|
|
10624
|
+
idString: t
|
|
10625
|
+
} : {
|
|
10626
|
+
provider: e,
|
|
10627
|
+
idString: t,
|
|
10628
|
+
episodeNumber: r
|
|
10629
|
+
}), lookupLocalMap = ({ type: e, tmdbId: t, season: r })=>{
|
|
10630
|
+
var n, i, o;
|
|
10631
|
+
if (!Number.isInteger(t) || t < 0) return null;
|
|
10632
|
+
let a = String(t);
|
|
10633
|
+
if ("movie" === e) return null != (n = LOCAL_TMDB_PLATFORM_MAP.movie[a]) ? n : null;
|
|
10634
|
+
let s = LOCAL_TMDB_PLATFORM_MAP.tv[a];
|
|
10635
|
+
return s ? null == r ? null != (i = s.series) ? i : null : !Number.isInteger(r) || r < 0 ? null : null != (o = s[String(r)]) ? o : null : null;
|
|
10636
|
+
}, getLocalEpisodeParams = (e)=>{
|
|
10637
|
+
let t = lookupLocalMap(e);
|
|
10638
|
+
return t ? cloneProviders(t) : [];
|
|
10639
|
+
};
|
|
10610
10640
|
function src_asyncGeneratorStep(e, t, r, n, i, o, a) {
|
|
10611
10641
|
try {
|
|
10612
10642
|
var s = e[o](a), l = s.value;
|
|
@@ -10665,14 +10695,14 @@ function src_object_spread_props(e, t) {
|
|
|
10665
10695
|
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
10666
10696
|
}), e;
|
|
10667
10697
|
}
|
|
10668
|
-
let widgetVersion = "0.15.
|
|
10698
|
+
let widgetVersion = "0.15.2";
|
|
10669
10699
|
WidgetMetadata = {
|
|
10670
10700
|
id: "baranwang.danmu.universe",
|
|
10671
10701
|
title: "通用弹幕",
|
|
10672
10702
|
description: "通用弹幕插件,支持腾讯、优酷、爱奇艺、哔哩哔哩、人人视频等平台",
|
|
10673
10703
|
author: "Baran",
|
|
10674
10704
|
version: widgetVersion,
|
|
10675
|
-
site: "https://github.com/baranwang/forward-
|
|
10705
|
+
site: "https://github.com/baranwang/forward-widget/tree/main/apps/danmu-universe",
|
|
10676
10706
|
requiredVersion: "0.0.2",
|
|
10677
10707
|
globalParams: [
|
|
10678
10708
|
{
|
|
@@ -10879,40 +10909,51 @@ WidgetMetadata = {
|
|
|
10879
10909
|
};
|
|
10880
10910
|
let checkShowEmptyAnimeTitle = (e)=>stringbool().catch(!0).parse(e.emptyAnimeTitle);
|
|
10881
10911
|
searchDanmu = (e)=>src_async_to_generator(function*() {
|
|
10882
|
-
let t = scrapers_scraper.setGlobalParams(e), { fuzzyMatch: r = "auto", type: n, episode: i } = e, o =
|
|
10883
|
-
|
|
10912
|
+
let t = scrapers_scraper.setGlobalParams(e), { fuzzyMatch: r = "auto", type: n, episode: i } = e, o = (e)=>"tv" !== n ? e : e.map((e)=>src_object_spread_props(src_object_spread({}, e), {
|
|
10913
|
+
episodeNumber: i ? parseInt(i, 10) : e.episodeNumber
|
|
10914
|
+
})), a = (e)=>src_async_to_generator(function*() {
|
|
10915
|
+
let t = yield scrapers_scraper.getEpisodes(...o(e));
|
|
10916
|
+
return "tv" === n && i && (t = t.filter((e)=>e.episodeNumber === parseInt(i, 10))), t;
|
|
10917
|
+
})(), s = (e)=>({
|
|
10918
|
+
animes: e.map((e)=>{
|
|
10919
|
+
let t = `[${PROVIDER_NAMES[e.provider]}] `;
|
|
10920
|
+
return e.episodeTitle && (t += e.episodeTitle), {
|
|
10921
|
+
animeId: e.episodeId,
|
|
10922
|
+
animeTitle: t
|
|
10923
|
+
};
|
|
10924
|
+
})
|
|
10925
|
+
}), l = e.tmdbId ? Number(e.tmdbId) : NaN, u = "tv" === n && void 0 !== e.season ? Number(e.season) : null, c = Number.isInteger(l) ? getLocalEpisodeParams({
|
|
10926
|
+
type: n,
|
|
10927
|
+
tmdbId: l,
|
|
10928
|
+
season: u
|
|
10929
|
+
}) : [];
|
|
10930
|
+
if (c.length) {
|
|
10931
|
+
let e = yield a(c);
|
|
10932
|
+
if (e.length) return s(e);
|
|
10933
|
+
}
|
|
10934
|
+
let d = [], f = new DoubanMatcher(), { doubanIds: p, videoPlatformInfo: h } = yield f.getEpisodeParams(e);
|
|
10935
|
+
d = d.concat(h);
|
|
10884
10936
|
try {
|
|
10885
10937
|
if ((null == t ? void 0 : t.global.experimental.doubanHistory.enabled) && (null == t ? void 0 : t.global.experimental.doubanHistory.dbcl2)) {
|
|
10886
10938
|
let e = new DoubanHistory(t.global.experimental.doubanHistory);
|
|
10887
|
-
1 ===
|
|
10939
|
+
1 === p.length && (yield e.setStatus(n, p[0], "tv" === n ? "doing" : "done"));
|
|
10888
10940
|
}
|
|
10889
10941
|
} catch (e) {
|
|
10890
10942
|
console.error(e);
|
|
10891
10943
|
}
|
|
10892
|
-
if (!(null ==
|
|
10944
|
+
if (!(null == d ? void 0 : d.length) && "auto" === r || "always" === r) {
|
|
10893
10945
|
let t = yield scrapers_scraper.getEpisodeParams(e);
|
|
10894
|
-
|
|
10946
|
+
d = d.concat(t);
|
|
10895
10947
|
}
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
})));
|
|
10899
|
-
let u = yield scrapers_scraper.getEpisodes(...o);
|
|
10900
|
-
return ("tv" === n && i && (u = u.filter((e)=>e.episodeNumber === parseInt(i, 10))), !u.length && checkShowEmptyAnimeTitle(e)) ? {
|
|
10948
|
+
let m = yield a(d);
|
|
10949
|
+
return !m.length && checkShowEmptyAnimeTitle(e) ? {
|
|
10901
10950
|
animes: [
|
|
10902
10951
|
{
|
|
10903
10952
|
animeId: EMPTY_ANIME_CONFIG.ID,
|
|
10904
10953
|
animeTitle: EMPTY_ANIME_CONFIG.TITLE
|
|
10905
10954
|
}
|
|
10906
10955
|
]
|
|
10907
|
-
} :
|
|
10908
|
-
animes: u.map((e)=>{
|
|
10909
|
-
let t = `[${PROVIDER_NAMES[e.provider]}] `;
|
|
10910
|
-
return e.episodeTitle && (t += e.episodeTitle), {
|
|
10911
|
-
animeId: e.episodeId,
|
|
10912
|
-
animeTitle: t
|
|
10913
|
-
};
|
|
10914
|
-
})
|
|
10915
|
-
};
|
|
10956
|
+
} : s(m);
|
|
10916
10957
|
})(), getDetail = (e)=>src_async_to_generator(function*() {
|
|
10917
10958
|
scrapers_scraper.setGlobalParams(e);
|
|
10918
10959
|
let { animeId: t, type: r, episode: n } = e;
|
|
@@ -1016,8 +1016,8 @@ var compat_ZodFirstPartyTypeKind, __webpack_modules__ = {
|
|
|
1016
1016
|
var n = t + r, i = e[n];
|
|
1017
1017
|
e[n] = (i << 8 | i >>> 24) & 0x00ff00ff | (i << 24 | i >>> 8) & 0xff00ff00;
|
|
1018
1018
|
}
|
|
1019
|
-
var o = this._hash.words, a = e[t + 0], l = e[t + 1], p = 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], w = e[t + 9], _ = e[t + 10], x = e[t + 11], k = e[t + 12],
|
|
1020
|
-
z = u(z, I, E, j, a, 7, s[0]), j = u(j, z, I, E, l, 12, s[1]), E = u(E, j, z, I, p, 17, s[2]), I = u(I, E, j, z, h, 22, s[3]), z = u(z, I, E, j, m, 7, s[4]), j = u(j, z, I, E, g, 12, s[5]), E = u(E, j, z, I, v, 17, s[6]), I = u(I, E, j, z, y, 22, s[7]), z = u(z, I, E, j, b, 7, s[8]), j = u(j, z, I, E, w, 12, s[9]), E = u(E, j, z, I, _, 17, s[10]), I = u(I, E, j, z, x, 22, s[11]), z = u(z, I, E, j, k, 7, s[12]), j = u(j, z, I, E,
|
|
1019
|
+
var o = this._hash.words, a = e[t + 0], l = e[t + 1], p = 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], w = e[t + 9], _ = e[t + 10], x = e[t + 11], k = e[t + 12], S = e[t + 13], O = e[t + 14], P = e[t + 15], z = o[0], I = o[1], E = o[2], j = o[3];
|
|
1020
|
+
z = u(z, I, E, j, a, 7, s[0]), j = u(j, z, I, E, l, 12, s[1]), E = u(E, j, z, I, p, 17, s[2]), I = u(I, E, j, z, h, 22, s[3]), z = u(z, I, E, j, m, 7, s[4]), j = u(j, z, I, E, g, 12, s[5]), E = u(E, j, z, I, v, 17, s[6]), I = u(I, E, j, z, y, 22, s[7]), z = u(z, I, E, j, b, 7, s[8]), j = u(j, z, I, E, w, 12, s[9]), E = u(E, j, z, I, _, 17, s[10]), I = u(I, E, j, z, x, 22, s[11]), z = u(z, I, E, j, k, 7, s[12]), j = u(j, z, I, E, S, 12, s[13]), E = u(E, j, z, I, O, 17, s[14]), I = u(I, E, j, z, P, 22, s[15]), z = c(z, I, E, j, l, 5, s[16]), j = c(j, z, I, E, v, 9, s[17]), E = c(E, j, z, I, x, 14, s[18]), I = c(I, E, j, z, a, 20, s[19]), z = c(z, I, E, j, g, 5, s[20]), j = c(j, z, I, E, _, 9, s[21]), E = c(E, j, z, I, P, 14, s[22]), I = c(I, E, j, z, m, 20, s[23]), z = c(z, I, E, j, w, 5, s[24]), j = c(j, z, I, E, O, 9, s[25]), E = c(E, j, z, I, h, 14, s[26]), I = c(I, E, j, z, b, 20, s[27]), z = c(z, I, E, j, S, 5, s[28]), j = c(j, z, I, E, p, 9, s[29]), E = c(E, j, z, I, y, 14, s[30]), I = c(I, E, j, z, k, 20, s[31]), z = d(z, I, E, j, g, 4, s[32]), j = d(j, z, I, E, b, 11, s[33]), E = d(E, j, z, I, x, 16, s[34]), I = d(I, E, j, z, O, 23, s[35]), z = d(z, I, E, j, l, 4, s[36]), j = d(j, z, I, E, m, 11, s[37]), E = d(E, j, z, I, y, 16, s[38]), I = d(I, E, j, z, _, 23, s[39]), z = d(z, I, E, j, S, 4, s[40]), j = d(j, z, I, E, a, 11, s[41]), E = d(E, j, z, I, h, 16, s[42]), I = d(I, E, j, z, v, 23, s[43]), z = d(z, I, E, j, w, 4, s[44]), j = d(j, z, I, E, k, 11, s[45]), E = d(E, j, z, I, P, 16, s[46]), I = d(I, E, j, z, p, 23, s[47]), z = f(z, I, E, j, a, 6, s[48]), j = f(j, z, I, E, y, 10, s[49]), E = f(E, j, z, I, O, 15, s[50]), I = f(I, E, j, z, g, 21, s[51]), z = f(z, I, E, j, k, 6, s[52]), j = f(j, z, I, E, h, 10, s[53]), E = f(E, j, z, I, _, 15, s[54]), I = f(I, E, j, z, l, 21, s[55]), z = f(z, I, E, j, b, 6, s[56]), j = f(j, z, I, E, P, 10, s[57]), E = f(E, j, z, I, v, 15, s[58]), I = f(I, E, j, z, S, 21, s[59]), z = f(z, I, E, j, m, 6, s[60]), j = f(j, z, I, E, x, 10, s[61]), E = f(E, j, z, I, p, 15, s[62]), I = f(I, E, j, z, w, 21, s[63]), o[0] = o[0] + z | 0, o[1] = o[1] + I | 0, o[2] = o[2] + E | 0, o[3] = o[3] + j | 0;
|
|
1021
1021
|
},
|
|
1022
1022
|
_doFinalize: function() {
|
|
1023
1023
|
var e = this._data, r = e.words, n = 8 * this._nDataBytes, i = 8 * e.sigBytes;
|
|
@@ -10447,6 +10447,36 @@ class DoubanMatcher {
|
|
|
10447
10447
|
douban_define_property(this, "logger", new Logger("豆瓣")), douban_define_property(this, "tmdbMatcher", new TmdbMatcher()), douban_define_property(this, "imdbMatcher", new ImdbMatcher()), douban_define_property(this, "fetch", new Fetch()), douban_define_property(this, "DOUBAN_API_KEY", "0ac44ae016490db2204ce0a042db2916");
|
|
10448
10448
|
}
|
|
10449
10449
|
}
|
|
10450
|
+
let LOCAL_TMDB_PLATFORM_MAP = {
|
|
10451
|
+
movie: {},
|
|
10452
|
+
tv: {
|
|
10453
|
+
282136: {
|
|
10454
|
+
series: [
|
|
10455
|
+
{
|
|
10456
|
+
provider: "bilibili",
|
|
10457
|
+
idString: "seasonId=45962"
|
|
10458
|
+
}
|
|
10459
|
+
]
|
|
10460
|
+
}
|
|
10461
|
+
}
|
|
10462
|
+
}, cloneProviders = (e)=>e.map(({ provider: e, idString: t, episodeNumber: r })=>void 0 === r ? {
|
|
10463
|
+
provider: e,
|
|
10464
|
+
idString: t
|
|
10465
|
+
} : {
|
|
10466
|
+
provider: e,
|
|
10467
|
+
idString: t,
|
|
10468
|
+
episodeNumber: r
|
|
10469
|
+
}), lookupLocalMap = ({ type: e, tmdbId: t, season: r })=>{
|
|
10470
|
+
var n, i, o;
|
|
10471
|
+
if (!Number.isInteger(t) || t < 0) return null;
|
|
10472
|
+
let a = String(t);
|
|
10473
|
+
if ("movie" === e) return null != (n = LOCAL_TMDB_PLATFORM_MAP.movie[a]) ? n : null;
|
|
10474
|
+
let s = LOCAL_TMDB_PLATFORM_MAP.tv[a];
|
|
10475
|
+
return s ? null == r ? null != (i = s.series) ? i : null : !Number.isInteger(r) || r < 0 ? null : null != (o = s[String(r)]) ? o : null : null;
|
|
10476
|
+
}, getLocalEpisodeParams = (e)=>{
|
|
10477
|
+
let t = lookupLocalMap(e);
|
|
10478
|
+
return t ? cloneProviders(t) : [];
|
|
10479
|
+
};
|
|
10450
10480
|
function src_asyncGeneratorStep(e, t, r, n, i, o, a) {
|
|
10451
10481
|
try {
|
|
10452
10482
|
var s = e[o](a), l = s.value;
|
|
@@ -10505,14 +10535,14 @@ function src_object_spread_props(e, t) {
|
|
|
10505
10535
|
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
10506
10536
|
}), e;
|
|
10507
10537
|
}
|
|
10508
|
-
let widgetVersion = "0.15.
|
|
10538
|
+
let widgetVersion = "0.15.2";
|
|
10509
10539
|
WidgetMetadata = {
|
|
10510
10540
|
id: "baranwang.danmu.universe",
|
|
10511
10541
|
title: "通用弹幕",
|
|
10512
10542
|
description: "通用弹幕插件,支持腾讯、优酷、爱奇艺、哔哩哔哩、人人视频等平台",
|
|
10513
10543
|
author: "Baran",
|
|
10514
10544
|
version: widgetVersion,
|
|
10515
|
-
site: "https://github.com/baranwang/forward-
|
|
10545
|
+
site: "https://github.com/baranwang/forward-widget/tree/main/apps/danmu-universe",
|
|
10516
10546
|
requiredVersion: "0.0.2",
|
|
10517
10547
|
globalParams: [
|
|
10518
10548
|
{
|
|
@@ -10724,40 +10754,51 @@ WidgetMetadata = {
|
|
|
10724
10754
|
};
|
|
10725
10755
|
let checkShowEmptyAnimeTitle = (e)=>stringbool().catch(!0).parse(e.emptyAnimeTitle);
|
|
10726
10756
|
searchDanmu = (e)=>src_async_to_generator(function*() {
|
|
10727
|
-
let t = scrapers_scraper.setGlobalParams(e), { fuzzyMatch: r = "auto", type: n, episode: i } = e, o =
|
|
10728
|
-
|
|
10757
|
+
let t = scrapers_scraper.setGlobalParams(e), { fuzzyMatch: r = "auto", type: n, episode: i } = e, o = (e)=>"tv" !== n ? e : e.map((e)=>src_object_spread_props(src_object_spread({}, e), {
|
|
10758
|
+
episodeNumber: i ? parseInt(i, 10) : e.episodeNumber
|
|
10759
|
+
})), a = (e)=>src_async_to_generator(function*() {
|
|
10760
|
+
let t = yield scrapers_scraper.getEpisodes(...o(e));
|
|
10761
|
+
return "tv" === n && i && (t = t.filter((e)=>e.episodeNumber === parseInt(i, 10))), t;
|
|
10762
|
+
})(), s = (e)=>({
|
|
10763
|
+
animes: e.map((e)=>{
|
|
10764
|
+
let t = `[${PROVIDER_NAMES[e.provider]}] `;
|
|
10765
|
+
return e.episodeTitle && (t += e.episodeTitle), {
|
|
10766
|
+
animeId: e.episodeId,
|
|
10767
|
+
animeTitle: t
|
|
10768
|
+
};
|
|
10769
|
+
})
|
|
10770
|
+
}), l = e.tmdbId ? Number(e.tmdbId) : NaN, u = "tv" === n && void 0 !== e.season ? Number(e.season) : null, c = Number.isInteger(l) ? getLocalEpisodeParams({
|
|
10771
|
+
type: n,
|
|
10772
|
+
tmdbId: l,
|
|
10773
|
+
season: u
|
|
10774
|
+
}) : [];
|
|
10775
|
+
if (c.length) {
|
|
10776
|
+
let e = yield a(c);
|
|
10777
|
+
if (e.length) return s(e);
|
|
10778
|
+
}
|
|
10779
|
+
let d = [], f = new DoubanMatcher(), { doubanIds: p, videoPlatformInfo: h } = yield f.getEpisodeParams(e);
|
|
10780
|
+
d = d.concat(h);
|
|
10729
10781
|
try {
|
|
10730
10782
|
if ((null == t ? void 0 : t.global.experimental.doubanHistory.enabled) && (null == t ? void 0 : t.global.experimental.doubanHistory.dbcl2)) {
|
|
10731
10783
|
let e = new DoubanHistory(t.global.experimental.doubanHistory);
|
|
10732
|
-
1 ===
|
|
10784
|
+
1 === p.length && (yield e.setStatus(n, p[0], "tv" === n ? "doing" : "done"));
|
|
10733
10785
|
}
|
|
10734
10786
|
} catch (e) {
|
|
10735
10787
|
console.error(e);
|
|
10736
10788
|
}
|
|
10737
|
-
if (!(null ==
|
|
10789
|
+
if (!(null == d ? void 0 : d.length) && "auto" === r || "always" === r) {
|
|
10738
10790
|
let t = yield scrapers_scraper.getEpisodeParams(e);
|
|
10739
|
-
|
|
10791
|
+
d = d.concat(t);
|
|
10740
10792
|
}
|
|
10741
|
-
|
|
10742
|
-
|
|
10743
|
-
})));
|
|
10744
|
-
let u = yield scrapers_scraper.getEpisodes(...o);
|
|
10745
|
-
return ("tv" === n && i && (u = u.filter((e)=>e.episodeNumber === parseInt(i, 10))), !u.length && checkShowEmptyAnimeTitle(e)) ? {
|
|
10793
|
+
let m = yield a(d);
|
|
10794
|
+
return !m.length && checkShowEmptyAnimeTitle(e) ? {
|
|
10746
10795
|
animes: [
|
|
10747
10796
|
{
|
|
10748
10797
|
animeId: EMPTY_ANIME_CONFIG.ID,
|
|
10749
10798
|
animeTitle: EMPTY_ANIME_CONFIG.TITLE
|
|
10750
10799
|
}
|
|
10751
10800
|
]
|
|
10752
|
-
} :
|
|
10753
|
-
animes: u.map((e)=>{
|
|
10754
|
-
let t = `[${PROVIDER_NAMES[e.provider]}] `;
|
|
10755
|
-
return e.episodeTitle && (t += e.episodeTitle), {
|
|
10756
|
-
animeId: e.episodeId,
|
|
10757
|
-
animeTitle: t
|
|
10758
|
-
};
|
|
10759
|
-
})
|
|
10760
|
-
};
|
|
10801
|
+
} : s(m);
|
|
10761
10802
|
})(), getDetail = (e)=>src_async_to_generator(function*() {
|
|
10762
10803
|
scrapers_scraper.setGlobalParams(e);
|
|
10763
10804
|
let { animeId: t, type: r, episode: n } = e;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forward-widget/danmu-universe",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/danmu-universe.js",
|
|
6
6
|
"exports": {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"url-parse": "^1.5.10",
|
|
21
21
|
"zod": "4.0.17",
|
|
22
22
|
"@forward-widget/libs-fetch": "^0.0.0",
|
|
23
|
-
"@forward-widget/libs-
|
|
24
|
-
"@forward-widget/libs-
|
|
23
|
+
"@forward-widget/libs-storage": "^0.0.0",
|
|
24
|
+
"@forward-widget/libs-utils": "^0.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@forward-widget/libs": "2.1.0",
|
|
@@ -35,15 +35,16 @@
|
|
|
35
35
|
"@types/url-parse": "^1.4.11",
|
|
36
36
|
"rsbuild-plugin-protobufjs": "^0.0.0",
|
|
37
37
|
"type-fest": "^4.41.0",
|
|
38
|
-
"typescript": "^5.9.3"
|
|
38
|
+
"typescript": "^5.9.3",
|
|
39
|
+
"@forward-widget/tmdb-mapping-kit": "^0.0.0"
|
|
39
40
|
},
|
|
40
41
|
"repository": {
|
|
41
42
|
"type": "git",
|
|
42
|
-
"url": "https://github.com/baranwang/forward-
|
|
43
|
+
"url": "https://github.com/baranwang/forward-widget.git",
|
|
43
44
|
"directory": "apps/danmu-universe"
|
|
44
45
|
},
|
|
45
46
|
"bugs": {
|
|
46
|
-
"url": "https://github.com/baranwang/forward-
|
|
47
|
+
"url": "https://github.com/baranwang/forward-widget/issues/new?template=danmu-universe.md"
|
|
47
48
|
},
|
|
48
49
|
"publishConfig": {
|
|
49
50
|
"access": "public",
|