karin-plugin-kkk 2.18.2 → 2.18.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [2.18.3](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.18.2...v2.18.3) (2026-01-27)
6
+
7
+
8
+ ### 🐛 错误修复
9
+
10
+ * 重定向兼容性提高 ([5c7ea05](https://github.com/ikenxuan/karin-plugin-kkk/commit/5c7ea05bfbefb8c03947be3b8b505582c589f422))
11
+
12
+
13
+ ### 🧰 其他更新
14
+
15
+ * template:dev 优化开发体验 ([c90caac](https://github.com/ikenxuan/karin-plugin-kkk/commit/c90caaca734a30b7a2d1ed447994f15844abb8a4))
16
+ * template:dev 兼容性提高 ([4ac290e](https://github.com/ikenxuan/karin-plugin-kkk/commit/4ac290ead15d46ac4f359cc06fb7605205cc553b))
17
+ * 细优 ([0af9293](https://github.com/ikenxuan/karin-plugin-kkk/commit/0af9293bf7d8b9acf38c06104a8ccef36e00b03e))
18
+ * 细优 ([5fef1ba](https://github.com/ikenxuan/karin-plugin-kkk/commit/5fef1baf2555b97bc6a2aa04a56971edb590e445))
19
+ * 细优 ([16273a2](https://github.com/ikenxuan/karin-plugin-kkk/commit/16273a280cedb07aa8487143304ad66fcde76655))
20
+ * 重写组件开发面板中子组件的缩放和拖拽逻辑。 ([74c7ea8](https://github.com/ikenxuan/karin-plugin-kkk/commit/74c7ea8bf5e507f66e7c50ab23a69ce0269dd5c3))
21
+
5
22
  ## [2.18.2](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.18.1...v2.18.2) (2026-01-18)
6
23
 
7
24
 
package/lib/apps/admin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { C as removeAllFiles, E as task, S as dylogin, T as setdyck, w as setbilick, x as biLogin } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { C as removeAllFiles, E as task, S as dylogin, T as setdyck, w as setbilick, x as biLogin } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { biLogin, dylogin, removeAllFiles, setbilick, setdyck, task };
package/lib/apps/help.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { b as version, y as help } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { b as version, y as help } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { help, version };
package/lib/apps/push.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { _ as setdyPush, d as bilibiliPushList, f as changeBotID, g as setbiliPush, h as forcePush, m as douyinPushList, p as douyinPush, u as bilibiliPush, v as testDouyinPush } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { _ as setdyPush, d as bilibiliPushList, f as changeBotID, g as setbiliPush, h as forcePush, m as douyinPushList, p as douyinPush, u as bilibiliPush, v as testDouyinPush } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { bilibiliPush, bilibiliPushList, changeBotID, douyinPush, douyinPushList, forcePush, setbiliPush, setdyPush, testDouyinPush };
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { l as qrLogin } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { l as qrLogin } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { qrLogin };
package/lib/apps/tools.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { a as douyinAPP, c as xiaohongshuAPP, i as bilibiliAPP, o as kuaishouAPP, s as prefix } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { a as douyinAPP, c as xiaohongshuAPP, i as bilibiliAPP, o as kuaishouAPP, s as prefix } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { bilibiliAPP, douyinAPP, kuaishouAPP, prefix, xiaohongshuAPP };
@@ -1,5 +1,5 @@
1
1
  import "../core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import { n as kkkUpdateCommand, r as update, t as kkkUpdate } from "../core_chunk/main-u9R5sj94.js";
3
- import "../core_chunk/vendor-BCUOH1Nn.js";
4
- import "../core_chunk/template-BAFMkYza.js";
2
+ import { n as kkkUpdateCommand, r as update, t as kkkUpdate } from "../core_chunk/main-DFGREgML.js";
3
+ import "../core_chunk/vendor-B-twx8Ds.js";
4
+ import "../core_chunk/template-BBVRQ9ag.js";
5
5
  export { kkkUpdate, kkkUpdateCommand, update };
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "2.18.2",
3
- "buildTime": "2026-01-18T18:21:07.471Z",
4
- "buildTimestamp": 1768760467471,
2
+ "version": "2.18.3",
3
+ "buildTime": "2026-01-27T09:23:38.342Z",
4
+ "buildTimestamp": 1769505818342,
5
5
  "name": "karin-plugin-kkk",
6
6
  "description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
7
7
  "homepage": "https://github.com/ikenxuan/karin-plugin-kkk",
8
- "commitHash": "2b576ea0cebef14c01035c307040c90f1c599f3d",
9
- "shortCommitHash": "2b576ea0"
8
+ "commitHash": "32d61aec4f0896349bc4e527f5f729fe1573beeb",
9
+ "shortCommitHash": "32d61aec"
10
10
  }
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin, o as __toESM, r as __export } from "./rolldown-runtime-BMXAG3ag.js";
2
- import { $t as require_express, G as zhCN, J as init_date_fns, Q as differenceInSeconds, W as init_locale, X as formatDistanceToNow, Y as fromUnixTime, Z as format, a as require_lib, an as axios_default, c as Window, cn as init_zod, en as require_protobufjs, i as require_dist, in as init_axios, ln as zod_default, n as require_jsQR, nn as init_source, o as require_qr_code_styling, on as Xhshow, r as require_heic_convert, rn as AxiosError$1, s as init_lib, sn as init_esm, t as require_png, tn as Chalk } from "./vendor-BCUOH1Nn.js";
3
- import { n as init_client, r as reactServerRender } from "./template-BAFMkYza.js";
2
+ import { $t as require_express, G as zhCN, J as init_date_fns, Q as differenceInSeconds, W as init_locale, X as formatDistanceToNow, Y as fromUnixTime, Z as format, a as require_lib, an as axios_default, c as Window, cn as init_zod, en as require_protobufjs, i as require_dist, in as init_axios, ln as zod_default, n as require_jsQR, nn as init_source, o as require_qr_code_styling, on as Xhshow, r as require_heic_convert, rn as AxiosError$1, s as init_lib, sn as init_esm, t as require_png, tn as Chalk } from "./vendor-B-twx8Ds.js";
3
+ import { n as init_client, r as reactServerRender } from "./template-BBVRQ9ag.js";
4
4
  import { createRequire } from "node:module";
5
5
  import karin$1, { BOT_CONNECT, app, authMiddleware, checkPkgUpdate, checkPort, common, components, config, copyConfigSync, createBadRequestResponse, createNotFoundResponse, createServerErrorResponse, createSuccessResponse, db, defineConfig, ffmpeg, ffprobe, filesByExt, getBot, hooks, karin, karinPathHtml, karinPathTemp, logger, logs, mkdirSync, range, render, requireFileSync, restart, segment, updatePkg, watch } from "node-karin";
6
6
  import fs from "node:fs";
@@ -7519,7 +7519,9 @@ var init_Network$1 = __esmMin(() => {
7519
7519
  }
7520
7520
  return response;
7521
7521
  }
7522
- async getLongLink(url = "") {
7522
+ async getLongLink(url = "", depth = 0) {
7523
+ const MAX_REDIRECTS = 10;
7524
+ if (depth > MAX_REDIRECTS) throw new Error(`重定向次数超过限制 (${MAX_REDIRECTS})`);
7523
7525
  const targetUrl = this.url || url;
7524
7526
  try {
7525
7527
  new URL(targetUrl);
@@ -7544,10 +7546,17 @@ var init_Network$1 = __esmMin(() => {
7544
7546
  return response.request?.res?.responseUrl ?? response.config?.url ?? targetUrl;
7545
7547
  } catch (error) {
7546
7548
  const axiosError = error;
7547
- if (axiosError.response?.status === 302 && axiosError.response.headers?.location) {
7548
- const redirectUrl = axiosError.response.headers.location;
7549
- logger.info(`检测到302重定向,目标地址: ${redirectUrl}`);
7550
- return await this.getLongLink(redirectUrl);
7549
+ if (axiosError.response?.status && [
7550
+ 301,
7551
+ 302,
7552
+ 303,
7553
+ 307,
7554
+ 308
7555
+ ].includes(axiosError.response.status) && axiosError.response.headers?.location) {
7556
+ const location = axiosError.response.headers.location;
7557
+ const redirectUrl = location.startsWith("http") ? location : new URL(location, targetUrl).href;
7558
+ logger.info(`检测到${axiosError.response.status}重定向 (深度: ${depth + 1}), 目标: ${redirectUrl}`);
7559
+ return await this.getLongLink(redirectUrl, depth + 1);
7551
7560
  }
7552
7561
  if (method === "head") {
7553
7562
  logger.debug(`HEAD 请求失败 (${axiosError.code || axiosError.message}),尝试 GET 请求`);
@@ -14319,6 +14328,7 @@ var hasNestedStructure = (obj, path$1) => {
14319
14328
  };
14320
14329
  await init_src();
14321
14330
  await init_date_fns();
14331
+ await init_locale();
14322
14332
  await init_utils$1();
14323
14333
  await init_amagiClient();
14324
14334
  await init_Config();
@@ -14616,7 +14626,7 @@ var Bilibili = class extends Base {
14616
14626
  dianzan: Count(dynamicInfo.data.data.item.modules.module_stat.like.count),
14617
14627
  pinglun: Count(dynamicInfo.data.data.item.modules.module_stat.comment.count),
14618
14628
  share: Count(dynamicInfo.data.data.item.modules.module_stat.forward.count),
14619
- create_time: dynamicInfo.data.data.item.modules.module_author.pub_time,
14629
+ create_time: TimeFormatter.toRelative(dynamicInfo.data.data.item.modules.module_author.pub_ts),
14620
14630
  avatar_url: dynamicInfo.data.data.item.modules.module_author.face,
14621
14631
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14622
14632
  share_url: "https://t.bilibili.com/" + dynamicInfo.data.data.item.id_str,
@@ -14626,7 +14636,7 @@ var Bilibili = class extends Base {
14626
14636
  total_favorited: Count(userProfileData.data.data.like_num),
14627
14637
  following_count: Count(userProfileData.data.data.card.attention),
14628
14638
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
14629
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14639
+ render_time: TimeFormatter.now(),
14630
14640
  dynamicTYPE: "图文动态",
14631
14641
  imageLayout: Config.bilibili.imageLayout,
14632
14642
  additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional)
@@ -14650,7 +14660,7 @@ var Bilibili = class extends Base {
14650
14660
  dianzan: Count(dynamicInfo.data.data.item.modules.module_stat.like.count),
14651
14661
  pinglun: Count(dynamicInfo.data.data.item.modules.module_stat.comment.count),
14652
14662
  share: Count(dynamicInfo.data.data.item.modules.module_stat.forward.count),
14653
- create_time: dynamicInfo.data.data.item.modules.module_author.pub_time,
14663
+ create_time: TimeFormatter.toRelative(dynamicInfo.data.data.item.modules.module_author.pub_ts),
14654
14664
  avatar_url: dynamicInfo.data.data.item.modules.module_author.face,
14655
14665
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14656
14666
  share_url: "https://t.bilibili.com/" + dynamicInfo.data.data.item.id_str,
@@ -14660,7 +14670,7 @@ var Bilibili = class extends Base {
14660
14670
  total_favorited: Count(userProfileData.data.data.like_num),
14661
14671
  following_count: Count(userProfileData.data.data.card.attention),
14662
14672
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decoration_card),
14663
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14673
+ render_time: TimeFormatter.now(),
14664
14674
  dynamicTYPE: "纯文动态",
14665
14675
  additional: parseAdditionalCard(dynamicInfo.data.data.item.modules.module_dynamic.additional)
14666
14676
  }));
@@ -14683,7 +14693,7 @@ var Bilibili = class extends Base {
14683
14693
  view: dynamicInfo.data.data.item.orig.modules.module_dynamic.major.archive.stat.view,
14684
14694
  play: dynamicInfo.data.data.item.orig.modules.module_dynamic.major.archive.stat.play,
14685
14695
  cover: dynamicInfo.data.data.item.orig.modules.module_dynamic.major.archive.cover,
14686
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14696
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts),
14687
14697
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.orig.modules.module_author.decoration_card),
14688
14698
  frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image
14689
14699
  };
@@ -14697,7 +14707,7 @@ var Bilibili = class extends Base {
14697
14707
  data$1 = {
14698
14708
  title: dynamicInfo.data.data.item.orig.modules.module_dynamic.major?.opus?.title ?? null,
14699
14709
  username: checkvip$2(dynamicInfo.data.data.item.orig.modules.module_author),
14700
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14710
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts),
14701
14711
  avatar_url: dynamicInfo.data.data.item.orig.modules.module_author.face,
14702
14712
  text: replacetext(br$3(dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.text), dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.rich_text_nodes),
14703
14713
  image_url: cardData.item.pictures && cover(cardData.item.pictures),
@@ -14709,7 +14719,7 @@ var Bilibili = class extends Base {
14709
14719
  case DynamicType.WORD:
14710
14720
  data$1 = {
14711
14721
  username: checkvip$2(dynamicInfo.data.data.item.orig.modules.module_author),
14712
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14722
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts),
14713
14723
  avatar_url: dynamicInfo.data.data.item.orig.modules.module_author.face,
14714
14724
  text: replacetext(br$3(dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.text), dynamicInfo.data.data.item.orig.modules.module_dynamic.major.opus.summary.rich_text_nodes),
14715
14725
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.orig.modules.module_author.decoration_card),
@@ -14720,7 +14730,7 @@ var Bilibili = class extends Base {
14720
14730
  const liveData = JSON.parse(dynamicInfo.data.data.item.orig.modules.module_dynamic.major.live_rcmd.content);
14721
14731
  data$1 = {
14722
14732
  username: checkvip$2(dynamicInfo.data.data.item.orig.modules.module_author),
14723
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14733
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.orig.modules.module_author.pub_ts),
14724
14734
  avatar_url: dynamicInfo.data.data.item.orig.modules.module_author.face,
14725
14735
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.orig.modules.module_author.decoration_card),
14726
14736
  frame: dynamicInfo.data.data.item.orig.modules.module_author.pendant.image,
@@ -14743,7 +14753,7 @@ var Bilibili = class extends Base {
14743
14753
  dianzan: Count(dynamicInfo.data.data.item.modules.module_stat.like.count),
14744
14754
  pinglun: Count(dynamicInfo.data.data.item.modules.module_stat.comment.count),
14745
14755
  share: Count(dynamicInfo.data.data.item.modules.module_stat.forward.count),
14746
- create_time: dynamicInfo.data.data.item.modules.module_author.pub_time,
14756
+ create_time: TimeFormatter.toRelative(dynamicInfo.data.data.item.modules.module_author.pub_ts),
14747
14757
  avatar_url: dynamicInfo.data.data.item.modules.module_author.face,
14748
14758
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14749
14759
  share_url: "https://t.bilibili.com/" + dynamicInfo.data.data.item.id_str,
@@ -14754,7 +14764,7 @@ var Bilibili = class extends Base {
14754
14764
  following_count: Count(userProfileData.data.data.card.attention),
14755
14765
  dynamicTYPE: "转发动态解析",
14756
14766
  decoration_card: generateDecorationCard(dynamicInfo.data.data.item.modules.module_author.decorate),
14757
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14767
+ render_time: TimeFormatter.now(),
14758
14768
  original_content: { [dynamicInfo.data.data.item.orig.type]: data$1 }
14759
14769
  }));
14760
14770
  break;
@@ -14786,7 +14796,7 @@ var Bilibili = class extends Base {
14786
14796
  view: Count(dycrad.stat.view),
14787
14797
  coin: Count(dycrad.stat.coin),
14788
14798
  duration_text: dynamicInfo.data.data.item.modules.module_dynamic.major.archive.duration_text,
14789
- create_time: format(fromUnixTime(INFODATA.data.data.ctime), "yyyy-MM-dd HH:mm"),
14799
+ create_time: TimeFormatter.toDateTime(INFODATA.data.data.ctime),
14790
14800
  avatar_url: INFODATA.data.data.owner.face,
14791
14801
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14792
14802
  share_url: "https://www.bilibili.com/video/" + bvid,
@@ -14795,7 +14805,7 @@ var Bilibili = class extends Base {
14795
14805
  user_shortid: userProfileData.data.data.card.mid,
14796
14806
  total_favorited: Count(userProfileData.data.data.like_num),
14797
14807
  following_count: Count(userProfileData.data.data.card.attention),
14798
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14808
+ render_time: TimeFormatter.now(),
14799
14809
  dynamicTYPE: "视频动态",
14800
14810
  dynamic_id: dynamicInfo.data.data.item.id_str
14801
14811
  });
@@ -14815,8 +14825,8 @@ var Bilibili = class extends Base {
14815
14825
  avatar_url: userINFO.data.data.card.face,
14816
14826
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14817
14827
  fans: Count(userINFO.data.data.follower),
14818
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14819
- now_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14828
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.modules.module_author.pub_ts),
14829
+ now_time: TimeFormatter.now(),
14820
14830
  share_url: "https://live.bilibili.com/" + dynamicCARD.live_play_info.room_id,
14821
14831
  dynamicTYPE: "直播动态"
14822
14832
  });
@@ -14851,7 +14861,7 @@ var Bilibili = class extends Base {
14851
14861
  username: checkvip$2(userProfileData.data.data.card),
14852
14862
  avatar_url: userProfileData.data.data.card.face,
14853
14863
  frame: dynamicInfo.data.data.item.modules.module_author.pendant.image,
14854
- create_time: format(fromUnixTime(dynamicInfo.data.data.item.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
14864
+ create_time: TimeFormatter.toDateTime(dynamicInfo.data.data.item.modules.module_author.pub_ts),
14855
14865
  title: articleData.title,
14856
14866
  summary: articleData.summary,
14857
14867
  banner_url: articleData.banner_url || articleData.image_urls && articleData.image_urls[0] || "",
@@ -14860,7 +14870,7 @@ var Bilibili = class extends Base {
14860
14870
  opus: articleContent.opus || void 0,
14861
14871
  content: articleContent.content || void 0,
14862
14872
  stats: articleData.stats,
14863
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14873
+ render_time: TimeFormatter.now(),
14864
14874
  share_url: articleContent.dyn_id_str ? `https://www.bilibili.com/opus/${articleContent.dyn_id_str}` : `https://www.bilibili.com/read/cv${articleContent.id}`,
14865
14875
  dynamicTYPE: "专栏动态解析",
14866
14876
  user_shortid: userProfileData.data.data.card.mid,
@@ -14905,7 +14915,7 @@ var Bilibili = class extends Base {
14905
14915
  frame: userProfileData.data.data.card.pendant.image,
14906
14916
  fans: Count(userProfileData.data.data.card.fans),
14907
14917
  create_time: liveInfo.data.data.live_time === "-62170012800" ? "获取失败" : liveInfo.data.data.live_time,
14908
- now_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
14918
+ now_time: TimeFormatter.now(),
14909
14919
  share_url: "https://live.bilibili.com/" + liveInfo.data.data.room_id,
14910
14920
  dynamicTYPE: "直播"
14911
14921
  });
@@ -15017,6 +15027,35 @@ var Bilibili = class extends Base {
15017
15027
  };
15018
15028
  var checkvip$2 = (member) => member.vip.status === 1 ? `<span style="color: ${member.vip.nickname_color ?? "#FB7299"}; font-weight: 700;">${member.name}</span>` : `<span style="color: ${Common.useDarkTheme() ? "#e9e9e9" : "#313131"}; font-weight: 700;">${member.name}</span>`;
15019
15029
  var br$3 = (data$1) => data$1 = data$1.replace(/\n/g, "<br>");
15030
+ const TimeFormatter = {
15031
+ toRelative: (timestamp) => {
15032
+ try {
15033
+ return formatDistanceToNow(fromUnixTime(timestamp), {
15034
+ addSuffix: true,
15035
+ locale: zhCN
15036
+ });
15037
+ } catch (error) {
15038
+ logger.warn("相对时间格式化失败:", error);
15039
+ return TimeFormatter.toDateTime(timestamp);
15040
+ }
15041
+ },
15042
+ toDateTime: (timestamp) => {
15043
+ try {
15044
+ return format(fromUnixTime(timestamp), "yyyy-MM-dd HH:mm");
15045
+ } catch (error) {
15046
+ logger.warn("日期时间格式化失败:", error);
15047
+ return "时间格式错误";
15048
+ }
15049
+ },
15050
+ now: () => {
15051
+ try {
15052
+ return format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss");
15053
+ } catch (error) {
15054
+ logger.warn("当前时间格式化失败:", error);
15055
+ return (/* @__PURE__ */ new Date()).toISOString();
15056
+ }
15057
+ }
15058
+ };
15020
15059
  const replacetext = (text, rich_text_nodes) => {
15021
15060
  for (const tag of rich_text_nodes) {
15022
15061
  const escapedText = tag.orig_text.replace(/([.*+?^${}()|[\]\\])/g, "\\$1").replace(/\n/g, "\\n");
@@ -15736,7 +15775,6 @@ const bilibiliLogin = async (e) => {
15736
15775
  }
15737
15776
  };
15738
15777
  await init_src();
15739
- await init_date_fns();
15740
15778
  await init_module();
15741
15779
  await init_amagiClient();
15742
15780
  await init_Config();
@@ -15831,7 +15869,7 @@ var Bilibilipush = class extends Base {
15831
15869
  dianzan: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.like.count),
15832
15870
  pinglun: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.comment.count),
15833
15871
  share: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.forward.count),
15834
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
15872
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
15835
15873
  avatar_url: data$1[dynamicId].Dynamic_Data.modules.module_author.face,
15836
15874
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
15837
15875
  share_url: "https://t.bilibili.com/" + data$1[dynamicId].Dynamic_Data.id_str,
@@ -15841,7 +15879,7 @@ var Bilibilipush = class extends Base {
15841
15879
  total_favorited: Count(userINFO.data.data.like_num),
15842
15880
  following_count: Count(userINFO.data.data.card.attention),
15843
15881
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.modules.module_author.decoration_card),
15844
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
15882
+ render_time: TimeFormatter.now(),
15845
15883
  imageLayout: Config.bilibili.imageLayout,
15846
15884
  additional: parseAdditionalCard(data$1[dynamicId].Dynamic_Data.modules.module_dynamic.additional),
15847
15885
  dynamicTYPE: "图文动态推送"
@@ -15863,7 +15901,7 @@ var Bilibilipush = class extends Base {
15863
15901
  dianzan: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.like.count),
15864
15902
  pinglun: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.comment.count),
15865
15903
  share: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.forward.count),
15866
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
15904
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
15867
15905
  avatar_url: data$1[dynamicId].Dynamic_Data.modules.module_author.face,
15868
15906
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
15869
15907
  share_url: "https://t.bilibili.com/" + data$1[dynamicId].Dynamic_Data.id_str,
@@ -15873,7 +15911,7 @@ var Bilibilipush = class extends Base {
15873
15911
  total_favorited: Count(userINFO.data.data.like_num),
15874
15912
  following_count: Count(userINFO.data.data.card.attention),
15875
15913
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.modules.module_author.decoration_card),
15876
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
15914
+ render_time: TimeFormatter.now(),
15877
15915
  additional: parseAdditionalCard(data$1[dynamicId].Dynamic_Data.modules.module_dynamic.additional),
15878
15916
  dynamicTYPE: "纯文动态推送"
15879
15917
  });
@@ -15899,7 +15937,7 @@ var Bilibilipush = class extends Base {
15899
15937
  view: Count(dycrad.stat.view),
15900
15938
  coin: Count(dycrad.stat.coin),
15901
15939
  duration_text: data$1[dynamicId].Dynamic_Data.modules.module_dynamic.major?.archive?.duration_text ?? "0:00",
15902
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
15940
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
15903
15941
  avatar_url: INFODATA.data.data.owner.face,
15904
15942
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
15905
15943
  share_url: "https://www.bilibili.com/video/" + bvid,
@@ -15908,7 +15946,7 @@ var Bilibilipush = class extends Base {
15908
15946
  user_shortid: data$1[dynamicId].host_mid,
15909
15947
  total_favorited: Count(userINFO.data.data.like_num),
15910
15948
  following_count: Count(userINFO.data.data.card.attention),
15911
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
15949
+ render_time: TimeFormatter.now(),
15912
15950
  dynamicTYPE: "视频动态推送",
15913
15951
  dynamic_id: dynamicId
15914
15952
  });
@@ -15923,8 +15961,8 @@ var Bilibilipush = class extends Base {
15923
15961
  avatar_url: userINFO.data.data.card.face,
15924
15962
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
15925
15963
  fans: Count(userINFO.data.data.follower),
15926
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
15927
- now_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
15964
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
15965
+ now_time: TimeFormatter.now(),
15928
15966
  share_url: "https://live.bilibili.com/" + dycrad.live_play_info.room_id,
15929
15967
  dynamicTYPE: "直播动态推送"
15930
15968
  });
@@ -15947,7 +15985,7 @@ var Bilibilipush = class extends Base {
15947
15985
  danmaku: data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.archive?.stat.danmaku,
15948
15986
  play: data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.archive?.stat.play,
15949
15987
  cover: data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.archive?.cover,
15950
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
15988
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts),
15951
15989
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.decoration_card),
15952
15990
  frame: data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pendant.image
15953
15991
  };
@@ -15961,7 +15999,7 @@ var Bilibilipush = class extends Base {
15961
15999
  param = {
15962
16000
  title: data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major?.opus?.title ?? null,
15963
16001
  username: checkvip(data$1[dynamicId].Dynamic_Data.orig.modules.module_author),
15964
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
16002
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts),
15965
16003
  avatar_url: data$1[dynamicId].Dynamic_Data.orig.modules.module_author.face,
15966
16004
  text: replacetext(br$1(data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.opus.summary.text), data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.opus.summary.rich_text_nodes),
15967
16005
  image_url: cardData.item.pictures && cover(cardData.item.pictures),
@@ -15973,7 +16011,7 @@ var Bilibilipush = class extends Base {
15973
16011
  case DynamicType.WORD:
15974
16012
  param = {
15975
16013
  username: checkvip(data$1[dynamicId].Dynamic_Data.orig.modules.module_author),
15976
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
16014
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts),
15977
16015
  avatar_url: data$1[dynamicId].Dynamic_Data.orig.modules.module_author.face,
15978
16016
  text: replacetext(br$1(data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.opus.summary.text), data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.opus.summary.rich_text_nodes),
15979
16017
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.decoration_card),
@@ -15984,7 +16022,7 @@ var Bilibilipush = class extends Base {
15984
16022
  const liveData = JSON.parse(data$1[dynamicId].Dynamic_Data.orig.modules.module_dynamic.major.live_rcmd.content);
15985
16023
  param = {
15986
16024
  username: checkvip(data$1[dynamicId].Dynamic_Data.orig.modules.module_author),
15987
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
16025
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pub_ts),
15988
16026
  avatar_url: data$1[dynamicId].Dynamic_Data.orig.modules.module_author.face,
15989
16027
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.orig.modules.module_author.decoration_card),
15990
16028
  frame: data$1[dynamicId].Dynamic_Data.orig.modules.module_author.pendant.image,
@@ -16006,7 +16044,7 @@ var Bilibilipush = class extends Base {
16006
16044
  dianzan: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.like.count),
16007
16045
  pinglun: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.comment.count),
16008
16046
  share: Count(data$1[dynamicId].Dynamic_Data.modules.module_stat.forward.count),
16009
- create_time: data$1[dynamicId].Dynamic_Data.modules.module_author.pub_time,
16047
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
16010
16048
  avatar_url: data$1[dynamicId].Dynamic_Data.modules.module_author.face,
16011
16049
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
16012
16050
  share_url: "https://t.bilibili.com/" + data$1[dynamicId].Dynamic_Data.id_str,
@@ -16017,7 +16055,7 @@ var Bilibilipush = class extends Base {
16017
16055
  following_count: Count(userINFO.data.data.card.attention),
16018
16056
  dynamicTYPE: "转发动态推送",
16019
16057
  decoration_card: generateDecorationCard(data$1[dynamicId].Dynamic_Data.modules.module_author.decorate),
16020
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
16058
+ render_time: TimeFormatter.now(),
16021
16059
  original_content: { [data$1[dynamicId].Dynamic_Data.orig.type]: param },
16022
16060
  imgList: imgList.length > 0 ? imgList : null
16023
16061
  });
@@ -16038,7 +16076,7 @@ var Bilibilipush = class extends Base {
16038
16076
  username: checkvip(data$1[dynamicId].Dynamic_Data.modules.module_author),
16039
16077
  avatar_url: data$1[dynamicId].Dynamic_Data.modules.module_author.face,
16040
16078
  frame: data$1[dynamicId].Dynamic_Data.modules.module_author.pendant.image,
16041
- create_time: format(fromUnixTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts), "yyyy-MM-dd HH:mm"),
16079
+ create_time: TimeFormatter.toDateTime(data$1[dynamicId].Dynamic_Data.modules.module_author.pub_ts),
16042
16080
  user_shortid: data$1[dynamicId].host_mid,
16043
16081
  fans: Count(userINFO.data.data.follower),
16044
16082
  total_favorited: Count(userINFO.data.data.like_num),
@@ -16051,7 +16089,7 @@ var Bilibilipush = class extends Base {
16051
16089
  opus: articleContent.opus || void 0,
16052
16090
  content: articleContent.content || void 0,
16053
16091
  stats: articleData.stats,
16054
- render_time: format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"),
16092
+ render_time: TimeFormatter.now(),
16055
16093
  share_url: articleContent.dyn_id_str ? `https://www.bilibili.com/opus/${articleContent.dyn_id_str}` : `https://www.bilibili.com/read/cv${articleContent.id}`,
16056
16094
  dynamicTYPE: "专栏动态推送"
16057
16095
  });
@@ -16203,7 +16241,7 @@ var Bilibilipush = class extends Base {
16203
16241
  const is_top = dynamic.modules.module_tag?.text === "置顶";
16204
16242
  let shouldPush = false;
16205
16243
  const timeDiffHours = Math.round(timeDifference / 3600 * 100) / 100;
16206
- logger.trace(`\n 前期获取该动态基本信息:\n UP主:${dynamic.modules.module_author.name}\n 动态ID:${dynamic.id_str}\n 发布时间:${format(fromUnixTime(createTime), "yyyy-MM-dd HH:mm")}\n 发布时间戳(s):${createTime}\n 当前时间戳(s):${nowSeconds}\n 时间差(s):${timeDifference}s (${timeDiffHours}h)\n 是否置顶:${is_top}\n 是否在一天内:${timeDifference < 86400 ? logger.green("true") : logger.red("false")}\n `);
16244
+ logger.trace(`\n 前期获取该动态基本信息:\n UP主:${dynamic.modules.module_author.name}\n 动态ID:${dynamic.id_str}\n 发布时间:${TimeFormatter.toDateTime(createTime)}\n 发布时间戳(s):${createTime}\n 当前时间戳(s):${nowSeconds}\n 时间差(s):${timeDifference}s (${timeDiffHours}h)\n 是否置顶:${is_top}\n 是否在一天内:${timeDifference < 86400 ? logger.green("true") : logger.red("false")}\n `);
16207
16245
  if (is_top && timeDifference < 86400 || timeDifference < 86400) {
16208
16246
  shouldPush = true;
16209
16247
  logger.trace(logger.green(`根据以上判断,shoulPush 为 true,将对该动态纳入当天推送列表:https://t.bilibili.com/${dynamic.id_str}\n`));
@@ -17369,11 +17407,14 @@ var DouYinpush = class extends Base {
17369
17407
  status = await karin$1.sendMsg(botId, Contact, img$2 ? [...img$2] : []);
17370
17408
  if (pushItem.living && "room_data" in pushItem.Detail_Data && status.message_id) await douyinDBInstance.updateLiveStatus(pushItem.sec_uid, true);
17371
17409
  if (Config.douyin.push.parsedynamic && status.message_id) {
17410
+ logger.debug(`开始解析作品,类型为:${iddata.is_mp4 ? "视频" : "图集"}`);
17372
17411
  if (iddata.is_mp4) try {
17373
17412
  let downloadUrl = `https://aweme.snssdk.com/aweme/v1/play/?video_id=${Detail_Data.video.play_addr.uri}&ratio=1080p&line=0`;
17374
17413
  logger.debug(`开始排除不符合条件的视频分辨率;\n\n 共拥有${logger.yellow(Detail_Data.video.bit_rate.length)}个视频源\n\n 视频ID:${logger.green(Detail_Data.aweme_id)}\n\n 分享链接:${logger.green(Detail_Data.share_url)}\n `);
17414
+ const videoObj = douyinProcessVideos(Detail_Data.video.bit_rate, Config.douyin.videoQuality);
17415
+ logger.debug("获取精确下载地址");
17375
17416
  downloadUrl = await new Network({
17376
- url: douyinProcessVideos(Detail_Data.video.bit_rate, Config.douyin.videoQuality)[0].play_addr.url_list[0],
17417
+ url: videoObj[0].play_addr.url_list[0],
17377
17418
  headers: douyinBaseHeaders
17378
17419
  }).getLongLink();
17379
17420
  await downloadVideo(this.e, {