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.
- package/README.md +3 -3
- package/index.js +16 -5
- 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
|
|
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
|
|
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(
|
|
385
|
+
resolve(picked || null)
|
|
375
386
|
})
|
|
376
387
|
ps.on('error', reject)
|
|
377
388
|
})
|