koishi-plugin-kkk 3.7.2 → 3.9.0
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 +48 -0
- package/lib/build-metadata.json +5 -5
- package/lib/index.js +8 -3
- package/lib/karin/module/db/bilibili.js +185 -393
- package/lib/karin/module/db/douyin.js +219 -500
- package/lib/karin/module/db/index.js +30 -5
- package/lib/karin/module/db/model.js +200 -0
- package/lib/karin/module/db/statistics.js +197 -242
- package/lib/karin/module/utils/amagiClient.js +40 -15
- package/lib/karin/platform/douyin/douyin.js +10 -0
- package/lib/karin/setup.js +2 -4
- package/package.json +3 -2
- package/scripts/build.mjs +38 -5
- package/scripts/deploy.mjs +76 -27
- package/scripts/smoke-amagi-capability.cjs +97 -0
- package/scripts/smoke-comments.cjs +164 -0
- package/scripts/smoke-db-koishi.cjs +170 -0
- package/src/index.ts +8 -3
- package/src/karin/module/db/bilibili.ts +189 -448
- package/src/karin/module/db/douyin.ts +219 -587
- package/src/karin/module/db/index.ts +30 -4
- package/src/karin/module/db/model.ts +439 -0
- package/src/karin/module/db/statistics.ts +213 -380
- package/src/karin/module/utils/amagiClient.ts +49 -27
- package/src/karin/platform/douyin/douyin.ts +10 -0
- package/src/karin/setup.ts +2 -4
- package/lib/compat/sqlite3.js +0 -117
- package/lib/karin/module/db/migration.js +0 -199
- package/src/compat/sqlite3.ts +0 -123
- package/src/karin/module/db/migration.ts +0 -249
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## 3.9.0
|
|
4
|
+
|
|
5
|
+
> 插件不再自己建数据库了,全部改用 Koishi 自带的数据库服务。
|
|
6
|
+
> 数据统一落在宿主配置的那个库里(sqlite / mysql / postgres 都行),备份和迁移跟着宿主走,
|
|
7
|
+
> 不用再单独惦记插件数据目录里那几个 `.db` 文件。
|
|
8
|
+
> **代价:过滤词 / 过滤标签和解析统计历史会从零开始**(订阅关系不受影响,每次启动自动从推送列表重建)。
|
|
9
|
+
|
|
10
|
+
### 数据库改用 Koishi 原生数据库服务
|
|
11
|
+
|
|
12
|
+
- 以前插件自己在数据目录里开三个 sqlite 文件(`douyin.db` / `bilibili.db` / `statistics.db`);
|
|
13
|
+
现在所有数据都走 Koishi 的 `ctx.database`,表由插件注册(`kkk.douyin.*` / `kkk.bilibili.*` / `kkk.statistics.*`),
|
|
14
|
+
落在宿主配置的那一个库里(sqlite / mysql / postgres 都行),插件不再创建任何 sqlite 文件。
|
|
15
|
+
- **`database` 服务变成必选**:没有配置数据库插件时 Koishi 会直接不加载本插件(以前是可选的,因为那时插件自己建库)。
|
|
16
|
+
- **旧库不迁移**:三个旧 `.db` 文件保留不动,但不再被读取。订阅关系每次启动都会从配置里的推送列表
|
|
17
|
+
(`config.json` 的 `pushlist`)自动重建,**不受影响**;**过滤词 / 过滤标签、解析统计历史会从零开始**。
|
|
18
|
+
- 想保留过滤词或统计历史的,可以在切换前自己从旧 `.db` 里导出,或改配置里的推送列表重新加过滤规则。
|
|
19
|
+
|
|
20
|
+
## 3.8.0
|
|
21
|
+
|
|
22
|
+
> 抖音解析修好了。抖音那边改了风控规则,**换 cookie 是没用的** —— 问题出在解析用的那个库太旧;
|
|
23
|
+
> 顺带修好快手、小红书的评论区渲染。
|
|
24
|
+
|
|
25
|
+
### 抖音:解析不了 / 一直提示 Cookie 失效
|
|
26
|
+
|
|
27
|
+
- **现象**:发抖音链接,机器人回「抖音没有返回这条作品的数据(错误码 500:抖音数据获取失败),
|
|
28
|
+
常见原因:Cookie 失效、被风控」,可同一个 cookie 换个插件却能正常解析。
|
|
29
|
+
- **原因**:抖音现在要求每个网页接口都带上设备标识(`uifid`)和一套新的签名头
|
|
30
|
+
(`x-secsdk-web-signature`,由抖音自己的风控 SDK 算出来)。
|
|
31
|
+
插件用的解析库 6.6.0 里根本没有这套东西,请求直接被抖音拦下
|
|
32
|
+
(服务器回的是「Blocked by ArgusSecurityPlugin Uifid Not Found」),
|
|
33
|
+
库再把它包成一句「抖音数据获取失败」—— 看起来就像 cookie 过期,怎么换都没用。
|
|
34
|
+
- **处理**:把解析库升到 7.x(目前是 7.0.0-beta.5;npm 上标着「最新」的 6.6.0 反而是坏的)。
|
|
35
|
+
升级后实测:作品详情、评论区、弹幕都正常。
|
|
36
|
+
- 更新完**重启一次机器人**即可;手动 `npm i` 更新插件时会自动装上对应版本的解析库。
|
|
37
|
+
|
|
38
|
+
### 日志更好排查
|
|
39
|
+
|
|
40
|
+
- 以后再遇到这类失败,日志里会直接写明「**多半是解析库版本过旧**」,
|
|
41
|
+
不用再照着「换 cookie、换网络」排查半天。
|
|
42
|
+
|
|
43
|
+
### 修复快手评论渲染
|
|
44
|
+
|
|
45
|
+
- 快手评论区接口以前未实现,现已实现
|
|
46
|
+
|
|
47
|
+
### 修复小红书评论渲染
|
|
48
|
+
|
|
49
|
+
- 小红书评论区接口变更导致失效,现已重新接好,评论能正常显示了
|
|
50
|
+
|
|
3
51
|
## 3.7.2
|
|
4
52
|
|
|
5
53
|
> 群里发的图片**统一改走 markdown** 了 —— 普通图片消息会被 QQ 压得发糊,markdown 图片不会;
|
package/lib/build-metadata.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.
|
|
3
|
-
"buildTime": "2026-09-
|
|
4
|
-
"buildTimestamp":
|
|
2
|
+
"version": "3.9.0",
|
|
3
|
+
"buildTime": "2026-09-29T04:52:03.418Z",
|
|
4
|
+
"buildTimestamp": 1790657523454,
|
|
5
5
|
"name": "koishi-plugin-kkk",
|
|
6
6
|
"description": "抖音 / B站 / 快手 / 小红书 视频解析与动态推送,带 QQ 交互面板与弹幕烧录(karin-plugin-kkk 的 Koishi 移植版)",
|
|
7
7
|
"homepage": "https://github.com/maimai993/koishi-plugin-kkk#readme",
|
|
8
|
-
"commitHash": "
|
|
9
|
-
"shortCommitHash": "
|
|
8
|
+
"commitHash": "e58bb629886c203412e751fa87ef69b52dc44f52",
|
|
9
|
+
"shortCommitHash": "e58bb62"
|
|
10
10
|
}
|
package/lib/index.js
CHANGED
|
@@ -119,13 +119,18 @@ try {
|
|
|
119
119
|
catch { /* 同上 */ }
|
|
120
120
|
exports.name = 'kkk';
|
|
121
121
|
exports.inject = {
|
|
122
|
+
// database:**必选**。订阅关系、推送缓存、解析统计全走 Koishi 原生数据库服务
|
|
123
|
+
// (表由 ctx.model.extend 注册,落在宿主自己的库里,插件不再自己开 sqlite 文件)。
|
|
124
|
+
// 之前它是 optional,因为那会儿插件自己建库;现在没有数据库服务就没有地方存数据,
|
|
125
|
+
// 直接声明成必选,让 Koishi 在没有配置数据库插件时明确地不加载本插件。
|
|
126
|
+
required: ['database'],
|
|
122
127
|
// server 只给「插件自带控制台」用,已经移除;这里留着不需要的服务反而会拖慢加载
|
|
123
128
|
// ffmpeg:由 koishi-plugin-ffmpeg-path 提供,兼容层的 ffmpeg()/ffprobe() 会优先用它
|
|
124
129
|
// assets:koishi-plugin-assets-qqbot-part-file 之类提供的图床服务,
|
|
125
130
|
// 面板卡片要上传成 https 地址才能放进 QQ 的 markdown 图片里
|
|
126
131
|
// 渲染:只用浏览器渲染服务(koishi-plugin-puppeteer 或同类插件)
|
|
127
132
|
// 3.5.0 起不再支持 shotkit 内核(它在 Windows 上加载不了 https 资源,卡片会缺图)
|
|
128
|
-
optional: ['puppeteer', '
|
|
133
|
+
optional: ['puppeteer', 'http', 'ffmpeg', 'assets', 'server', 'console']
|
|
129
134
|
};
|
|
130
135
|
/**
|
|
131
136
|
* 配置表单 = 「Koishi 集成选项」 + 「上游插件配置」。
|
|
@@ -1112,11 +1117,11 @@ async function apply(ctx, rawConfig) {
|
|
|
1112
1117
|
logger.warn('加载 app %s 失败(该功能暂不可用): %s', app, error?.message ?? error);
|
|
1113
1118
|
}
|
|
1114
1119
|
}
|
|
1115
|
-
//
|
|
1120
|
+
// 初始化数据库实例(走 Koishi 原生数据库服务 ctx.database)
|
|
1116
1121
|
// 原实现用顶层 await 立即初始化,CJS 下改成在这里显式引导,否则 module/db 导出的实例是 null
|
|
1117
1122
|
try {
|
|
1118
1123
|
const { bootstrapDatabases } = await Promise.resolve().then(() => __importStar(require('./karin/module/db')));
|
|
1119
|
-
const { douyinDB, bilibiliDB, statisticsDB } = await bootstrapDatabases();
|
|
1124
|
+
const { douyinDB, bilibiliDB, statisticsDB } = await bootstrapDatabases(ctx);
|
|
1120
1125
|
logger.debug('数据库初始化完成:%s / %s / %s', douyinDB.constructor.name, bilibiliDB.constructor.name, statisticsDB.constructor.name);
|
|
1121
1126
|
}
|
|
1122
1127
|
catch (error) {
|