karin-plugin-kkk 2.45.2-beta.4 → 2.45.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/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [2.45.2](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.45.1...v2.45.2) (2026-10-30)
6
+
7
+
8
+ ### 🐛 错误修复
9
+
10
+ * 修复部分版权番剧缺少 up_info 时海报渲染失败 ([8480cec](https://github.com/ikenxuan/karin-plugin-kkk/commit/8480cecec639db79eaad1c74e7c1e4a1533eda20))
11
+
5
12
  ## [2.45.2-beta.4](https://github.com/ikenxuan/karin-plugin-kkk/compare/v2.45.2-beta.3...v2.45.2-beta.4) (2026-10-30)
6
13
 
7
14
 
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "2.45.2-beta.4",
3
- "buildTime": "2026-10-30T04:20:27.192Z",
4
- "buildTimestamp": 1793334027192,
2
+ "version": "2.45.2",
3
+ "buildTime": "2026-10-30T08:40:41.138Z",
4
+ "buildTimestamp": 1793349641139,
5
5
  "name": "karin-plugin-kkk",
6
6
  "description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
7
7
  "homepage": "https://github.com/ikenxuan/karin-plugin-kkk",
8
- "commitHash": "29f57d7182fc227b406d28ea2d60551096586588",
9
- "shortCommitHash": "29f57d71"
8
+ "commitHash": "08627f1081567933c82aad2fe5f7b75095687520",
9
+ "shortCommitHash": "08627f10"
10
10
  }
@@ -12002,6 +12002,17 @@ var parseCredits = (raw) => {
12002
12002
  voiceCount: (/* @__PURE__ */ new Set([...cast.map((item) => item.actor), ...extras])).size
12003
12003
  };
12004
12004
  };
12005
+ /** 版权番剧没有 up_info 时,从制作人员里取制作公司:优先「动画制作」,其次「制作/製作」 */
12006
+ var parseMaker = (raw) => {
12007
+ let fallback = "";
12008
+ for (const line of (raw || "").split(/\r?\n/)) {
12009
+ const match = /^\s*(动画制作公司|动画制作|制作公司|制作|製作)[::]\s*(.+?)\s*$/.exec(line);
12010
+ if (!match) continue;
12011
+ if (/动画制作/.test(match[1])) return match[2];
12012
+ if (!fallback) fallback = match[2];
12013
+ }
12014
+ return fallback;
12015
+ };
12005
12016
  /** 发布日期统一写成 2026.10.24,等宽数字列对齐,跨年也不歧义 */
12006
12017
  var formatPubDate = (seconds) => seconds > 0 ? format(/* @__PURE__ */ new Date(seconds * 1e3), "yyyy.MM.dd") : "";
12007
12018
  /** 按展示顺序(最新在前)写区间;只有一集时写「第 a 集」 */
@@ -12519,16 +12530,19 @@ var EpisodeGrid$1 = ({ items, dark, isLastPage, pageCount, listed, mode }) => {
12519
12530
  });
12520
12531
  };
12521
12532
  /** 版权栏:左侧列出数量、UP 主与 season 号,右侧生成时间 */
