dsh-bili-watch 0.2.20 → 0.2.22

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 +3 -3
  2. package/index.js +16 -5
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-bili-watch
2
2
 
3
- 将一条 B 站视频变成模型能读的内容:元数据、评论、弹幕、AI 字幕、本地转写、抽帧 OCR。可作为 DSH 插件运行,也可直接当命令行工具。支持 `b23.tv` 短链与 av 号;抽帧缓存放在哪可以自己定——面板里点「选择目录…」、设环境变量 `BILI_WATCH_CACHE`、或改 `deps/deps-config.json` 的 `cache`。
3
+ 将一条 B 站视频变成模型能读的内容:元数据、评论、弹幕、AI 字幕、本地转写、抽帧 OCR。可作为 DSH 插件运行,也可直接当命令行工具。支持 `b23.tv` 短链与 av 号;抽帧缓存位置可自定义,见下面「插件面板」的「缓存位置」。
4
4
 
5
5
  取内容的顺序是先用文字(字幕或转写),文字不够则抽帧看画面。只读元数据、评论、弹幕、搜索、热榜不需要任何额外依赖;抽帧相关命令需要 ffmpeg,未安装会明确报错并指出装法。
6
6
 
@@ -145,7 +145,7 @@ macOS/Linux 的 ffmpeg 用系统包管理器装,脚本只给提示。其余目
145
145
 
146
146
  ## 单条链接软提示
147
147
 
148
- 用户的消息里只有一条 B 站视频链接(BV 号或 `b23.tv` 短链)时,插件往消息流里补一句提示,告诉 agent 有这条链接可读、`peek` 最便宜。它**不会**替用户调用工具,也不会自动跑起来——只是让「贴链接不说话」这种场景不容易被漏掉。
148
+ 用户的消息里只有一条 B 站视频链接(BV 号或 `b23.tv` 短链)时,插件往消息流里补一句提示,告诉 agent 有这条链接可读、`peek` 最便宜。它**不会**替用户调用工具,也不会自动跑起来;作用只是让「贴链接不说话」这种场景不容易被漏掉。
149
149
 
150
150
  - `b23.tv` 短链会先自动展开:问公共 DNS(`223.5.5.5` → `119.29.29.29` → `1.1.1.1`)拿真实 IP,再直连读 302 里的 BV 号,绕开系统 DNS;展开失败才提示用户换成浏览器地址栏里的完整链接。
151
151
  - 为什么要兜底:部分内网 DNS 会把 `b23.tv` 答成 `31.13.x.x`(Facebook 段),这种环境下只有公共 DNS 这条路能展开(2026-10-23 实测)。
@@ -198,7 +198,7 @@ AI 字幕(需登录)
198
198
 
199
199
  ## 成本
200
200
 
201
- - 字幕接口带一次重试;`text` 最多次试两次(先匿名、有凭证再试一次)。
201
+ - 字幕接口带一次重试;`text` 最多尝试两次(先匿名,有凭证再试一次)。
202
202
  - 抽帧会下载视频(360p)并跑 ffmpeg。`--step` 的秒数调大能减少抽帧数,脚本另外限了 `-threads 2`。
203
203
  - 拼图和字幕带把多帧压成一张图,省 token。
204
204
 
package/index.js CHANGED
@@ -357,21 +357,32 @@ function writeDepsCfg(patch) {
357
357
  }
358
358
 
359
359
  /**
360
- * 弹原生选目录框(Windows)。脚本里只用 ASCII,避免 PS 5.1 按 ANSI 解码中文变乱。
360
+ * 弹原生选目录框(Windows)。脚本里只用 ASCII,避免 PS 5.1 按 ANSI 解码中文变乱;
361
+ * 选中的路径经 UTF-8 文件回传,不走 stdout——PS 5.1 的管道输出是当前代码页(中文系统为 GBK),
362
+ * 中文路径经管道会变成问号(2026-10-24 实测:「D:\007 Dsh工作区」显示成「D:\007 Dsh????」)。
361
363
  * 取消返回 null;非 Windows 直接报错,让面板提示手填。
362
364
  */
363
365
  function pickFolderDialog() {
364
366
  return new Promise((resolve, reject) => {
365
367
  if (process.platform !== 'win32') return reject(new Error('folder picker is Windows only; set the path manually'))
366
- const script = 'Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.FolderBrowserDialog; $d.Description = "bili-watch cache folder"; if ($d.ShowDialog() -eq "OK") { [Console]::Out.Write($d.SelectedPath) }'
368
+ const outFile = join(tmpdir(), `bili-watch-pick-${Date.now()}.txt`)
369
+ const script = [
370
+ 'Add-Type -AssemblyName System.Windows.Forms',
371
+ '$d = New-Object System.Windows.Forms.FolderBrowserDialog',
372
+ '$d.Description = "bili-watch cache folder"',
373
+ 'if ($d.ShowDialog() -eq "OK") { [IO.File]::WriteAllText(\'' + outFile + '\', $d.SelectedPath, (New-Object Text.UTF8Encoding($false))) }',
374
+ ].join('; ')
367
375
  const ps = spawn('powershell.exe', ['-NoProfile', '-STA', '-Command', script], { windowsHide: false })
368
- let out = ''
369
376
  let err = ''
370
- ps.stdout.on('data', (c) => { out += c })
371
377
  ps.stderr.on('data', (c) => { err += c })
372
378
  ps.on('close', (code) => {
379
+ let picked = ''
380
+ try {
381
+ if (existsSync(outFile)) picked = readFileSync(outFile, 'utf8').trim()
382
+ } catch {}
383
+ try { rmSync(outFile, { force: true }) } catch {}
373
384
  if (code !== 0) return reject(new Error(err.trim() || ('powershell exit ' + code)))
374
- resolve(out.trim() || null)
385
+ resolve(picked || null)
375
386
  })
376
387
  ps.on('error', reject)
377
388
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-bili-watch",
3
- "version": "0.2.20",
3
+ "version": "0.2.22",
4
4
  "private": false,
5
5
  "description": "把 B 站视频读成文本给 DSH agent 用:元数据、评论、弹幕、字幕、本地转写、抽帧 OCR;支持 b23.tv 短链与 av 号,抽帧缓存目录可换。只读命令零依赖。",
6
6
  "type": "module",