@bilibili-notify/dynamic 0.0.1-alpha.1 → 0.0.1-alpha.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/lib/index.cjs +25 -0
- package/lib/index.d.cts +16 -1
- package/lib/index.d.mts +16 -1
- package/lib/index.mjs +25 -0
- package/package.json +5 -5
package/lib/index.cjs
CHANGED
|
@@ -7,6 +7,8 @@ let DynamicFilterReason = /* @__PURE__ */ function(DynamicFilterReason) {
|
|
|
7
7
|
DynamicFilterReason["BlacklistKeyword"] = "blacklist-keyword";
|
|
8
8
|
DynamicFilterReason["BlacklistForward"] = "blacklist-forward";
|
|
9
9
|
DynamicFilterReason["BlacklistArticle"] = "blacklist-article";
|
|
10
|
+
DynamicFilterReason["BlacklistDraw"] = "blacklist-draw";
|
|
11
|
+
DynamicFilterReason["BlacklistAv"] = "blacklist-av";
|
|
10
12
|
DynamicFilterReason["WhitelistUnmatched"] = "whitelist-unmatched";
|
|
11
13
|
return DynamicFilterReason;
|
|
12
14
|
}({});
|
|
@@ -55,6 +57,8 @@ function filterDynamic(dynamic, config, logger) {
|
|
|
55
57
|
keywords: [],
|
|
56
58
|
forward: false,
|
|
57
59
|
article: false,
|
|
60
|
+
draw: false,
|
|
61
|
+
av: false,
|
|
58
62
|
whitelistEnable: false,
|
|
59
63
|
whitelistRegex: "",
|
|
60
64
|
whitelistKeywords: [],
|
|
@@ -70,6 +74,14 @@ function filterDynamic(dynamic, config, logger) {
|
|
|
70
74
|
blocked: true,
|
|
71
75
|
reason: "blacklist-article"
|
|
72
76
|
};
|
|
77
|
+
if (cfg.draw && dynamic.type === "DYNAMIC_TYPE_DRAW") return {
|
|
78
|
+
blocked: true,
|
|
79
|
+
reason: "blacklist-draw"
|
|
80
|
+
};
|
|
81
|
+
if (cfg.av && dynamic.type === "DYNAMIC_TYPE_AV") return {
|
|
82
|
+
blocked: true,
|
|
83
|
+
reason: "blacklist-av"
|
|
84
|
+
};
|
|
73
85
|
if (safeRegexTest(cfg.regex, text, logger) || testKeywordMatched(text, cfg.keywords)) return {
|
|
74
86
|
blocked: true,
|
|
75
87
|
reason: "blacklist-keyword"
|
|
@@ -221,6 +233,17 @@ var DynamicEngine = class {
|
|
|
221
233
|
setAi(ai) {
|
|
222
234
|
this.ai = ai;
|
|
223
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* 热替换 ImageRenderer 实例。与 setAi 对称:adapter 在 image 服务上下线时
|
|
238
|
+
* 调用,引擎随后的卡片渲染会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
239
|
+
*
|
|
240
|
+
* 主要给 koishi adapter 用 —— sibling service (-image) 启停时通过 ctx.inject
|
|
241
|
+
* 后置注入。独立端 imageRenderer 是 engine 同进程一次性 wire,不会动态消失,
|
|
242
|
+
* 不需要调用本方法 (cardStyle 热更走 imageRenderer.updateConfig)。
|
|
243
|
+
*/
|
|
244
|
+
setImage(image) {
|
|
245
|
+
this.image = image;
|
|
246
|
+
}
|
|
224
247
|
get isActive() {
|
|
225
248
|
return this.dynamicJob?.running ?? false;
|
|
226
249
|
}
|
|
@@ -391,6 +414,8 @@ var DynamicEngine = class {
|
|
|
391
414
|
["blacklist-keyword"]: `${name}发布了一条含有屏蔽关键字的动态`,
|
|
392
415
|
["blacklist-forward"]: `${name}转发了一条动态,已屏蔽`,
|
|
393
416
|
["blacklist-article"]: `${name}投稿了一条专栏,已屏蔽`,
|
|
417
|
+
["blacklist-draw"]: `${name}发布了一条图文动态,已屏蔽`,
|
|
418
|
+
["blacklist-av"]: `${name}投稿了一条视频,已屏蔽`,
|
|
394
419
|
["whitelist-unmatched"]: `${name}发布了一条不在白名单范围内的动态,已屏蔽`
|
|
395
420
|
};
|
|
396
421
|
try {
|
package/lib/index.d.cts
CHANGED
|
@@ -90,6 +90,10 @@ interface DynamicFilterConfig {
|
|
|
90
90
|
keywords?: string[];
|
|
91
91
|
forward?: boolean;
|
|
92
92
|
article?: boolean;
|
|
93
|
+
/** DYNAMIC_TYPE_DRAW(图文动态;新版 B 站把图文挂在 major.opus 下,外层 type 仍为 DRAW)。 */
|
|
94
|
+
draw?: boolean;
|
|
95
|
+
/** DYNAMIC_TYPE_AV(视频投稿动态)。 */
|
|
96
|
+
av?: boolean;
|
|
93
97
|
whitelistEnable?: boolean;
|
|
94
98
|
whitelistRegex?: string;
|
|
95
99
|
whitelistKeywords?: string[];
|
|
@@ -98,6 +102,8 @@ declare enum DynamicFilterReason {
|
|
|
98
102
|
BlacklistKeyword = "blacklist-keyword",
|
|
99
103
|
BlacklistForward = "blacklist-forward",
|
|
100
104
|
BlacklistArticle = "blacklist-article",
|
|
105
|
+
BlacklistDraw = "blacklist-draw",
|
|
106
|
+
BlacklistAv = "blacklist-av",
|
|
101
107
|
WhitelistUnmatched = "whitelist-unmatched"
|
|
102
108
|
}
|
|
103
109
|
interface DynamicFilterResult {
|
|
@@ -265,7 +271,7 @@ declare class DynamicEngine {
|
|
|
265
271
|
private readonly bus;
|
|
266
272
|
private readonly api;
|
|
267
273
|
private readonly push;
|
|
268
|
-
private
|
|
274
|
+
private image?;
|
|
269
275
|
private ai?;
|
|
270
276
|
private readonly logger;
|
|
271
277
|
private readonly getSubs;
|
|
@@ -302,6 +308,15 @@ declare class DynamicEngine {
|
|
|
302
308
|
* 配置后调用,引擎随后的动态点评会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
303
309
|
*/
|
|
304
310
|
setAi(ai: CommentaryGenerator | undefined): void;
|
|
311
|
+
/**
|
|
312
|
+
* 热替换 ImageRenderer 实例。与 setAi 对称:adapter 在 image 服务上下线时
|
|
313
|
+
* 调用,引擎随后的卡片渲染会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
314
|
+
*
|
|
315
|
+
* 主要给 koishi adapter 用 —— sibling service (-image) 启停时通过 ctx.inject
|
|
316
|
+
* 后置注入。独立端 imageRenderer 是 engine 同进程一次性 wire,不会动态消失,
|
|
317
|
+
* 不需要调用本方法 (cardStyle 热更走 imageRenderer.updateConfig)。
|
|
318
|
+
*/
|
|
319
|
+
setImage(image: ImageRenderer | undefined): void;
|
|
305
320
|
get isActive(): boolean;
|
|
306
321
|
/** 用最新订阅快照重启动态检测;保留已有 UID 的时间戳避免重推旧动态。 */
|
|
307
322
|
startDynamicDetector(subs: SubscriptionsView): void;
|
package/lib/index.d.mts
CHANGED
|
@@ -90,6 +90,10 @@ interface DynamicFilterConfig {
|
|
|
90
90
|
keywords?: string[];
|
|
91
91
|
forward?: boolean;
|
|
92
92
|
article?: boolean;
|
|
93
|
+
/** DYNAMIC_TYPE_DRAW(图文动态;新版 B 站把图文挂在 major.opus 下,外层 type 仍为 DRAW)。 */
|
|
94
|
+
draw?: boolean;
|
|
95
|
+
/** DYNAMIC_TYPE_AV(视频投稿动态)。 */
|
|
96
|
+
av?: boolean;
|
|
93
97
|
whitelistEnable?: boolean;
|
|
94
98
|
whitelistRegex?: string;
|
|
95
99
|
whitelistKeywords?: string[];
|
|
@@ -98,6 +102,8 @@ declare enum DynamicFilterReason {
|
|
|
98
102
|
BlacklistKeyword = "blacklist-keyword",
|
|
99
103
|
BlacklistForward = "blacklist-forward",
|
|
100
104
|
BlacklistArticle = "blacklist-article",
|
|
105
|
+
BlacklistDraw = "blacklist-draw",
|
|
106
|
+
BlacklistAv = "blacklist-av",
|
|
101
107
|
WhitelistUnmatched = "whitelist-unmatched"
|
|
102
108
|
}
|
|
103
109
|
interface DynamicFilterResult {
|
|
@@ -265,7 +271,7 @@ declare class DynamicEngine {
|
|
|
265
271
|
private readonly bus;
|
|
266
272
|
private readonly api;
|
|
267
273
|
private readonly push;
|
|
268
|
-
private
|
|
274
|
+
private image?;
|
|
269
275
|
private ai?;
|
|
270
276
|
private readonly logger;
|
|
271
277
|
private readonly getSubs;
|
|
@@ -302,6 +308,15 @@ declare class DynamicEngine {
|
|
|
302
308
|
* 配置后调用,引擎随后的动态点评会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
303
309
|
*/
|
|
304
310
|
setAi(ai: CommentaryGenerator | undefined): void;
|
|
311
|
+
/**
|
|
312
|
+
* 热替换 ImageRenderer 实例。与 setAi 对称:adapter 在 image 服务上下线时
|
|
313
|
+
* 调用,引擎随后的卡片渲染会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
314
|
+
*
|
|
315
|
+
* 主要给 koishi adapter 用 —— sibling service (-image) 启停时通过 ctx.inject
|
|
316
|
+
* 后置注入。独立端 imageRenderer 是 engine 同进程一次性 wire,不会动态消失,
|
|
317
|
+
* 不需要调用本方法 (cardStyle 热更走 imageRenderer.updateConfig)。
|
|
318
|
+
*/
|
|
319
|
+
setImage(image: ImageRenderer | undefined): void;
|
|
305
320
|
get isActive(): boolean;
|
|
306
321
|
/** 用最新订阅快照重启动态检测;保留已有 UID 的时间戳避免重推旧动态。 */
|
|
307
322
|
startDynamicDetector(subs: SubscriptionsView): void;
|
package/lib/index.mjs
CHANGED
|
@@ -6,6 +6,8 @@ let DynamicFilterReason = /* @__PURE__ */ function(DynamicFilterReason) {
|
|
|
6
6
|
DynamicFilterReason["BlacklistKeyword"] = "blacklist-keyword";
|
|
7
7
|
DynamicFilterReason["BlacklistForward"] = "blacklist-forward";
|
|
8
8
|
DynamicFilterReason["BlacklistArticle"] = "blacklist-article";
|
|
9
|
+
DynamicFilterReason["BlacklistDraw"] = "blacklist-draw";
|
|
10
|
+
DynamicFilterReason["BlacklistAv"] = "blacklist-av";
|
|
9
11
|
DynamicFilterReason["WhitelistUnmatched"] = "whitelist-unmatched";
|
|
10
12
|
return DynamicFilterReason;
|
|
11
13
|
}({});
|
|
@@ -54,6 +56,8 @@ function filterDynamic(dynamic, config, logger) {
|
|
|
54
56
|
keywords: [],
|
|
55
57
|
forward: false,
|
|
56
58
|
article: false,
|
|
59
|
+
draw: false,
|
|
60
|
+
av: false,
|
|
57
61
|
whitelistEnable: false,
|
|
58
62
|
whitelistRegex: "",
|
|
59
63
|
whitelistKeywords: [],
|
|
@@ -69,6 +73,14 @@ function filterDynamic(dynamic, config, logger) {
|
|
|
69
73
|
blocked: true,
|
|
70
74
|
reason: "blacklist-article"
|
|
71
75
|
};
|
|
76
|
+
if (cfg.draw && dynamic.type === "DYNAMIC_TYPE_DRAW") return {
|
|
77
|
+
blocked: true,
|
|
78
|
+
reason: "blacklist-draw"
|
|
79
|
+
};
|
|
80
|
+
if (cfg.av && dynamic.type === "DYNAMIC_TYPE_AV") return {
|
|
81
|
+
blocked: true,
|
|
82
|
+
reason: "blacklist-av"
|
|
83
|
+
};
|
|
72
84
|
if (safeRegexTest(cfg.regex, text, logger) || testKeywordMatched(text, cfg.keywords)) return {
|
|
73
85
|
blocked: true,
|
|
74
86
|
reason: "blacklist-keyword"
|
|
@@ -220,6 +232,17 @@ var DynamicEngine = class {
|
|
|
220
232
|
setAi(ai) {
|
|
221
233
|
this.ai = ai;
|
|
222
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* 热替换 ImageRenderer 实例。与 setAi 对称:adapter 在 image 服务上下线时
|
|
237
|
+
* 调用,引擎随后的卡片渲染会立即用新实例 (或回退到纯文字) ,无需重启 server。
|
|
238
|
+
*
|
|
239
|
+
* 主要给 koishi adapter 用 —— sibling service (-image) 启停时通过 ctx.inject
|
|
240
|
+
* 后置注入。独立端 imageRenderer 是 engine 同进程一次性 wire,不会动态消失,
|
|
241
|
+
* 不需要调用本方法 (cardStyle 热更走 imageRenderer.updateConfig)。
|
|
242
|
+
*/
|
|
243
|
+
setImage(image) {
|
|
244
|
+
this.image = image;
|
|
245
|
+
}
|
|
223
246
|
get isActive() {
|
|
224
247
|
return this.dynamicJob?.running ?? false;
|
|
225
248
|
}
|
|
@@ -390,6 +413,8 @@ var DynamicEngine = class {
|
|
|
390
413
|
["blacklist-keyword"]: `${name}发布了一条含有屏蔽关键字的动态`,
|
|
391
414
|
["blacklist-forward"]: `${name}转发了一条动态,已屏蔽`,
|
|
392
415
|
["blacklist-article"]: `${name}投稿了一条专栏,已屏蔽`,
|
|
416
|
+
["blacklist-draw"]: `${name}发布了一条图文动态,已屏蔽`,
|
|
417
|
+
["blacklist-av"]: `${name}投稿了一条视频,已屏蔽`,
|
|
393
418
|
["whitelist-unmatched"]: `${name}发布了一条不在白名单范围内的动态,已屏蔽`
|
|
394
419
|
};
|
|
395
420
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bilibili-notify/dynamic",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/Akokk0/bilibili-notify"
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"cron": "^3.1.7",
|
|
30
30
|
"luxon": "^3.5.0",
|
|
31
|
-
"@bilibili-notify/ai": "^0.0.1-alpha.
|
|
32
|
-
"@bilibili-notify/
|
|
33
|
-
"@bilibili-notify/
|
|
34
|
-
"@bilibili-notify/
|
|
31
|
+
"@bilibili-notify/ai": "^0.0.1-alpha.1",
|
|
32
|
+
"@bilibili-notify/image": "^0.0.1-alpha.2",
|
|
33
|
+
"@bilibili-notify/api": "^0.2.0-alpha.2",
|
|
34
|
+
"@bilibili-notify/internal": "^0.1.0-alpha.2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/luxon": "^3.4.2"
|