dsh-bili-watch 0.2.0 → 0.2.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.
Files changed (3) hide show
  1. package/README.md +41 -28
  2. package/index.js +1 -1
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -1,44 +1,55 @@
1
1
  # dsh-bili-watch
2
2
 
3
- 给 AI「看」B 站视频的 DSH 插件:元数据、AI 字幕、评论区、本地转写、抽帧 OCR、九宫格拼图、弹幕热区。
3
+ 把一条 B 站视频变成模型能读的内容:元数据、评论、弹幕、AI 字幕、本地转写、抽帧 OCR。可以装在 DSH 里当插件,也能直接跑命令行。
4
4
 
5
- 一句话:模型能直接看一条 B 站视频——先用最便宜的方式拿到文字,文字不够再看画面。
5
+ 取内容的顺序是先用文字(字幕或转写),文字不够再抽帧看画面。只读元数据、评论、弹幕、搜索、热榜不需要任何额外依赖;抽帧相关命令要 ffmpeg,没装会明确报错并指出装法,不会假装成功。
6
6
 
7
7
  ## 安装
8
8
 
9
+ ### 装进 DSH 当插件
10
+
9
11
  ```bash
10
12
  dsh plugin --profile web add dsh-bili-watch
11
13
  ```
12
14
 
13
- **第二步不能省**:打开 profile 的 `package.json`,在 `dsh.profile.bundles` 数组里加一行 `"dsh-bili-watch"`。`dsh plugin add` 只写 `dependencies`,不写 bundles——漏了这一步插件装了但完全不生效(不报错、无入口)。装完重启 DSH。
15
+ **第二步容易漏**:打开 profile 的 `package.json`,在 `dsh.profile.bundles` 数组里加一行 `"dsh-bili-watch"`。`dsh plugin add` 只写 `dependencies`,不写 bundles。漏了这步插件装了但不生效,也不报错。改完重启 DSH。
16
+
17
+ 也可以把本仓库直接放进 `profiles/<名字>/node_modules/dsh-bili-watch`。
14
18
 
15
- 也可以把本仓库直接放到 `profiles/<名字>/node_modules/dsh-bili-watch`。
19
+ 插件依赖 DSH 自带的 `@deepseek-ai/dsh-tools`(peer,optional)。profile 里缺这个包时 `index.js` 会报 `ERR_MODULE_NOT_FOUND`,先补装再重启。
16
20
 
17
- > 插件依赖 DSH 自带的 `@deepseek-ai/dsh-tools`(peer,optional)。若 profile 缺这个内核工具包,`index.js` 会报 `ERR_MODULE_NOT_FOUND`,先补装再重启。
21
+ ### 只当命令行工具
22
+
23
+ ```bash
24
+ npm i -g dsh-bili-watch
25
+ bili-watch view BV1EPnG6DEJC
26
+ ```
27
+
28
+ 不装全局也行:clone 仓库后在目录里跑 `node tools/look.mjs view BV1EPnG6DEJC`。命令行的依赖和插件完全一样,`scripts/fetch-deps` 同样可用。
18
29
 
19
30
  ## 依赖
20
31
 
21
32
  | 能力 | 需要 | 没有时 |
22
33
  |---|---|---|
23
34
  | 元数据 / 评论 / 弹幕 / 搜索 / 热榜 | 无(匿名 HTTP) | — |
24
- | 抽帧 / 九宫格 / 字幕带 | `ffmpeg` | 跳过,文字档仍可用 |
35
+ | 抽帧 / 九宫格 / 字幕带 | `ffmpeg` | 报错并提示装法(`text` 会降级到读图) |
25
36
  | AI 字幕 | 一次扫码登录(SESSDATA) | 返回「无字幕轨」,自动降级 |
26
37
  | 本地转写 | Python 3.10+ 与 faster-whisper(`deps/.venv-asr`) | 跳过,自动降级 |
27
38
  | 画面 OCR | Python 3.10+ 与 rapidocr_onnxruntime(`deps/.venv-ocr`) | 跳过,只剩基础抽帧 |
28
39
  | 通用视频 URL | yt-dlp | 只支持 B 站 |
29
40
 
30
- 前置:Node.js ≥ 22(插件运行环境本身就有 node,命令行跑也一样)。
41
+ 环境:Node.js ≥ 22。装在 DSH 里时 DSH 自带 node,命令行跑也一样。
31
42
 
32
43
  `ffmpeg` 查找顺序:`--ffmpeg` 参数 → `BILI_LOOK_FFMPEG` → 插件 `deps/` → PATH。
33
44
 
