@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.
@@ -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], S = e[t + 14], E = 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, S, 17, a[14]), O = l(O, I, $, z, E, 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, E, 14, a[22]), O = c(O, I, $, z, m, 20, a[23]), z = c(z, O, I, $, _, 5, a[24]), $ = c($, z, O, I, S, 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, S, 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, E, 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, S, 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, E, 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;
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
- let n = this.parseIdString(e);
5667
- if (!n) return [];
5668
- let r = [], i = 1, o = 20, s = 0;
5669
- for(;;)try {
5670
- let e = await this.getEpisodesPage(n.showId, i, o);
5671
- if (!e || !e.videos || 0 === e.videos.length) break;
5672
- 1 === i && e.total && (s = e.total);
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
- let a = r.map((e, t)=>({
5681
- provider: this.providerName,
5682
- episodeId: this.generateIdString({
5683
- showId: n.showId,
5684
- vid: e.id
5685
- }),
5686
- episodeTitle: e.title,
5687
- episodeNumber: t + 1
5688
- }));
5689
- if (void 0 !== t) {
5690
- let e = a.find((e)=>e.episodeNumber === t);
5691
- return e ? [
5692
- e
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 = (await this.fetch.get("https://openapi.youku.com/v2/videos/show_basic.json", {
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
- return o ? {
5910
- comments: await o.getComments(n, i.segmentId),
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
- formatEpisodeResult(e, t, n) {
5960
- let r = n ? parseInt(null != n ? n : "") : void 0;
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(":"), o = await this.getEpisodes({
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, o] = e;
5975
- i.push({
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(o)) ? n : ""
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.5",
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: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forward-widget/danmu-universe",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "type": "module",
5
5
  "main": "./dist/danmu-universe.js",
6
6
  "exports": {