@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 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 readonly image?;
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 readonly image?;
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.1",
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.0",
32
- "@bilibili-notify/api": "^0.2.0-alpha.1",
33
- "@bilibili-notify/internal": "^0.1.0-alpha.1",
34
- "@bilibili-notify/image": "^0.0.1-alpha.1"
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"