34
- `deps/` 是运行期目录:Python venv、模型缓存、yt-dlp、凭证都放这里,默认不进 git(见 `.gitignore`)。ASR/OCR 的 Python 环境是**可选依赖**,不配也能用,只是会少两档。
45
+ `deps/` 用来放运行期文件:Python venv、模型、yt-dlp、凭证,默认不进 git(见 `.gitignore`)。ASR 和 OCR 的 Python 环境是可选的,不装也能用,只是少这两档。
35
46
 
36
- `deps/_bili-asr.py` 默认从 `hf-mirror.com` 下载模型(国内快);海外网络可先设 `HF_ENDPOINT=https://huggingface.co` 再跑 `fetch-deps`。
47
+ `deps/_bili-asr.py` 默认从 `hf-mirror.com` 下模型,国内快。海外网络可以先设 `HF_ENDPOINT=https://huggingface.co` 再跑 `fetch-deps`。
37
48
 
38
49
  ### 可选依赖(一键安装)
39
50
 
40
51
  ```powershell
41
- # Windows(powershell.exe 或 pwsh 都可以)
52
+ # Windows(powershell.exe 或 pwsh 都行)
42
53
  powershell -ExecutionPolicy Bypass -File scripts\fetch-deps.ps1 -Target all
43
54
  powershell -ExecutionPolicy Bypass -File scripts\fetch-deps.ps1 -Target all -Mirror cn # 国内网络:gh-proxy + 清华 PyPI + hf-mirror
44
55
 
@@ -53,28 +64,28 @@ bash scripts/fetch-deps.sh all
53
64
  BILI_LOOK_MIRROR=cn bash scripts/fetch-deps.sh all
54
65
  ```
55
66
 
56
- 脚本是幂等的:目标已存在就跳过,`-Force` 重下(Windows);`-DryRun` 只打印命令、不下载。装 venv 时会验证包能不能 import,上次装到一半的半成品会被自动重建。`-Target model` 依赖 ASR 环境先装好(脚本会提示)。
67
+ 脚本可以重复跑:目标已存在就跳过,`-Force` 重下(Windows),`-DryRun` 只打印命令。装 venv 时会验证包能不能 import,上次装到一半的会被重建。`-Target model` 需要 ASR 环境先装好,脚本会提示。
57
68
 
58
- **GitHub 下载不动怎么办**:ffmpeg 目标要从 GitHub 拉约 80 MB 的 BtbN 压缩包,国内直连经常断。三条替代路径:
69
+ **从 GitHub 下载很慢或断**:ffmpeg 要从 GitHub 拉约 80 MB 的压缩包,国内直连经常断。三条替代路径:
59
70
 
60
71
  1. 加 `-Mirror cn` 重试(走 gh-proxy);
