@xzxzzx/bilibili-mcp 1.6.3 → 1.7.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.
Files changed (57) hide show
  1. package/README.md +55 -11
  2. package/README_EN.md +55 -11
  3. package/dist/bilibili/chapters.d.ts +8 -0
  4. package/dist/bilibili/chapters.d.ts.map +1 -0
  5. package/dist/bilibili/chapters.js +35 -0
  6. package/dist/bilibili/chapters.js.map +1 -0
  7. package/dist/bilibili/client.d.ts +2 -1
  8. package/dist/bilibili/client.d.ts.map +1 -1
  9. package/dist/bilibili/client.js +2 -1
  10. package/dist/bilibili/client.js.map +1 -1
  11. package/dist/bilibili/comments.d.ts.map +1 -1
  12. package/dist/bilibili/comments.js +26 -8
  13. package/dist/bilibili/comments.js.map +1 -1
  14. package/dist/bilibili/fingerprint.d.ts.map +1 -1
  15. package/dist/bilibili/fingerprint.js +5 -3
  16. package/dist/bilibili/fingerprint.js.map +1 -1
  17. package/dist/bilibili/http.d.ts.map +1 -1
  18. package/dist/bilibili/http.js +12 -33
  19. package/dist/bilibili/http.js.map +1 -1
  20. package/dist/bilibili/metadata.d.ts +1 -1
  21. package/dist/bilibili/metadata.d.ts.map +1 -1
  22. package/dist/bilibili/metadata.js +4 -2
  23. package/dist/bilibili/metadata.js.map +1 -1
  24. package/dist/bilibili/navigation.d.ts +25 -0
  25. package/dist/bilibili/navigation.d.ts.map +1 -0
  26. package/dist/bilibili/navigation.js +49 -0
  27. package/dist/bilibili/navigation.js.map +1 -0
  28. package/dist/bilibili/subtitle.d.ts +4 -3
  29. package/dist/bilibili/subtitle.d.ts.map +1 -1
  30. package/dist/bilibili/subtitle.js +77 -43
  31. package/dist/bilibili/subtitle.js.map +1 -1
  32. package/dist/bilibili/types.d.ts +26 -0
  33. package/dist/bilibili/types.d.ts.map +1 -1
  34. package/dist/bilibili/video-api.d.ts +14 -1
  35. package/dist/bilibili/video-api.d.ts.map +1 -1
  36. package/dist/bilibili/video-api.js +16 -2
  37. package/dist/bilibili/video-api.js.map +1 -1
  38. package/dist/bilibili/wbi.d.ts.map +1 -1
  39. package/dist/bilibili/wbi.js +21 -10
  40. package/dist/bilibili/wbi.js.map +1 -1
  41. package/dist/server/tool-handlers.d.ts.map +1 -1
  42. package/dist/server/tool-handlers.js +30 -4
  43. package/dist/server/tool-handlers.js.map +1 -1
  44. package/dist/server/tool-schemas.d.ts.map +1 -1
  45. package/dist/server/tool-schemas.js +45 -4
  46. package/dist/server/tool-schemas.js.map +1 -1
  47. package/dist/server.d.ts.map +1 -1
  48. package/dist/server.js +3 -1
  49. package/dist/server.js.map +1 -1
  50. package/dist/utils/retry.d.ts.map +1 -1
  51. package/dist/utils/retry.js +3 -7
  52. package/dist/utils/retry.js.map +1 -1
  53. package/dist/utils/validation.d.ts +12 -0
  54. package/dist/utils/validation.d.ts.map +1 -1
  55. package/dist/utils/validation.js +38 -0
  56. package/dist/utils/validation.js.map +1 -1
  57. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取 Bilibili 视频字幕、转录、元数据和热门评论的 MCP server。
8
8
 
