karin-plugin-kkk 1.6.0 → 1.6.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
@@ -1,5 +1,22 @@
1
1
  # 变更日志
2
2
 
3
+ ## [1.6.2](https://github.com/ikenxuan/karin-plugin-kkk/compare/v1.6.1...v1.6.2) (2025-05-14)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * vipStatus ([f7f1a80](https://github.com/ikenxuan/karin-plugin-kkk/commit/f7f1a8096acaa01388b8e2b04137c8d60f95c683))
9
+
10
+ ## [1.6.1](https://github.com/ikenxuan/karin-plugin-kkk/compare/v1.6.0...v1.6.1) (2025-05-14)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * close [#88](https://github.com/ikenxuan/karin-plugin-kkk/issues/88) ([8ef73bc](https://github.com/ikenxuan/karin-plugin-kkk/commit/8ef73bc2fc1c24b43070d93adc3a1d3180231926))
16
+ * send msg ([884b8e0](https://github.com/ikenxuan/karin-plugin-kkk/commit/884b8e0a27b9973ddf576923f2fd0e5d35bd04c8))
17
+ * 简化抖音推送群组目标处理逻辑 ([f32d971](https://github.com/ikenxuan/karin-plugin-kkk/commit/f32d9718817dfb1e7ef6141a49d8a12245bccdef))
18
+ * 类型安全 ([1cf5f7f](https://github.com/ikenxuan/karin-plugin-kkk/commit/1cf5f7f4132a6f478ca821132baa88a246e80df3))
19
+
3
20
  ## [1.6.0](https://github.com/ikenxuan/karin-plugin-kkk/compare/v1.5.0...v1.6.0) (2025-05-12)
4
21
 
5
22
 
@@ -35,6 +35,14 @@ autoResolution: true
35
35
  # 谁可以触发扫码登录,all为所有人,admin为管理员,master为主人,group.owner为群主,group.admin为群管理员。修改后需重启
36
36
  loginPerm: master
37
37
 
38
+ # 视频解析时显示的内容,可选值:'cover'(封面)、'title'(标题)、'author'(作者)、'stats'(视频统计信息)、'desc'(简介),数组为空则不显示任何内容
39
+ displayContent:
40
+ - cover
41
+ - title
42
+ - author
43
+ - stats
44
+ - desc
45
+
38
46
  # B站推送相关配置
39
47
  push:
40
48
  # 推送开关,开启后需重启;使用「#设置B站推送 + 用户UID」配置推送列表
package/lib/apps/admin.js CHANGED
@@ -2,12 +2,12 @@ import fs from "node:fs";
2
2
  import karin, { segment, common, handler, logger } from "node-karin";
3
3
  import require$$1 from "path";
4
4
  import "sequelize";
5
- import { g as getBilibiliData, f as browserExports, C as Common, a as Config } from "../chunk/index-DRX4XSDJ.js";
5
+ import { g as getBilibiliData, f as browserExports, C as Common, a as Config } from "../chunk/index-Dp9gQN2I.js";
6
6
  import { Version } from "../Version.js";
7
7
  import "node-karin/axios";
8
8
  import "stream/promises";
9
9
  import "node:path";
10
- import "../chunk/push-D60CjIo9.js";
10
+ import "../chunk/push-BIWMkxj6.js";
11
11
  import "../chunk/index-BDlGFCbK.js";
12
12
  import { execSync, spawn } from "node:child_process";
13
13
  import { chromium } from "playwright";
package/lib/apps/help.js CHANGED
@@ -4,7 +4,7 @@ import { m as markdown } from "../chunk/index-BDlGFCbK.js";
4
4
  import karin, { mkdirSync, render, segment, isPackaged, updatePkg, updateGitPlugin, logger, common, restart } from "node-karin";
5
5
  import { karinPathTemp } from "node-karin/root";
6
6
  import "sequelize";
7
- import { R as Render, a as Config, C as Common } from "../chunk/index-DRX4XSDJ.js";
7
+ import { R as Render, a as Config, C as Common } from "../chunk/index-Dp9gQN2I.js";
8
8
  import { Version } from "../Version.js";
9
9
  import "node-karin/axios";
10
10
  import "stream/promises";
package/lib/apps/push.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as Config, B as Bilibilipush, h as getDouyinData, g as getBilibiliData } from "../chunk/index-DRX4XSDJ.js";
1
+ import { a as Config, B as Bilibilipush, h as getDouyinData, g as getBilibiliData } from "../chunk/index-Dp9gQN2I.js";
2
2
  import karin from "node-karin";
3
3
  import "sequelize";
4
4
  import "../Version.js";
@@ -6,7 +6,7 @@ import "node:fs";
6
6
  import "node-karin/axios";
7
7
  import "stream/promises";
8
8
  import "node:path";
9
- import { D as DouYinpush } from "../chunk/push-D60CjIo9.js";
9
+ import { D as DouYinpush } from "../chunk/push-BIWMkxj6.js";
10
10
  import "../chunk/index-BDlGFCbK.js";
11
11
  import "node:child_process";
12
12
  import "playwright";
package/lib/apps/tools.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import karin, { logger } from "node-karin";
2
2
  import "sequelize";
3
- import { N as Networks, a as Config, e as Client, i as Base, R as Render, j as downloadVideo, k as Bilibili, C as Common } from "../chunk/index-DRX4XSDJ.js";
3
+ import { N as Networks, a as Config, e as Client, i as Base, R as Render, j as downloadVideo, k as Bilibili, C as Common } from "../chunk/index-Dp9gQN2I.js";
4
4
  import "../Version.js";
5
5
  import "node:fs";
6
6
  import "node-karin/axios";
7
7
  import "stream/promises";
8
8
  import "node:path";
9
- import { g as getDouyinID, a as DouYin } from "../chunk/push-D60CjIo9.js";
9
+ import { g as getDouyinID, a as DouYin } from "../chunk/push-BIWMkxj6.js";
10
10
  import "node:child_process";
11
11
  import "playwright";
12
12
  async function getBilibiliID(url) {
@@ -30302,19 +30302,30 @@ class Bilibili extends Base {
30302
30302
  }) + "&platform=html5",
30303
30303
  headers: this.headers
30304
30304
  }).getData();
30305
- await this.e.reply([
30306
- segment.image(pic),
30307
- `
30305
+ const replyContent = [];
30306
+ if (Config.bilibili.displayContent && Config.bilibili.displayContent.length > 0) {
30307
+ const contentMap = {
30308
+ cover: segment.image(pic),
30309
+ title: `
30308
30310
  📺 标题: ${title}
30309
30311
  `,
30310
- `
30312
+ author: `
30311
30313
  👤 作者: ${name}
30312
30314
  `,
30313
- this.formatVideoStats(view2, danmaku, like, coin, share, favorite),
30314
- `
30315
+ stats: this.formatVideoStats(view2, danmaku, like, coin, share, favorite),
30316
+ desc: `
30315
30317
 
30316
30318
  📝 简介: ${desc}`
30317
- ]);
30319
+ };
30320
+ Config.bilibili.displayContent.forEach((item) => {
30321
+ if (contentMap[item]) {
30322
+ replyContent.push(contentMap[item]);
30323
+ }
30324
+ });
30325
+ if (replyContent.length > 0) {
30326
+ await this.e.reply(replyContent.reverse());
30327
+ }
30328
+ }
30318
30329
  let videoSize = "";
30319
30330
  let correctList;
30320
30331
  if (this.islogin) {
@@ -30839,7 +30850,7 @@ ${line3}`;
30839
30850
  }
30840
30851
  }
30841
30852
  function checkvip$2(member) {
30842
- return member.vip.vipStatus || 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>`;
30853
+ return 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>`;
30843
30854
  }
30844
30855
  function br$2(data2) {
30845
30856
  return data2 = data2.replace(/\n/g, "<br>");
@@ -31146,7 +31157,7 @@ function checklevel(obj) {
31146
31157
  return obj;
31147
31158
  }
31148
31159
  function checkvip$1(member) {
31149
- return member.vip.vipStatus === 1 ? `<span style="color: ${member.vip.nickname_color ?? "#FB7299"}; font-weight: 700;">${member.uname}</span>` : `<span style="color: #888">${member.uname}</span>`;
31160
+ return member.vip.status === 1 ? `<span style="color: ${member.vip.nickname_color ?? "#FB7299"}; font-weight: 700;">${member.uname}</span>` : `<span style="color: #888">${member.uname}</span>`;
31150
31161
  }
31151
31162
  function getRelativeTimeFromTimestamp(timestamp) {
31152
31163
  const now2 = Math.floor(Date.now() / 1e3);
@@ -33383,10 +33394,10 @@ class Bilibilipush extends Base {
33383
33394
  let skip = await skipDynamic(data2[dynamicId]);
33384
33395
  let send_video = true;
33385
33396
  let img2 = [];
33386
- const dynamicCARDINFO = await this.amagi.getBilibiliData("动态卡片数据", { dynamic_id: dynamicId });
33397
+ const dynamicCARDINFO = await this.amagi.getBilibiliData("动态卡片数据", { dynamic_id: dynamicId, typeMode: "strict" });
33387
33398
  const dycrad = dynamicCARDINFO.data.card && dynamicCARDINFO.data.card.card && JSON.parse(dynamicCARDINFO.data.card.card);
33388
33399
  if (!skip) {
33389
- const userINFO = await this.amagi.getBilibiliData("用户主页数据", { host_mid: data2[dynamicId].host_mid });
33400
+ const userINFO = await this.amagi.getBilibiliData("用户主页数据", { host_mid: data2[dynamicId].host_mid, typeMode: "strict" });
33390
33401
  let emojiDATA = await this.amagi.getBilibiliData("Emoji数据");
33391
33402
  emojiDATA = extractEmojisData(emojiDATA.data.packages);
33392
33403
  logger$2.debug(`UP: ${data2[dynamicId].remark}
@@ -33467,12 +33478,12 @@ https://t.bilibili.com/${dynamicId}`);
33467
33478
  if (data2[dynamicId].Dynamic_Data.modules.module_dynamic.major.type === "MAJOR_TYPE_ARCHIVE") {
33468
33479
  const aid = data2[dynamicId].Dynamic_Data.modules.module_dynamic.major.archive.aid;
33469
33480
  const bvid = data2[dynamicId].Dynamic_Data.modules.module_dynamic.major.archive.bvid;
33470
- const INFODATA = await getBilibiliData("单个视频作品数据", "", { bvid });
33481
+ const INFODATA = await getBilibiliData("单个视频作品数据", "", { bvid, typeMode: "strict" });
33471
33482
  if (INFODATA.data.redirect_url) {
33472
33483
  send_video = false;
33473
33484
  logger$2.debug(`UP主:${INFODATA.data.owner.name} 的该动态类型为${logger$2.yellow("番剧或影视")},默认跳过不下载,直达:${logger$2.green(INFODATA.data.redirect_url)}`);
33474
33485
  } else {
33475
- await getBilibiliData("单个视频下载信息数据", "", { avid: aid, cid: INFODATA.data.cid });
33486
+ await getBilibiliData("单个视频下载信息数据", "", { avid: aid, cid: INFODATA.data.cid, typeMode: "strict" });
33476
33487
  }
33477
33488
  img2 = await Render(
33478
33489
  "bilibili/dynamic/DYNAMIC_TYPE_AV",
@@ -33543,7 +33554,7 @@ https://t.bilibili.com/${dynamicId}`);
33543
33554
  break;
33544
33555
  }
33545
33556
  case "DYNAMIC_TYPE_DRAW": {
33546
- const dynamicCARD = await getBilibiliData("动态卡片数据", Config.cookies.bilibili, { dynamic_id: data2[dynamicId].Dynamic_Data.orig.id_str });
33557
+ const dynamicCARD = await getBilibiliData("动态卡片数据", Config.cookies.bilibili, { dynamic_id: data2[dynamicId].Dynamic_Data.orig.id_str, typeMode: "strict" });
33547
33558
  const cardData = JSON.parse(dynamicCARD.data.card.card);
33548
33559
  param = {
33549
33560
  username: checkvip(data2[dynamicId].Dynamic_Data.orig.modules.module_author),
@@ -33625,7 +33636,7 @@ https://t.bilibili.com/${dynamicId}`);
33625
33636
  const { groupId, botId } = target;
33626
33637
  const bot = karin$1.getBot(botId);
33627
33638
  const Contact = karin$1.contactGroup(groupId);
33628
- status = await bot.sendMsg(Contact, img2 ? [...img2] : []);
33639
+ status = await karin$1.sendMsg(botId, Contact, img2 ? [...img2] : []);
33629
33640
  if (Config.bilibili.push.parsedynamic) {
33630
33641
  switch (data2[dynamicId].dynamic_type) {
33631
33642
  case "DYNAMIC_TYPE_AV": {
@@ -33653,7 +33664,8 @@ https://t.bilibili.com/${dynamicId}`);
33653
33664
  playUrlData.data.accept_description = correctList.accept_description;
33654
33665
  videoSize = await getvideosize(correctList.videoList[0].base_url, playUrlData.data.dash.audio[0].base_url, dynamicCARDINFO.data.card.desc.bvid);
33655
33666
  if (Config.upload.usefilelimit && Number(videoSize) > Number(Config.upload.filelimit) && !Config.upload.compress) {
33656
- await bot.sendMsg(
33667
+ await karin$1.sendMsg(
33668
+ botId,
33657
33669
  Contact,
33658
33670
  [
33659
33671
  segment.text(`设定的最大上传大小为 ${Config.upload.filelimit}MB
@@ -33920,7 +33932,7 @@ UID:${host_mid}`);
33920
33932
  }
33921
33933
  if (abclist.length > 0) {
33922
33934
  for (const i of abclist) {
33923
- const resp = await this.amagi.getBilibiliData("用户主页数据", { host_mid: i.host_mid });
33935
+ const resp = await this.amagi.getBilibiliData("用户主页数据", { host_mid: i.host_mid, typeMode: "strict" });
33924
33936
  const remark = resp.data.card.name;
33925
33937
  const matchingItemIndex = config.bilibili.findIndex((item) => item.host_mid === i.host_mid);
33926
33938
  if (matchingItemIndex !== -1) {
@@ -33989,7 +34001,7 @@ function br(data2) {
33989
34001
  return data2 = data2.replace(/\n/g, "<br>");
33990
34002
  }
33991
34003
  function checkvip(member) {
33992
- return member.vip.vipStatus === 1 ? `<span style="color: ${member.vip.nickname_color ?? "#FB7299"}; font-weight: 700;">${member.name}</span>` : `<span style="color: ${Common.useDarkTheme() ? "#EDEDED" : "#606060"}">${member.name}</span>`;
34004
+ return member.vip.status === 1 ? `<span style="color: ${member.vip.nickname_color ?? "#FB7299"}; font-weight: 700;">${member.name}</span>` : `<span style="color: ${Common.useDarkTheme() ? "#EDEDED" : "#606060"}">${member.name}</span>`;
33993
34005
  }
33994
34006
  function extractEmojisData(data2) {
33995
34007
  const emojisData = [];
@@ -3,7 +3,7 @@ import { dirname } from "node:path";
3
3
  const __filename = fileURLToPath(import.meta.url);
4
4
  const __dirname = dirname(__filename);
5
5
  import { logger, segment, render, common, mkdirSync, karin } from "node-karin";
6
- import { h as getDouyinData, a as Config, C as Common, N as Networks, i as Base, R as Render, m as Count, f as browserExports, n as downloadFile, o as mergeFile, j as downloadVideo, p as cleanOldDynamicCache, q as douyinDB, s as baseHeaders } from "./index-DRX4XSDJ.js";
6
+ import { h as getDouyinData, a as Config, C as Common, N as Networks, i as Base, R as Render, m as Count, f as browserExports, n as downloadFile, o as mergeFile, j as downloadVideo, p as cleanOldDynamicCache, q as douyinDB, s as baseHeaders } from "./index-Dp9gQN2I.js";
7
7
  import { Version } from "../Version.js";
8
8
  import require$$0 from "util";
9
9
  import require$$1 from "stream";
@@ -7657,7 +7657,7 @@ class DouYinpush extends Base {
7657
7657
  let status = { message_id: "" };
7658
7658
  const bot = karin.getBot(botId);
7659
7659
  const Contact = karin.contactGroup(groupId);
7660
- status = await bot.sendMsg(Contact, img2 ? [...img2] : []);
7660
+ status = await karin.sendMsg(botId, Contact, img2 ? [...img2] : []);
7661
7661
  if (pushItem.living && "room_data" in pushItem.Detail_Data && status.message_id) {
7662
7662
  await douyinDB.updateLiveStatus(pushItem.sec_uid, true);
7663
7663
  }
@@ -7673,9 +7673,9 @@ class DouYinpush extends Base {
7673
7673
 
7674
7674
  共拥有${logger.yellow(Detail_Data.video.bit_rate.length)}个视频源
7675
7675
 
7676
- 视频ID:${logger.green(Detail_Data.VideoData.aweme_detail.aweme_id)}
7676
+ 视频ID:${logger.green(Detail_Data.aweme_id)}
7677
7677
 
7678
- 分享链接:${logger.green(Detail_Data.VideoData.aweme_detail.share_url)}
7678
+ 分享链接:${logger.green(Detail_Data.share_url)}
7679
7679
  `);
7680
7680
  const videoObj = douyinProcessVideos(Detail_Data.video.bit_rate, Config.upload.filelimit);
7681
7681
  downloadUrl = await new Networks({
@@ -7722,18 +7722,12 @@ class DouYinpush extends Base {
7722
7722
  try {
7723
7723
  for (const item of userList) {
7724
7724
  const sec_uid = item.sec_uid;
7725
- const videolist = await this.amagi.getDouyinData("用户主页视频列表数据", { sec_uid });
7726
- const userinfo = await this.amagi.getDouyinData("用户主页数据", { sec_uid });
7727
- const subscriptions = await douyinDB.getUserSubscribedGroups(sec_uid);
7728
- const targets = [];
7729
- for (const sub of subscriptions) {
7730
- const groupId = sub.get("groupId");
7731
- const groupModel = await douyinDB.getGroupById(groupId);
7732
- if (groupModel) {
7733
- const botId = groupModel.get("botId");
7734
- targets.push({ groupId, botId });
7735
- }
7736
- }
7725
+ const videolist = await this.amagi.getDouyinData("用户主页视频列表数据", { sec_uid, typeMode: "strict" });
7726
+ const userinfo = await this.amagi.getDouyinData("用户主页数据", { sec_uid, typeMode: "strict" });
7727
+ const targets = item.group_id.map((groupWithBot) => {
7728
+ const [groupId, botId] = groupWithBot.split(":");
7729
+ return { groupId, botId };
7730
+ });
7737
7731
  if (targets.length === 0) continue;
7738
7732
  if (videolist.aweme_list.length > 0) {
7739
7733
  for (const aweme of videolist.aweme_list) {
@@ -7773,7 +7767,7 @@ class DouYinpush extends Base {
7773
7767
  }
7774
7768
  const liveStatus = await douyinDB.getLiveStatus(sec_uid);
7775
7769
  if (userinfo.user.live_status === 1) {
7776
- const liveInfo = await this.amagi.getDouyinData("直播间信息数据", { sec_uid: userinfo.user.sec_uid });
7770
+ const liveInfo = await this.amagi.getDouyinData("直播间信息数据", { sec_uid: userinfo.user.sec_uid, typeMode: "strict" });
7777
7771
  if (!liveStatus.living) {
7778
7772
  willbepushlist[`live_${sec_uid}`] = {
7779
7773
  remark: item.remark,
@@ -7836,7 +7830,7 @@ class DouYinpush extends Base {
7836
7830
  index++;
7837
7831
  }
7838
7832
  const sec_uid = data.data[index].user_list[0].user_info.sec_uid;
7839
- const UserInfoData = await this.amagi.getDouyinData("用户主页数据", { sec_uid });
7833
+ const UserInfoData = await this.amagi.getDouyinData("用户主页数据", { sec_uid, typeMode: "strict" });
7840
7834
  let user_shortid;
7841
7835
  UserInfoData.user.unique_id === "" ? user_shortid = UserInfoData.user.short_id : user_shortid = UserInfoData.user.unique_id;
7842
7836
  config.douyin ??= [];
@@ -7980,7 +7974,7 @@ sec_uid${UserInfoData.user.sec_uid}`);
7980
7974
  }
7981
7975
  if (updateList.length > 0) {
7982
7976
  for (const i of updateList) {
7983
- const userinfo = await this.amagi.getDouyinData("用户主页数据", { sec_uid: i.sec_uid });
7977
+ const userinfo = await this.amagi.getDouyinData("用户主页数据", { sec_uid: i.sec_uid, typeMode: "strict" });
7984
7978
  const remark = userinfo.user.nickname;
7985
7979
  const matchingItemIndex = config.douyin.findIndex((item) => item.sec_uid === i.sec_uid);
7986
7980
  if (matchingItemIndex !== -1) {
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as Common, a as Config, l as logMiddleware, r as registerBilibiliRoutes, b as registerDouyinRoutes, c as registerKuaishouRoutes, d as logger$2, e as Client } from "./chunk/index-DRX4XSDJ.js";
1
+ import { C as Common, a as Config, l as logMiddleware, r as registerBilibiliRoutes, b as registerDouyinRoutes, c as registerKuaishouRoutes, d as logger$2, e as Client } from "./chunk/index-Dp9gQN2I.js";
2
2
  import require$$0 from "util";
3
3
  import require$$0$1 from "url";
4
4
  import require$$0$2 from "http";
@@ -1036,7 +1036,7 @@ function requireCommon() {
1036
1036
  createDebug.namespaces = namespaces;
1037
1037
  createDebug.names = [];
1038
1038
  createDebug.skips = [];
1039
- const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(" ", ",").split(",").filter(Boolean);
1039
+ const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
1040
1040
  for (const ns of split) {
1041
1041
  if (ns[0] === "-") {
1042
1042
  createDebug.skips.push(ns.slice(1));
@@ -1255,7 +1255,7 @@ function requireBrowser() {
1255
1255
  function load() {
1256
1256
  let r;
1257
1257
  try {
1258
- r = exports.storage.getItem("debug");
1258
+ r = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG");
1259
1259
  } catch (error) {
1260
1260
  }
1261
1261
  if (!r && typeof process !== "undefined" && "env" in process) {
package/lib/web.config.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { defineConfig, components } from "node-karin";
2
2
  import _ from "node-karin/lodash";
3
3
  import "sequelize";
4
- import { a as Config } from "./chunk/index-DRX4XSDJ.js";
4
+ import { a as Config } from "./chunk/index-Dp9gQN2I.js";
5
5
  import "./Version.js";
6
6
  import "node:fs";
7
7
  import "node-karin/axios";
@@ -438,6 +438,34 @@ const web_config = defineConfig({
438
438
  })
439
439
  ]
440
440
  }),
441
+ components.checkbox.group("displayContent", {
442
+ label: "评论解析前返回的内容",
443
+ description: "若什么都不选,则不会返回任何视频相关信息",
444
+ orientation: "horizontal",
445
+ defaultValue: all.bilibili.displayContent,
446
+ checkbox: [
447
+ components.checkbox.create("displayContent:checkbox:1", {
448
+ label: "封面",
449
+ value: "cover"
450
+ }),
451
+ components.checkbox.create("displayContent:checkbox:2", {
452
+ label: "标题",
453
+ value: "title"
454
+ }),
455
+ components.checkbox.create("displayContent:checkbox:3", {
456
+ label: "作者",
457
+ value: "author"
458
+ }),
459
+ components.checkbox.create("displayContent:checkbox:4", {
460
+ label: "视频统计信息",
461
+ value: "stats"
462
+ }),
463
+ components.checkbox.create("displayContent:checkbox:5", {
464
+ label: "简介",
465
+ value: "desc"
466
+ })
467
+ ]
468
+ }),
441
469
  components.divider.create("divider-bilibili-1", {
442
470
  description: "B站推送相关",
443
471
  descPosition: 20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karin-plugin-kkk",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "Karin 的「抖音」「B 站」视频解析/动态推送插件",
5
5
  "keywords": [
6
6
  "karin-plugin",