61
- 2. 手动下载 `ffmpeg.exe` 放进 `deps\` 后重跑(会被跳过);
62
- 3. 已有 ffmpeg 就设 `BILI_LOOK_FFMPEG` 指向它。
72
+ 2. 手动下载 `ffmpeg.exe` 放进 `deps\` 再重跑(会被跳过);
73
+ 3. 已经有 ffmpeg 就设 `BILI_LOOK_FFMPEG` 指向它。
63
74
 
64
- macOS/Linux 的 ffmpeg 由系统包管理器安装(脚本只给提示),其余目标与 Windows 一致;sh 版本单项失败会继续跑完再汇总。
75
+ macOS/Linux 的 ffmpeg 用系统包管理器装,脚本只给提示。其余目标和 Windows 一样;sh 版本单项失败会跑完再汇总。
65
76
 
66
77
  ## 凭证
67
78
 
68
- **匿名也能用**:元数据、评论、抽帧、弹幕都不需要登录。
79
+ 匿名也有内容:元数据、评论、抽帧、弹幕都不需要登录。
69
80
 
70
- 只有「拿 AI 字幕」需要登录,二选一:
81
+ 只有拿 AI 字幕需要登录,二选一:
71
82
 
72
- 1. `login`:插件出二维码,手机 B 站扫码。凭证存插件 `deps/credential.json`,不出本机。
83
+ 1. `login`:插件出二维码,手机 B 站扫码。凭证存在插件 `deps/credential.json`,不出本机。
73
84
  2. `--cred <文件路径>`:读一份现成的 `{sessdata, bili_jct, buvid3, buvid4}` JSON。
74
85
 
75
- 凭证取值:给了 `--cred` 就只用它(读不到就按匿名跑,不会偷偷换回 `deps/credential.json`);没给才用 `deps/credential.json`;都没有就匿名。
86
+ 凭证顺序:给了 `--cred` 就只用它,读不到就按匿名跑;没给 `--cred` 才用 `deps/credential.json`;两者都没有就匿名。
76
87
 
77
- > 这份文件等于你的账号登录态。别分享、别提交、别上传。
88
+ 这份文件等同账号登录态。别分享、别提交、别上传。
78
89
 
79
90
  ## 命令
80
91
 
@@ -94,15 +105,17 @@ macOS/Linux 的 ffmpeg 由系统包管理器安装(脚本只给提示),其
94
105
  | `search <关键词> [--days 3]` | 搜视频 |
95
106
  | `hot [--limit 10]` | 综合热门榜 |
96
107
  | `login [--check] [--poll]` | 扫码登录 |
97
- | `clean` | 清空临时目录 `%TEMP%\bili-watch` |
108
+ | `clean` | 清空系统临时目录下的 `bili-watch`(Windows 是 `%TEMP%\bili-watch`) |
109
+
110
+ 工具侧的等价入口:`bili_watch` 工具(参数 `command` + `bv`),或 `/bili` 命令。
98
111
 
99
- 工具侧等价入口:`bili_watch` 工具(参数 `command` + `bv`),或 `/bili` 命令。
112
+ 表里只列常用参数。完整参数(`--out`、`--fresh`、`--scene`、`--ffmpeg`、`--cred`、`--fast`、`--mark-seen`、`--p` 等)跑 `bili-watch help` 看。
100
113
 
101
114
  ## 通用视频 URL
102
115
 
103
116
  `view` / `text` / `asr` / `frames` 接受非 B 站 URL(YouTube、X、直链 mp4 等),走 yt-dlp:
104
117
 
105
- - 把 `yt-dlp.exe` 放进 `deps/`,或设 `BILI_LOOK_YTDLP`,或让它在 PATH 里。
118
+ - `yt-dlp.exe` 放进 `deps/`,或设 `BILI_LOOK_YTDLP`,或让它出现在 PATH 里。
106
119
  - 下载按 URL 哈希隔离在 `%TEMP%\bili-watch\`,不会串目录。
107
120
  - `peek` / `sub` / `comments` / `danmaku` / `sheet` / `substrip` / `ocr` 只支持 B 站。
108
121
 
@@ -118,7 +131,7 @@ AI 字幕(需登录)
118
131
  读图(模型自己看帧)
119
132
  ```
120
133
 
121
- 每一步都会打印「为什么降级」,不会静默跳过。
134
+ 降级时会说明原因,不会静默跳过。
122
135
 
123
136
  ## 环境变量
124
137
 
@@ -131,13 +144,13 @@ AI 字幕(需登录)
131
144
 
132
145
  ## 成本
133
146
 
134
- - 字幕一次请求,最便宜。
135
- - 抽帧会下载视频(360p)并跑 ffmpeg,CPU 占用可以用 `--step` 调低频率;脚本已限 `-threads 2`。
136
- - 九宫格/字幕带是把多帧压成一张图,省 token。
147
+ - 字幕一次请求,最省。
148
+ - 抽帧会下载视频(360p)并跑 ffmpeg。`--step` 调低抽帧频率,脚本另外限了 `-threads 2`。
149
+ - 九宫格和字幕带把多帧压成一张图,省 token。
137
150
 
138
151
  ## 风险
139
152
 
140
- - **凭证**:等同账号登录态,泄露即被盗。只存本机、不进日志。
153
+ - **凭证**:等同账号登录态,泄露即被盗。只存本机,不进日志。
141
154
  - **频率**:正常看几条没问题;批量扫几百条会触发风控。
142
155
  - **只读**:插件只读,不点赞、不评论、不留观看历史。
143
156
 
package/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * 两侧执行同一份 lookup:spawn 插件自带的只读工具
9
9
  * <插件目录>\tools\look.mjs
10
- * 只读、默认匿名:不修改任何业务状态文件,可反复调用。
10
+ * 只读、默认匿名:不修改任何状态,可反复调用。
11
11
  */
12
12
  import { spawn } from 'node:child_process'
13
13
  import { dirname, join } from 'node:path'
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "dsh-bili-watch",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "private": false,
5
- "description": "A DSH plugin that lets an AI agent \"watch\" Bilibili videos: AI subtitles, local ASR, frame OCR, danmaku heatmap, comments, and nine-grid frame sheets.",
5
+ "description": "Bilibili video reader for DSH: subtitles, ASR, frame OCR, comments, danmaku.",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "bin": {
@@ -54,7 +54,7 @@
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@deepseek-ai/dsh": ">=0.2.0-rc.1 <0.3.0-0",
57
- "@deepseek-ai/dsh-tools": "*"
57
+ "@deepseek-ai/dsh-tools": ">=0.2.0-rc.1 <0.3.0-0"
58
58
  },
59
59
  "peerDependenciesMeta": {
60
60
  "@deepseek-ai/dsh": {