9
- 🌐 [English Documentation](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/README_EN.md) · 📜 [更新日志](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/CHANGELOG.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.6.3](https://github.com/XZXZZX-Ai/bilibili-mcp/releases/tag/v1.6.3)
9
+ 🌐 [English Documentation](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/README_EN.md) · 📜 [更新日志](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/CHANGELOG.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.6.4](https://github.com/XZXZZX-Ai/bilibili-mcp/releases/tag/v1.6.4)
10
10
 
11
11
  > [!TIP]
12
12
  > ⚠️ 你可以把下方“用 agent 工具帮你安装”的提示词复制给 Codex、Claude Code、Cursor 等 agent,让它帮你完成 MCP 客户端接入和 Cookie 配置引导。为了稳定获取字幕、转录和评论,安装后仍需配置 B 站 Cookie(agent会引导你);不要把 Cookie 写进 MCP 客户端配置。Metadata 可能无需 Cookie。详见 [**凭证配置**](#️-凭证配置)。
@@ -84,8 +84,9 @@ npx -y @xzxzzx/bilibili-mcp@latest check
84
84
  - [2. 评论总结 (`get_video_comments`)](#2-评论总结-get_video_comments)
85
85
  - [3. 视频转录 (`get_video_transcript`)](#3-视频转录-get_video_transcript)
86
86
  - [4. 视频元数据 (`get_video_metadata`)](#4-视频元数据-get_video_metadata)
87
- - [5. 凭证助手工具](#5-凭证助手工具)
88
- - [6. 行为说明与错误处理](#6-行为说明与错误处理)
87
+ - [5. 视频章节 (`get_video_chapters`)](#5-视频章节-get_video_chapters)
88
+ - [6. 凭证助手工具](#6-凭证助手工具)
89
+ - [7. 行为说明与错误处理](#7-行为说明与错误处理)
89
90
  - [📋 环境要求](#-环境要求)
90
91
  - [🚀 客户端接入方式](#-客户端接入方式)
91
92
  - [⚙️ 凭证配置](#️-凭证配置)
@@ -121,24 +122,34 @@ npx -y @xzxzzx/bilibili-mcp@latest check
121
122
  ### 3. 视频转录 (`get_video_transcript`)
122
123
  - 返回纯字幕文本,按行合并
123
124
  - 支持指定偏好语言(默认按 `zh-Hans` > `ai-zh` > `zh-CN` > `zh-Hant` > `en` 优先级选择)
125
+ - 支持多P分集选择、时间戳输出和时间区间过滤
124
126
  - 可选参数:
125
127
  - `preferred_lang`: 偏好字幕语言代码
126
128
  - `fallback_to_description`: 字幕不可用时是否降级为视频描述(默认 `false`)
129
+ - `page`: 多P视频分集编号(从1开始的正整数)
130
+ - `include_timestamps`: 每行添加 `[HH:MM:SS --> HH:MM:SS]` 时间戳前缀
131
+ - `start_seconds` / `end_seconds`: 只返回与此区间重叠的字幕段
127
132
  - 默认不降级:无字幕时返回 `SUBTITLE_UNAVAILABLE` 错误
133
+ - 时间戳/区间过滤与描述降级不兼容:请求 timed 输出时不会静默降级
128
134
  - Cookie 失效时始终返回 `COOKIE_EXPIRED`,不静默降级
129
135
 
130
136
  ### 4. 视频元数据 (`get_video_metadata`)
131
137
  - 返回视频标题、作者、时长、发布时间、描述、标签、播放/点赞/投币等统计信息
138
+ - 返回多P分集列表(`pages`),含分集编号、CID、标题和时长
132
139
  - 不获取字幕或评论
133
- - 仅需 `bvid_or_url` 参数
134
140
 
135
- ### 5. 凭证助手工具
141
+ ### 5. 视频章节 (`get_video_chapters`)
142
+ - 返回 Bilibili 创作者/平台定义的视频章节(进度条分段),含章节标题和起止时间
143
+ - 无章节时返回空列表(`chapters: []`),不推断章节
144
+ - 可选参数 `page`:多P视频分集编号
145
+
146
+ ### 6. 凭证助手工具
136
147
 
137
148
  - `get_credential_setup_instructions`: 返回安全的 Bilibili Cookie 配置命令和说明。AI agent 安装此 MCP 后可调用此工具引导用户完成配置。
138
149
  - `check_bilibili_credentials`: 检查凭证是否已配置并处于登录状态,不返回任何 Cookie 值。配置缺失或失效时返回下一步操作指引。
139
150
  - `check_mcp_update`: 检查本地包版本与 npm latest 是否一致,并返回 `npx @latest` 或全局安装的安全更新指引。
140
151
 
141
- ### 6. 行为说明与错误处理
152
+ ### 7. 行为说明与错误处理
142
153
 
143
154
  - **Cookie 过期智能检测**:当字幕获取为空时自动验证登录状态,区分“无字幕视频”与“凭证失效”,并抛出明确的 `COOKIE_EXPIRED` 错误,避免静默降级。
144
155
 
@@ -1232,9 +1243,10 @@ BILIBILI_DEDEUSERID=<your_dedeuserid>
1232
1243
  | 目标 | 推荐工具 | 返回重点 |
1233
1244
  |---|---|---|
1234
1245
  | 想让 AI 总结一个视频 | `get_video_info` | 字幕优先;无字幕时返回标题、简介、标签 |
1235
- | 只想拿完整转录文本 | `get_video_transcript` | 纯字幕文本、语言、数据来源 |
1236
- | 想查看标题、作者、播放量等结构化信息 | `get_video_metadata` | 标题、作者、时长、发布时间、标签、统计数据 |
1246
+ | 只想拿完整转录文本 | `get_video_transcript` | 纯字幕文本、语言、数据来源;支持时间戳和区间过滤 |
1247
+ | 想查看标题、作者、播放量等结构化信息 | `get_video_metadata` | 标题、作者、时长、发布时间、标签、统计数据、多P分集列表(`pages`) |
1237
1248
  | 想看观众反馈和热门评论 | `get_video_comments` | 热门评论、时间戳评论、可选回复 |
1249
+ | 想看视频章节/进度条分段 | `get_video_chapters` | 章节标题、起止时间;无章节时返回空列表 |
1238
1250
  | 让 agent 引导用户配置 Cookie | `get_credential_setup_instructions` | 安全配置步骤、推荐命令、注意事项 |
1239
1251
  | 检查 Cookie 是否已配置/登录 | `check_bilibili_credentials` | configured、source、logged_in、next_steps、next_steps_zh |
1240
1252
  | 检查 MCP 包是否需要更新 | `check_mcp_update` | current_version、latest_version、update_available、notes_zh、更新命令 |
@@ -1305,10 +1317,25 @@ BILIBILI_DEDEUSERID=<your_dedeuserid>
1305
1317
  }
1306
1318
  ```
1307
1319
 
1308
- 返回内容:`bvid`、`title`、`language`、`transcript`(按行合并)、`data_source`(`subtitle` 或 `description`)。
1320
+ 返回内容:`bvid`、`title`、`language`、`transcript`(按行合并)、`data_source`(`subtitle` 或 `description`)、`page`(分集编号)。
1309
1321
 
1310
1322
  > 默认无字幕时返回 `SUBTITLE_UNAVAILABLE`。如需降级,设置 `fallback_to_description: true`。
1311
1323
 
1324
+ **定时区间转录示例**:
1325
+
1326
+ ```json
1327
+ {
1328
+ "name": "get_video_transcript",
1329
+ "arguments": {
1330
+ "bvid_or_url": "BV1xx411c7mD",
1331
+ "page": 1,
1332
+ "include_timestamps": true,
1333
+ "start_seconds": 120,
1334
+ "end_seconds": 300
1335
+ }
1336
+ }
1337
+ ```
1338
+
1312
1339
  ### `get_video_metadata`
1313
1340
 
1314
1341
  **适合**:想快速了解视频基本信息,不需要字幕或评论内容。
@@ -1324,7 +1351,24 @@ BILIBILI_DEDEUSERID=<your_dedeuserid>
1324
1351
  }
1325
1352
  ```
1326
1353
 
1327
- 返回内容:`bvid`、`title`、`author`、`duration`、`pubdate` / `pubdate_timestamp`、`description`、`tags` 和 `stats`(播放、点赞、投币、收藏、分享、评论、弹幕)。
1354
+ 返回内容:`bvid`、`title`、`author`、`duration`、`pubdate` / `pubdate_timestamp`、`description`、`tags`、`pages`(多P分集列表)和 `stats`(播放、点赞、投币、收藏、分享、评论、弹幕)。
1355
+
1356
+ ### `get_video_chapters`
1357
+
1358
+ **适合**:获取 Bilibili 创作者定义的视频章节,用于导航或定位。
1359
+
1360
+ 请求示例:
1361
+
1362
+ ```json
1363
+ {
1364
+ "name": "get_video_chapters",
1365
+ "arguments": {
1366
+ "bvid_or_url": "BV1vL411G7N7"
1367
+ }
1368
+ }
1369
+ ```
1370
+
1371
+ 返回内容:`bvid`、`page`、`cid`、`title`、`chapters`(数组,每项含 `title`、`start_seconds`、`end_seconds`)。无章节时 `chapters` 为空数组。
1328
1372
 
1329
1373
  ### `get_video_info`
1330
1374
 
@@ -1442,7 +1486,7 @@ npm run watch
1442
1486
 
1443
1487
  1. **初版生成**:由 **Claude Code** (搭载 **GLM-4.7** 模型) 快速搭建核心架构与基础逻辑。
1444
1488
  2. **调试与优化**:在 **Antigravity** 环境下,利用 **Claude** 和 **Gemini** 模型进行深度的 Bug 修复与功能增强,确保了字幕提取与评论分析的稳定性。
1445
- 3. **迭代与扩展**:由 **Codex** 进行架构决策与计划分解,**Claude Code** 执行实现;目前覆盖 30+ AI 客户端的 MCP 接入配置、7 个 MCP 工具、145 个单元测试。
1489
+ 3. **迭代与扩展**:由 **Codex** 进行架构决策与计划分解,**Claude Code** 执行实现;目前覆盖 30+ AI 客户端的 MCP 接入配置、7 个 MCP 工具、180 个单元测试。
1446
1490
 
1447
1491
  ---
1448
1492
 
package/README_EN.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  MCP server that gives AI clients access to Bilibili video subtitles, transcripts, metadata, and popular comments.
8
8
 
9
- View in [简体中文](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/README.md) · 📜 [Changelog](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/CHANGELOG_EN.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.6.3](https://github.com/XZXZZX-Ai/bilibili-mcp/releases/tag/v1.6.3)
9
+ View in [简体中文](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/README.md) · 📜 [Changelog](https://github.com/XZXZZX-Ai/bilibili-mcp/blob/master/CHANGELOG_EN.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.6.4](https://github.com/XZXZZX-Ai/bilibili-mcp/releases/tag/v1.6.4)
10
10
 
11
11
  > [!TIP]
12
12
  > ⚠️ You can copy the "Install With Your Agent" prompt below to Codex, Claude Code, Cursor, or another agent and let it add this MCP server to your client and guide Cookie setup. For reliable subtitles, transcripts, and comments, you still need to configure Bilibili Cookies after installation; do not write Cookies into MCP client config. Metadata may work without cookies. See [**Credential Configuration**](#-credential-configuration).
@@ -84,8 +84,9 @@ After the MCP server is connected, if available, call get_credential_setup_instr
84
84
  - [2. Comment Summarization (`get_video_comments`)](#2-comment-summarization-get_video_comments)
85
85
  - [3. Video Transcript (`get_video_transcript`)](#3-video-transcript-get_video_transcript)
86
86
  - [4. Video Metadata (`get_video_metadata`)](#4-video-metadata-get_video_metadata)
87
- - [5. Credential Helper Tools](#5-credential-helper-tools)
88
- - [6. Behavior and Error Handling](#6-behavior-and-error-handling)
87
+ - [5. Video Chapters (`get_video_chapters`)](#5-video-chapters-get_video_chapters)
88
+ - [6. Credential Helper Tools](#6-credential-helper-tools)
89
+ - [7. Behavior and Error Handling](#7-behavior-and-error-handling)
89
90
  - [📋 Requirements](#-requirements)
90
91
  - [🚀 Client Setup](#-client-setup)
91
92
  - [⚙️ Credential Configuration](#-credential-configuration)
@@ -121,24 +122,34 @@ After the MCP server is connected, if available, call get_credential_setup_instr
121
122
  ### 3. Video Transcript (`get_video_transcript`)
122
123
  - Returns clean subtitle text, joined by newlines.
123
124
  - Supports preferred language selection (defaults to `zh-Hans` > `ai-zh` > `zh-CN` > `zh-Hant` > `en` priority).
125
+ - Supports multi-Part selection, timestamp output, and time-range filtering.
124
126
  - Optional parameters:
125
127
  - `preferred_lang`: Preferred subtitle language code.
126
128
  - `fallback_to_description`: Fall back to video description if subtitles unavailable (default `false`).
129
+ - `page`: Multi-Part video page number (1-based positive integer).
130
+ - `include_timestamps`: Prefix each line with `[HH:MM:SS --> HH:MM:SS]`.
131
+ - `start_seconds` / `end_seconds`: Only return segments overlapping this range.
127
132
  - By default, returns `SUBTITLE_UNAVAILABLE` error when no subtitles exist.
133
+ - Timestamps/range filtering is incompatible with description fallback.
128
134
  - Cookie expiration always returns `COOKIE_EXPIRED`, never silently falls back.
129
135
 
130
136
  ### 4. Video Metadata (`get_video_metadata`)
131
137
  - Returns video title, author, duration, publish date, description, tags, and stats (views, likes, coins, etc.).
138
+ - Returns multi-Part listing (`pages`) with page number, CID, title, and duration.
132
139
  - Does not fetch subtitles or comments.
133
- - Only requires the `bvid_or_url` parameter.
134
140
 
135
- ### 5. Credential Helper Tools
141
+ ### 5. Video Chapters (`get_video_chapters`)
142
+ - Returns Bilibili creator-defined Chapter intervals (view_points) with title, start, and end seconds.
143
+ - Returns empty `chapters` array when no Chapters exist; never infers Chapters.
144
+ - Accepts optional `page` parameter for multi-Part videos.
145
+
146
+ ### 6. Credential Helper Tools
136
147
 
137
148
  - `get_credential_setup_instructions`: Returns safe setup commands for Bilibili Cookie configuration. AI agents installing this MCP can call this tool to guide users through setup.
138
149
  - `check_bilibili_credentials`: Checks whether credentials are configured and logged in without returning Cookie values. Returns next steps when credentials are missing or invalid.
139
150
  - `check_mcp_update`: Checks the local package version against npm latest and returns safe update guidance for `npx @latest` or global installs.
140
151
 
141
- ### 6. Behavior and Error Handling
152
+ ### 7. Behavior and Error Handling
142
153
 
143
154
  - **Intelligent Cookie Expiration Detection**: Automatically verifies login status when subtitles are empty, distinguishing between "videos without subtitles" and "invalid credentials," and throwing a clear `COOKIE_EXPIRED` error to prevent silent degradation.
144
155
 
@@ -1232,9 +1243,10 @@ Do not share cookies with others. Do not paste them into public chats, issues, P
1232
1243
  | Goal | Recommended tool | What you get |
1233
1244
  |---|---|---|
1234
1245
  | Summarize a video | `get_video_info` | Subtitles first; falls back to title, description, tags |
1235
- | Get clean transcript text | `get_video_transcript` | Plain subtitle text, language, data source |
1236
- | See structured metadata | `get_video_metadata` | Title, author, duration, publish date, tags, stats |
1246
+ | Get clean transcript text | `get_video_transcript` | Plain subtitle text, language, data source; supports timestamps and range filtering |
1247
+ | See structured metadata | `get_video_metadata` | Title, author, duration, publish date, tags, stats, multi-Part listing |
1237
1248
  | View audience reactions | `get_video_comments` | Popular comments, timestamped highlights, optional replies |
1249
+ | See video Chapters | `get_video_chapters` | Chapter titles, start/end seconds; empty list when absent |
1238
1250
  | Guide users through Cookie setup | `get_credential_setup_instructions` | Safe setup steps, recommended commands, security notes |
1239
1251
  | Check whether Cookies are configured/logged in | `check_bilibili_credentials` | configured, source, logged_in, next_steps, next_steps_zh |
1240
1252
  | Check whether the MCP package needs an update | `check_mcp_update` | current_version, latest_version, update_available, notes_zh, update commands |
@@ -1305,10 +1317,25 @@ Request:
1305
1317
  }
1306
1318
  ```
1307
1319
 
1308
- Returns: `bvid`, `title`, `language`, `transcript` (newline-joined), `data_source` (`subtitle` or `description`).
1320
+ Returns: `bvid`, `title`, `language`, `transcript` (newline-joined), `data_source` (`subtitle` or `description`), `page`.
1309
1321
 
1310
1322
  > Returns `SUBTITLE_UNAVAILABLE` when no subtitles exist. Set `fallback_to_description: true` to fall back.
1311
1323
 
1324
+ **Timed range example**:
1325
+
1326
+ ```json
1327
+ {
1328
+ "name": "get_video_transcript",
1329
+ "arguments": {
1330
+ "bvid_or_url": "BV1xx411c7mD",
1331
+ "page": 1,
1332
+ "include_timestamps": true,
1333
+ "start_seconds": 120,
1334
+ "end_seconds": 300
1335
+ }
1336
+ }
1337
+ ```
1338
+
1312
1339
  ### `get_video_metadata`
1313
1340
 
1314
1341
  **Best for**: quickly checking video basics without subtitles or comments.
@@ -1324,7 +1351,24 @@ Request:
1324
1351
  }
1325
1352
  ```
1326
1353
 
1327
- Returns: `bvid`, `title`, `author`, `duration`, `pubdate` / `pubdate_timestamp`, `description`, `tags`, and `stats` (views, likes, coins, favorites, shares, replies, danmaku).
1354
+ Returns: `bvid`, `title`, `author`, `duration`, `pubdate` / `pubdate_timestamp`, `description`, `tags`, `pages` (multi-Part listing), and `stats` (views, likes, coins, favorites, shares, replies, danmaku).
1355
+
1356
+ ### `get_video_chapters`
1357
+
1358
+ **Best for**: getting Bilibili creator-defined Chapter intervals for navigation.
1359
+
1360
+ Request:
1361
+
1362
+ ```json
1363
+ {
1364
+ "name": "get_video_chapters",
1365
+ "arguments": {
1366
+ "bvid_or_url": "BV1vL411G7N7"
1367
+ }
1368
+ }
1369
+ ```
1370
+
1371
+ Returns: `bvid`, `page`, `cid`, `title`, `chapters` (array with `title`, `start_seconds`, `end_seconds`). Empty array when no Chapters exist.
1328
1372
 
1329
1373
  ### `get_video_info`
1330
1374
 
@@ -1439,7 +1483,7 @@ This project is a crystal of AI-collaborative development, spanning from prototy
1439
1483
 
1440
1484
  1. **Initial Generation**: Core architecture and base logic were rapidly built by **Claude Code** (powered by **GLM-4.7** model).
1441
1485
  2. **Debugging & Optimization**: Bugs were fixed and features enhanced using **Claude** and **Gemini** models within the **Antigravity** environment, ensuring stable subtitle extraction and comment analysis.
1442
- 3. **Iteration & Expansion**: **Codex** handles architectural decisions and planning, while **Claude Code** executes implementation; now covers 30+ AI client MCP configurations, 7 MCP tools, and 145 unit tests.
1486
+ 3. **Iteration & Expansion**: **Codex** handles architectural decisions and planning, while **Claude Code** executes implementation; now covers 30+ AI client MCP configurations, 7 MCP tools, and 180 unit tests.
1443
1487
 
1444
1488
  ---
1445
1489
 
@@ -0,0 +1,8 @@
1
+ import type { VideoChaptersData } from "./types.js";
2
+ /**
3
+ * 获取 Bilibili 提供的视频章节(进度条分段)。
4
+ * 无章节时返回 chapters: []。
5
+ * 播放器/网络错误向上传播,不静默吞掉。
6
+ */
7
+ export declare function getVideoChaptersData(bvidOrUrl: string, page?: number): Promise<VideoChaptersData>;
8
+ //# sourceMappingURL=chapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters.d.ts","sourceRoot":"","sources":["../../src/bilibili/chapters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKjE;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC,CA2B5B"}
@@ -0,0 +1,35 @@
1
+ // Bilibili 视频章节(view_points)检索
2
+ import { getPlayerData, matchPartIdentity, resolvePartCid } from "./client.js";
3
+ import { extractBVId } from "../utils/bvid.js";
4
+ const MAX_CHAPTER_TITLE_LENGTH = 500;
5
+ const MAX_CHAPTERS = 200;
6
+ /**
7
+ * 获取 Bilibili 提供的视频章节(进度条分段)。
8
+ * 无章节时返回 chapters: []。
9
+ * 播放器/网络错误向上传播,不静默吞掉。
10
+ */
11
+ export async function getVideoChaptersData(bvidOrUrl, page) {
12
+ const bvid = extractBVId(bvidOrUrl);
13
+ const { cid, pages, videoData } = await resolvePartCid(bvidOrUrl, page);
14
+ const { page: displayPage, title: displayTitle } = matchPartIdentity(cid, pages, videoData.title);
15
+ const playerData = await getPlayerData(bvid, cid);
16
+ const viewPoints = playerData?.view_points;
17
+ const chapters = [];
18
+ if (viewPoints && viewPoints.length > 0) {
19
+ for (const vp of viewPoints.slice(0, MAX_CHAPTERS)) {
20
+ chapters.push({
21
+ title: (vp.content || vp.title || "").slice(0, MAX_CHAPTER_TITLE_LENGTH),
22
+ start_seconds: vp.from,
23
+ end_seconds: vp.to,
24
+ });
25
+ }
26
+ }
27
+ return {
28
+ bvid,
29
+ page: displayPage,
30
+ cid,
31
+ title: displayTitle,
32
+ chapters,
33
+ };
34
+ }
35
+ //# sourceMappingURL=chapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters.js","sourceRoot":"","sources":["../../src/bilibili/chapters.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,IAAa;IAEb,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAExE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAElG,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,EAAE,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,CAAE,EAA8B,CAAC,OAAiB,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;gBAC/G,aAAa,EAAE,EAAE,CAAC,IAAI;gBACtB,WAAW,EAAE,EAAE,CAAC,EAAE;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,GAAG;QACH,KAAK,EAAE,YAAY;QACnB,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { checkLoginStatus, fetchWithWBI, fetchWithoutWBI } from "./http.js";
2
- export { getSubtitleContent, getVideoInfo, getVideoSubtitle, } from "./video-api.js";
2
+ export { getPlayerData, getSubtitleContent, getVideoInfo, getVideoSubtitle, } from "./video-api.js";
3
3
  export { getVideoComments } from "./comments-api.js";
4
+ export { matchPartIdentity, normalizePages, resolvePartCid } from "./navigation.js";
4
5
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/bilibili/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/bilibili/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  // B站 API 客户端 — 兼容性 re-export
2
2
  export { checkLoginStatus, fetchWithWBI, fetchWithoutWBI } from "./http.js";
3
- export { getSubtitleContent, getVideoInfo, getVideoSubtitle, } from "./video-api.js";
3
+ export { getPlayerData, getSubtitleContent, getVideoInfo, getVideoSubtitle, } from "./video-api.js";
4
4
  export { getVideoComments } from "./comments-api.js";
5
+ export { matchPartIdentity, normalizePages, resolvePartCid } from "./navigation.js";
5
6
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/bilibili/client.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/bilibili/client.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/bilibili/comments.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAkDD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAC1D,UAAU,CAAC,EAAE,MAAM,EACnB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,WAAW,CAAC,CAqHtB"}
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/bilibili/comments.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAkDD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAC1D,UAAU,CAAC,EAAE,MAAM,EACnB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,WAAW,CAAC,CAwItB"}
@@ -1,5 +1,5 @@
1
1
  // 评论处理逻辑
2
- import { getVideoInfo, getVideoComments } from "./client.js";
2
+ import { getVideoComments } from "./client.js";
3
3
  import { extractBVId } from "../utils/bvid.js";
4
4
  import { cacheManager } from "../utils/cache.js";
5
5
  import { CommentsDisabledError } from "../utils/errors.js";
@@ -70,7 +70,7 @@ export async function getVideoCommentsData(bvidOrUrl, detailLevelOrOptions, lega
70
70
  : (detailLevelOrOptions.includeReplies ?? true);
71
71
  const bvid = extractBVId(bvidOrUrl);
72
72
  // 生成缓存键:包含有效的 detailLevel/limit/sort/includeReplies
73
- const cacheDetail = limit !== undefined ? `limit-${limit}` : detailLevel;
73
+ const cacheDetail = limit !== undefined ? `${detailLevel}-limit-${limit}` : detailLevel;
74
74
  const cacheKey = cacheManager.generateKey("comments", bvid, cacheDetail, sort.toString(), includeReplies.toString());
75
75
  try {
76
76
  // 尝试从缓存获取
@@ -80,14 +80,32 @@ export async function getVideoCommentsData(bvidOrUrl, detailLevelOrOptions, lega
80
80
  return cachedData;
81
81
  }
82
82
  logger.debug("Comments cache miss", { bvid, cacheKey }, { type: "comments" });
83
- // 获取视频基本信息以获取 CID
84
- const videoData = await getVideoInfo(bvid);
85
- const cid = videoData.cid;
86
83
  // 评论数量:优先使用显式 limit,否则根据 detailLevel 决定
87
84
  const commentCount = limit ?? (detailLevel === "brief" ? 10 : 20);
88
- // 获取评论
89
- const commentsData = (await getVideoComments(bvidOrUrl, 1, commentCount, sort, includeReplies));
90
- const rawComments = commentsData?.replies || [];
85
+ // 获取评论:limit ≤ 20 单次请求,> 20 顺序分页拉取
86
+ let rawComments;
87
+ if (commentCount <= 20) {
88
+ const commentsData = (await getVideoComments(bvidOrUrl, 1, commentCount, sort, includeReplies));
89
+ rawComments = commentsData?.replies || [];
90
+ }
91
+ else {
92
+ rawComments = [];
93
+ let page = 1;
94
+ let remaining = commentCount;
95
+ while (remaining > 0) {
96
+ const pageSize = Math.min(remaining, 20);
97
+ const pageData = (await getVideoComments(bvidOrUrl, page, pageSize, sort, includeReplies));
98
+ const pageReplies = pageData?.replies || [];
99
+ if (pageReplies.length === 0)
100
+ break;
101
+ rawComments.push(...pageReplies);
102
+ if (pageReplies.length < pageSize)
103
+ break;
104
+ remaining -= pageReplies.length;
105
+ page++;
106
+ }
107
+ rawComments = rawComments.slice(0, commentCount);
108
+ }
91
109
  // 处理评论
92
110
  let processedComments = rawComments.map((comment) => processComment(comment, includeReplies));
93
111
  // 如果是详细模式且包含回复,添加高赞回复
@@ -1 +1 @@
1
- {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/bilibili/comments.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAY3D;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,kBAAkB;IAClB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,oCAAoC;IACpC,MAAM,cAAc,GAAG,+BAA+B,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,cAAc;QACd,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,OAAgB,EAChB,iBAA0B,KAAK;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAClD,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM;QACN,OAAO,EAAE,eAAe;QACxB,KAAK;QACL,aAAa,EAAE,CAAC,CAAC,SAAS;QAC1B,SAAS,EAAE,SAAS,IAAI,SAAS;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,oBAA0D,EAC1D,UAAmB,EACnB,oBAA8B;IAE9B,4CAA4C;IAC5C,MAAM,QAAQ,GACZ,oBAAoB,KAAK,SAAS;QAClC,OAAO,oBAAoB,KAAK,QAAQ,CAAC;IAE3C,MAAM,WAAW,GAAuB,QAAQ;QAC9C,CAAC,CAAC,CAAC,oBAAoB,IAAI,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC;IAElD,MAAM,KAAK,GAAuB,QAAQ;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,oBAAuC,CAAC,KAAK,CAAC;IAEnD,MAAM,IAAI,GAAW,QAAQ;QAC3B,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAE,oBAAuC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,MAAM,cAAc,GAAY,QAAQ;QACtC,CAAC,CAAC,CAAC,oBAAoB,IAAI,IAAI,CAAC;QAChC,CAAC,CAAC,CAAE,oBAAuC,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEpC,oDAAoD;IACpD,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CACvC,UAAU,EACV,IAAI,EACJ,WAAW,EACX,IAAI,CAAC,QAAQ,EAAE,EACf,cAAc,CAAC,QAAQ,EAAE,CAC1B,CAAC;IAEF,IAAI,CAAC;QACH,UAAU;QACV,MAAM,UAAU,GAAG,YAAY,CAAC,cAAc,CAAC,QAAQ,CAA4B,CAAC;QACpF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7E,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAE9E,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QAE1B,wCAAwC;QACxC,MAAM,YAAY,GAAG,KAAK,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,YAAY,GAAG,CAAC,MAAM,gBAAgB,CAC1C,SAAS,EACT,CAAC,EACD,YAAY,EACZ,IAAI,EACJ,cAAc,CACf,CAAqB,CAAC;QAEvB,MAAM,WAAW,GAAG,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;QAEhD,OAAO;QACP,IAAI,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CACxC,CAAC;QAEF,sBAAsB;QACtB,IAAI,WAAW,KAAK,UAAU,IAAI,cAAc,EAAE,CAAC;YACjD,MAAM,OAAO,GAAc,EAAE,CAAC;YAC9B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClD,WAAW;oBACX,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,iBAAiB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC9C,CAAC;QAED,mBAAmB;QACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAO,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa;gBAAE,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB;QAC/C,CAAC,CAAC,CAAC;QAEH,KAAK;QACL,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CACvB,CAAC,MAAM,CAAC;QAET,MAAM,MAAM,GAAgB;YAC1B,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE;gBACP,cAAc,EAAE,iBAAiB,CAAC,MAAM;gBACxC,uBAAuB,EAAE,qBAAqB;aAC/C;SACF,CAAC;QAEF,OAAO;QACP,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE9C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3E,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,CAAC,KAAK,CACV,8BAA8B,EAC9B,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,CACrB,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/bilibili/comments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/bilibili/fingerprint.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAAC,CA8CR"}
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/bilibili/fingerprint.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAAC,CA+CR"}
@@ -16,9 +16,9 @@ export async function getBuvid() {
16
16
  if (cachedBuvid && cachedBuvid.expireTime > now) {
17
17
  return { buvid3: cachedBuvid.buvid3, buvid4: cachedBuvid.buvid4 };
18
18
  }
19
+ const controller = new AbortController();
20
+ const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
19
21
  try {
20
- const controller = new AbortController();
21
- const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
22
22
  const resp = await fetch(`${BASE_URL}/x/frontend/finger/spi`, {
23
23
  headers: {
24
24
  "User-Agent": config.userAgent,
@@ -26,7 +26,6 @@ export async function getBuvid() {
26
26
  },
27
27
  signal: controller.signal,
28
28
  });
29
- clearTimeout(timeoutId);
30
29
  if (!resp.ok)
31
30
  return null;
32
31
  const data = await resp.json();
@@ -46,5 +45,8 @@ export async function getBuvid() {
46
45
  logger.warn("Failed to fetch buvid fingerprint, continuing without it", { error: error instanceof Error ? error.message : error });
47
46
  return null;
48
47
  }
48
+ finally {
49
+ clearTimeout(timeoutId);
50
+ }
49
51
  }
50
52
  //# sourceMappingURL=fingerprint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/bilibili/fingerprint.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,uBAAuB;AACvB,IAAI,WAAW,GAIJ,IAAI,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAI5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IAEvD,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,kBAAkB,CACnB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,wBAAwB,EAAE;YAC5D,OAAO,EAAE;gBACP,YAAY,EAAE,MAAM,CAAC,SAAS;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG;YAAE,OAAO,IAAI,CAAC;QAEvE,WAAW,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YACrB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YACrB,UAAU,EAAE,GAAG,GAAG,cAAc;SACjC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACvC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;SAC9C,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,0DAA0D,EAC1D,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/bilibili/fingerprint.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,uBAAuB;AACvB,IAAI,WAAW,GAIJ,IAAI,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAI5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IAEvD,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,kBAAkB,CACnB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,wBAAwB,EAAE;YAC5D,OAAO,EAAE;gBACP,YAAY,EAAE,MAAM,CAAC,SAAS;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG;YAAE,OAAO,IAAI,CAAC;QAEvE,WAAW,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YACrB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YACrB,UAAU,EAAE,GAAG,GAAG,cAAc;SACjC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACvC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;SAC9C,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,0DAA0D,EAC1D,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"AAqCA;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,CAAC,CAAC,CAsCZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ7E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAwBtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACvC,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,OAAO,CAAC,OAAO,CAAC,CAwJlB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACxC,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,OAAO,CAAC,OAAO,CAAC,CAuFlB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"AAqCA;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,CAAC,CAAC,CAmCZ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ7E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAItE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACvC,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,OAAO,CAAC,OAAO,CAAC,CAwJlB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACxC,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC7C,OAAO,CAAC,OAAO,CAAC,CAuFlB"}
@@ -10,7 +10,7 @@ const BASE_URL = config.baseUrl;
10
10
  const RATE_LIMIT_MS = config.rateLimitMs;
11
11
  const REQUEST_TIMEOUT_MS = config.requestTimeoutMs;
12
12
  let lastRequestTime = 0;
13
- let pendingPromise = null;
13
+ let admissionChain = Promise.resolve();
14
14
  /**
15
15
  * 等待到下一个允许请求的时间
16
16
  */
@@ -27,34 +27,32 @@ async function waitForRateLimit() {
27
27
  * 带限流和超时控制的请求包装器
28
28
  */
29
29
  export async function throttledFetch(fetchFn) {
30
- // 等待上一个请求完成
31
- if (pendingPromise) {
32
- await pendingPromise;
33
- }
30
+ const previousTurn = admissionChain;
31
+ const myTurn = previousTurn.then(() => waitForRateLimit());
32
+ admissionChain = myTurn.catch(() => { });
33
+ await previousTurn;
34
34
  // 创建 AbortController 用于超时控制
35
35
  const controller = new AbortController();
36
36
  const timeoutId = setTimeout(() => {
37
37
  controller.abort();
38
38
  logger.error(`Request timeout after ${REQUEST_TIMEOUT_MS}ms`, {}, { type: "request-timeout" });
39
39
  }, REQUEST_TIMEOUT_MS);
40
- // 创建新的请求
41
- pendingPromise = (async () => {
42
- await waitForRateLimit();
43
- })();
44
40
  try {
45
- await pendingPromise;
41
+ await myTurn;
46
42
  return await fetchFn(controller);
47
43
  }
48
44
  catch (error) {
49
45
  if (error instanceof Error && error.name === "AbortError") {
50
46
  throw new TimeoutError(`Request timeout: ${REQUEST_TIMEOUT_MS}ms`, REQUEST_TIMEOUT_MS);
51
47
  }
48
+ if (error instanceof TypeError) {
49
+ throw new NetworkError("Network request failed", error);
50
+ }
52
51
  throw error;
53
52
  }
54
53
  finally {
55
54
  clearTimeout(timeoutId);
56
55
  controller.abort(); // 确保 AbortController 被清理
57
- pendingPromise = null;
58
56
  }
59
57
  }
60
58
  /**
@@ -74,28 +72,9 @@ export async function retryableFetch(fetchFn) {
74
72
  * 该函数不会在日志或错误信息中输出任何 Cookie 内容。
75
73
  */
76
74
  export async function checkLoginStatus() {
77
- try {
78
- const authHeaders = credentialManager.getAuthHeaders();
79
- const controller = new AbortController();
80
- const timeoutId = setTimeout(() => controller.abort(), config.requestTimeoutMs);
81
- const resp = await fetch(`${BASE_URL}/x/web-interface/nav`, {
82
- headers: {
83
- "User-Agent": config.userAgent,
84
- Referer: config.referer,
85
- ...authHeaders,
86
- },
87
- signal: controller.signal,
88
- });
89
- clearTimeout(timeoutId);
90
- if (!resp.ok)
91
- return { isLogin: false };
92
- const data = await resp.json();
93
- return { isLogin: data?.data?.isLogin === true };
94
- }
95
- catch {
96
- // 网络问题或超时,保守地认为登录状态未知,返回 false
97
- return { isLogin: false };
98
- }
75
+ const authHeaders = credentialManager.getAuthHeaders();
76
+ const data = await fetchWithoutWBI("/x/web-interface/nav", undefined, authHeaders);
77
+ return { isLogin: data?.isLogin === true };
99
78
  }
100
79
  /**
101
80
  * 带有 WBI 签名的 GET 请求
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"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"}