12522
- var Colophon$1 = ({ notes }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", {
12523
- className: "flex items-start justify-between gap-10 pt-7 text-[24px] leading-relaxed text-foreground/65",
12524
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
12525
- className: "min-w-0",
12526
- children: notes.join(" · ")
12527
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
12528
- className: "shrink-0 select-text",
12529
- children: ["图片生成于: ", format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss")]
12530
- })]
12531
- });
12533
+ var Colophon$1 = ({ notes }) => {
12534
+ const [generatedAt] = import_react.useState(() => format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"));
12535
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", {
12536
+ className: "flex items-start justify-between gap-10 pt-7 text-[24px] leading-relaxed text-foreground/65",
12537
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
12538
+ className: "min-w-0",
12539
+ children: notes.join(" · ")
12540
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
12541
+ className: "shrink-0 select-text",
12542
+ children: ["图片生成于: ", generatedAt]
12543
+ })]
12544
+ });
12545
+ };
12532
12546
  var BangumiBilibili = import_react.memo((props) => {
12533
12547
  const { data, ctx } = props;
12534
12548
  const dark = isDark(ctx);
@@ -12566,9 +12580,11 @@ var BangumiBilibili = import_react.memo((props) => {
12566
12580
  ...splitCount$1(data.Stat.coins)
12567
12581
  }
12568
12582
  ];
12583
+ const maker = data.UPInfo ? "" : parseMaker(data.Staff ?? "");
12584
+ const upNote = data.UPInfo ? `UP 主 ${data.UPInfo.uname} · 粉丝 ${Object.values(splitCount$1(data.UPInfo.follower)).join("")}` : [maker && `制作 ${maker}`, data.Stat.follow_text].filter(Boolean).join(" · ");
12569
12585
  const notes = [
12570
12586
  `已列出 ${numbered.length} 集`,
12571
- `UP 主 ${data.UPInfo.uname} · 粉丝 ${Object.values(splitCount$1(data.UPInfo.follower)).join("")}`,
12587
+ ...upNote ? [upNote] : [],
12572
12588
  ...data.seasonID ? [`ss${data.seasonID}`] : []
12573
12589
  ];
12574
12590
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DefaultLayout, {
@@ -19529,16 +19545,19 @@ var EpisodeGrid = ({ episodes, isPlaylet, isLastPage, pageCount, listed, mode })
19529
19545
  });
19530
19546
  };
19531
19547
  /** 版权栏:左侧列出数量与缺集说明,右侧生成时间 */
19532
- var Colophon = ({ notes }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", {
19533
- className: "flex items-start justify-between gap-10 pt-7 text-[24px] leading-relaxed text-foreground/65",
19534
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19535
- className: "min-w-0",
19536
- children: notes.join(" · ")
19537
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
19538
- className: "shrink-0 select-text",
19539
- children: ["图片生成于: ", format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss")]
19540
- })]
19541
- });
19548
+ var Colophon = ({ notes }) => {
19549
+ const [generatedAt] = import_react.useState(() => format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss"));
19550
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", {
19551
+ className: "flex items-start justify-between gap-10 pt-7 text-[24px] leading-relaxed text-foreground/65",
19552
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19553
+ className: "min-w-0",
19554
+ children: notes.join(" · ")
19555
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
19556
+ className: "shrink-0 select-text",
19557
+ children: ["图片生成于: ", generatedAt]
19558
+ })]
19559
+ });
19560
+ };
19542
19561
  var DouyinMix = import_react.memo((props) => {
19543
19562
  const { data, ctx } = props;
19544
19563
  const isPlaylet = data.kind === "playlet";
@@ -32839,6 +32858,7 @@ var Bilibili = class extends Base {
32839
32858
  seasonID: videoInfo.data.result.season_id,
32840
32859
  subtitle: videoInfo.data.result.subtitle,
32841
32860
  UPInfo: videoInfo.data.result.up_info,
32861
+ Staff: videoInfo.data.result.staff,
32842
32862
  Copyright: videoInfo.data.result.rights.copyright,
32843
32863
  Stat: videoInfo.data.result.stat,
32844
32864
  Episodes: displayEpisodes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karin-plugin-kkk",
3
- "version": "2.45.2-beta.4",
3
+ "version": "2.45.2",
4
4
  "description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
5
5
  "keywords": [
6
6
  "karin",
@@ -83,7 +83,7 @@
83
83
  "@lobehub/webfont-harmony-sans-sc": "^1.0.0",
84
84
  "emoji-datasource-apple": "16.0.0"
85
85
  },
86
- "timestamp": "2026-10-30T04:19:15.528Z",
86
+ "timestamp": "2026-10-30T08:39:28.264Z",
87
87
  "engines": {
88
88
  "node": ">=18.0.0"
89
89
  }