huangjianwu
|
67486c4d66
|
chore(release): 2.4.1
|
2026-06-17 10:00:34 +08:00 |
|
Jianwu Huang
|
54714faa73
|
Merge pull request #410 from JefferyHcool/fix/bilibili-412-dm-img-params
fix(bilibili): 注入 dm_img 风控参数修复 wbi/playurl 412
|
2026-06-17 09:58:37 +08:00 |
|
Jianwu Huang
|
f6ba347718
|
Merge pull request #409 from wmsdsb/fix/bilibili-multipart-p-number-clean
fix(bilibili): 修正分P视频字幕优先链路未传p参数导致取错集
|
2026-06-17 09:58:34 +08:00 |
|
Jianwu Huang
|
67253a1bf2
|
Merge pull request #381 from Loker-Choi/fix/youtube-shorts-url
fix(youtube): 支持 Shorts 链接
|
2026-06-17 09:58:30 +08:00 |
|
huangjianwu
|
f79dc612fb
|
fix(bilibili): 注入 dm_img 风控参数修复 wbi/playurl 412
B 站 wbi/playurl 网关新增 dm_img_list/dm_img_str/dm_cover_img_str/
dm_img_inter + web_location 风控校验,缺失即返回 HTTP 412。对于网页不内嵌
playinfo、必须走 API 的视频(如 BV1X9L16oEgB),yt-dlp(含最新版)尚未适配,
导致下载失败,且刷新 cookie 无效。
通过猴补丁在 BilibiliBaseIE._download_playinfo 的 wbi 签名前注入哑值 dm_img
参数(取值形态对齐 yt-dlp 自身在 arc/search 端点的用法),即可恢复 200。
已验证补丁对固定版 2025.03.31 与最新 2026.06.09 签名一致、向前兼容;新增 4 个单元测试。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-17 09:55:54 +08:00 |
|
wmsdsb137
|
ab9ca6a026
|
fix: address Copilot review suggestions
- Remove unused Tuple import
- Validate /pN suffix p >= 1
- Reuse resolve_bilibili_short_url in fetch_subtitles
- Deduplicate short URL resolution
|
2026-06-16 21:01:27 +08:00 |
|
wmsdsb137
|
2ba409880e
|
fix(bilibili): 修正分P视频字幕优先链路未传p参数导致取错集
问题:B站分P视频(如62集课程),提交?p=36链接时,
字幕优先链路通过x/web-interface/view API拿cid时未传p参数,
默认取第1集cid,导致生成的是第1集的笔记。
同时yt-dlp正确下载了p36音频,但被跳过。
修复:
- url_parser新增extract_bilibili_p_number()提取URL中的p参数
- bilibili_subtitle的_get_cid()接收p参数,从data.pages[p-1]取对应分P的cid
- fetch_subtitles()调用extract_bilibili_p_number()透传p
|
2026-06-16 20:54:36 +08:00 |
|
huangjianwu
|
71c931be55
|
Merge branch 'master' into develop
|
2026-06-07 02:09:05 +08:00 |
|
huangjianwu
|
f5bfb43619
|
docs(readme): 群二维码改为关注公众号回复「交流群」获取
将 README 社区区块中 5 个会过期的微信群二维码,替换为公众号二维码,
关注后回复「交流群」获取最新群码,避免群码失效。与关于页保持一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:09:03 +08:00 |
|
huangjianwu
|
24b4d4c57c
|
Merge branch 'release/2.4.0' into develop
|
2026-06-07 02:05:37 +08:00 |
|
huangjianwu
|
ddaa0eef92
|
Merge branch 'release/2.4.0'
v2.4.0
|
2026-06-07 02:05:37 +08:00 |
|
huangjianwu
|
e41a3e27eb
|
chore(release): 2.4.0
- 版本号 2.3.4 → 2.4.0(tauri.conf.json / README)
- CHANGELOG 补充 2.4.0、回填 2.3.4
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:05:30 +08:00 |
|
huangjianwu
|
fd18aa2955
|
Merge branch 'pr-383' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
0a93911f3e
|
Merge branch 'docs/gpu-deploy-notes' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
d0760bcbbc
|
Merge branch 'feat/configurable-whisper-models' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
2fc558e00a
|
Merge branch 'master' into develop
|
2026-06-07 02:01:09 +08:00 |
|
huangjianwu
|
a83642e602
|
feat(about): 群二维码改为扫描公众号回复「交流群」获取
关于页社区区块由直接展示会过期的微信群二维码,改为展示公众号二维码,
引导用户关注公众号后回复「交流群」获取最新群二维码,避免群码过期失效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:00:56 +08:00 |
|
huangjianwu
|
9bc3b2960b
|
Merge branch 'master' into develop
|
2026-05-27 02:52:11 +08:00 |
|
huangjianwu
|
095d772c7d
|
Merge branch 'release/2.3.4'
v2.3.4
|
2026-05-27 02:51:43 +08:00 |
|
huangjianwu
|
2e3fda7df4
|
feat: 新增 BiliNote AI笔记系统一对一搭建服务二维码(README + 关于页),bump 版本至 2.3.4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-27 02:51:15 +08:00 |
|
Jianwu Huang
|
2ea95b2fad
|
Merge pull request #382 from techotaku39/fix/frontend-about-version
fix(frontend): 同步关于页版本号
|
2026-05-27 02:37:03 +08:00 |
|
techotaku39
|
e78b687096
|
fix(extension): improve title display and mindmap export
|
2026-05-26 21:15:39 +08:00 |
|
Loker
|
7d4573f84e
|
fix(youtube): support shorts urls
|
2026-05-26 17:13:28 +08:00 |
|
techotaku39
|
9d1a7cd699
|
fix(frontend): 同步关于页版本号
|
2026-05-26 15:54:05 +08:00 |
|
Jianwu Huang
|
f2d8ece0c1
|
Merge pull request #374 from techotaku39/fix/backend-api-key-mask-and-ffmpeg-path
fix(backend): 防御 API Key 掩码污染并修复 EXE 版 .env 加载路径
|
2026-05-25 13:21:38 +08:00 |
|
Jianwu Huang
|
7bc4b0114e
|
Merge pull request #375 from techotaku39/feature/extension-show-title-instead-of-url
feat(extension): 侧边栏与 popup 用视频标题替代链接显示
|
2026-05-25 13:21:11 +08:00 |
|
Jianwu Huang
|
f7ea6f72d9
|
Merge pull request #377 from techotaku39/fix/markdown-anchor-navigation
fix(frontend): 修复 Markdown 目录锚点跳转与 Tauri 路由
|
2026-05-25 13:20:19 +08:00 |
|
techotaku39
|
905dbcce47
|
fix(frontend): 增强锚点链接模糊匹配,兼容 LLM 生成的不一致目录格式
|
2026-05-24 03:21:20 +08:00 |
|
techotaku39
|
ebdb254fc6
|
fix(frontend): 修复 Markdown 目录锚点跳转与 Tauri 路由
- 安装 rehype-slug 插件,自动为 heading 生成 id,解决目录链接无锚点目标的问题
- 自定义 <a> 组件处理内部锚点链接,阻止默认刷新行为并使用 scrollIntoView 平滑滚动
- Tauri 桌面端改用 HashRouter,避免刷新时 404 及错误打开外部浏览器
fixes #xxx
Co-Authored-By: HAPI <noreply@hapi.run>
|
2026-05-24 03:21:20 +08:00 |
|
techotaku39
|
1eb213e215
|
feat(extension): 侧边栏与 popup 用视频标题替代链接显示
在任务未完成的早期阶段(PENDING/DOWNLOADING 等),侧边栏和 popup
只能回退到 videoUrl,用户看到的是一长串链接,难以辨认。
改动:
- TaskRecord 新增 title 字段,用于存储浏览器标签页标题
- popup 创建任务时保存 tab.title
- background startTask 接收可选 title,右键菜单和悬浮按钮均传入
- 显示优先级:result.audio_meta.title > title > videoUrl
- 所有平台(Bilibili / YouTube / Douyin / Kuaishou)均受益
测试:
- pnpm typecheck 通过
- pnpm build 通过
- 在 B 站、YouTube 视频页提交任务,侧边栏和 popup 均显示标题而非链接
|
2026-05-24 00:06:21 +08:00 |
|
techotaku39
|
4425239717
|
fix(backend): 防御 API Key 掩码污染并修复 EXE 版 .env 加载路径
- provider.py: 更新供应商时,若 api_key 包含 '*'(掩码字符),
跳过该字段,防止前端展示用的 mask_key() 值被误写入数据库。
- ffmpeg_helper.py: load_dotenv() 默认只从 CWD 查找 .env,
PyInstaller 打包后 CWD 为 EXE 目录,导致 _internal/.env 被忽略。
改为遍历多个候选路径(CWD、脚本目录、项目根目录、_internal/),
确保源码和打包两种场景都能正确加载环境变量。
|
2026-05-23 22:49:56 +08:00 |
|
huangjianwu
|
64a0400792
|
docs(readme): 补全 GPU/CUDA 部署说明
原 CUDA 段落只有一行链接。补上实操步骤与常见坑:
- 宿主机前提:NVIDIA 驱动 + NVIDIA Container Toolkit + --gpus all 验证命令
- 切换:先 docker-compose down(两套 compose 容器名相同)再 -f docker-compose.gpu.yml up --build -d
- 数据不丢(两套 compose 都绑挂 ./backend);首次构建大而慢
- 只有本地 Faster Whisper 吃 GPU(在线引擎无关);device 自动检测无需配置
- 确认走 GPU 的方法 + 没走 GPU 的排查清单 + 国内镜像 build-arg 提示
另:把 compose 块里 GPU 那行 up -d 改成 up --build -d(首次需构建)。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 21:51:47 +08:00 |
|
huangjianwu
|
58d992f28f
|
feat(transcriber): 可配置 whisper 模型 + 名称映射(自定义 HF repo / 本地路径)
此前 fast-whisper 把「size → Systran/faster-whisper-{size}」的约定隐式散落在
加载/下载/检测三处,用户想用命名不符该约定的模型(社区微调版、或自己下到本地
的模型)接不上。本功能把映射显式化 + 可配置(对齐已有的 MLX_MODEL_MAP 模式)。
后端:
- 新增 app/transcriber/whisper_models.py 注册表:内置映射 + 用户自定义
(config/whisper_models.json 持久化,Docker 下随 config 卷保留);resolve
优先级 自定义 > 内置 > 直通(含 / 的 repo_id / 已存在本地目录)。
- whisper.py / config.py 的加载、下载、完整性检测统一走 resolve;HF cache 目录从
任意 repo_id 推导(models--{org}--{name})不再写死 Systran;本地路径跳过下载,
_purge_cache 绝不删用户本地模型。
- 新增 /whisper_models 增删查 API;/transcriber_config 返回内置+自定义列表;
下载校验放开到「已登记/可解析」的模型。
前端:transcriber.tsx 新增「自定义模型」卡片(增删 + 下载状态),模型下拉自动含自定义。
Docker:自定义 HF 模型下到 /app/backend/models(v2.3.3 models 卷已持久化);本地模型
走挂载目录 + 配置路径,UI 已提示挂载。
测试:tests/test_whisper_models.py 13 个单测全过;并在 v2.3.3 镜像真实后端环境做了
import 链 + resolve + 真实模型检测的集成冒烟,均通过。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 15:09:06 +08:00 |
|
huangjianwu
|
db556b8991
|
Merge branch 'release/2.3.3'
v2.3.3:预构建镜像持久化数据库/笔记,修升级丢配置与历史。
v2.3.3
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
717df2af7b
|
Merge branch 'release/2.3.3' into develop
回合并 v2.3.3 版本号。
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
b431db545a
|
docs: v2.3.3 CHANGELOG + README + tauri 版本
Docker 镜像数据持久化修复版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
25face4b67
|
Merge branch 'fix/docker-data-persistence' into develop
v2.3.3:预构建镜像持久化数据库/笔记,修升级丢配置与历史。
|
2026-05-22 14:06:24 +08:00 |
|
huangjianwu
|
edfd6e4765
|
fix(docker): 预构建镜像持久化数据库/笔记,修升级丢配置与历史
README 的 docker run 只挂了 -v …:/app/backend/data(仅媒体缓存),但
SQLite 库在 /app/backend/bili_note.db、笔记在 /app/backend/note_results
都不在该卷下 → 用户删容器重建(如 docker pull 升级镜像)会丢失 LLM
供应商配置和全部笔记历史。
- Dockerfile.complete:DATABASE_URL 重定向到 /app/backend/data/bili_note.db、
NOTE_OUTPUT_DIR 改到 data/note_results,并预建 /app/backend/data 目录;
两条 supervisord environment 行同步(兜底默认值 + %(ENV_*)s 透传)。
- README:docker run 改挂 data(库+笔记)/ config(供应商·Cookie·转写配置)/
static(截图)/ models(模型缓存,可选)四个数据卷,并警告不要挂整个
/app/backend(命名卷会固化镜像内代码,导致 docker pull 升级不生效)。
- docker-build.yml:同步发布说明里 echo 的 run 命令。
截图仍留在 /app/backend/static(static_dir 硬编码服务,不能重定向),单独挂卷。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 13:30:42 +08:00 |
|
huangjianwu
|
b53cafda5a
|
Merge branch 'release/2.3.2' into develop
回合并 v2.3.2 版本号。
|
2026-05-22 11:41:17 +08:00 |
|
huangjianwu
|
adda5fd240
|
Merge branch 'release/2.3.2'
v2.3.2:修后端启动崩溃(ctranslate2 4.6.0) + whisper 模型路径 + 桌面端版本号。
v2.3.2
|
2026-05-22 11:41:04 +08:00 |
|
huangjianwu
|
3e28f1fe38
|
docs: v2.3.2 CHANGELOG + README + tauri 版本
docker 启动崩溃 / whisper 模型路径 / 桌面端版本号 修复版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:40:55 +08:00 |
|
huangjianwu
|
bffa285cd0
|
Merge branch 'fix/docker-startup-and-qr' into develop
v2.3.2 修复集:
- ctranslate2 4.5.0→4.6.0 修后端启动崩溃(可执行栈 / glibc 2.41)
- whisper 模型下载/加载统一 HF cache 布局
- 桌面端构建版本号从 tag 注入(修产物恒为 2.0.0)
|
2026-05-22 11:40:21 +08:00 |
|
huangjianwu
|
b740e70068
|
fix(desktop): 构建时从 tag 注入版本号,修产物版本恒为 2.0.0
桌面端构建产物(.dmg/.msi 文件名 + app 内部版本)一直是 2.0.0:
Tauri 取 tauri.conf.json 的静态 version 字段作为产物版本,而 Release
工作流只把 tag 名用作 Release 标题,没同步到 conf → 产物版本与 Release
版本错位。
在 pnpm tauri build 前新增 Sync version 步骤,从 github.ref_name(形如
v2.3.2,去掉前缀 v)注入版本到 tauri.conf.json。以后每次 tag 发版自动
对齐;workflow_dispatch 手动构建无 tag 时跳过,保留静态值不破坏。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:40:04 +08:00 |
|
huangjianwu
|
261c95cf12
|
fix(transcriber): whisper 模型下载/加载统一走 HF cache 布局
此前用 modelscope 下到自定义目录 whisper-{size}/ 再把该路径传给
WhisperModel。但 faster-whisper 1.1.1 只要 path 含 '/' 就当成 HF
repo_id 处理,没有「本地目录直接返回」分支 → 在线请求失败后 fallback
local_files_only,又因 modelscope 布局命不中 HF cache → LocalEntryNotFound,
误导用户以为是「离线模式」。
改为下载与加载路径对齐:
- 下载:huggingface_hub.snapshot_download(cache_dir=model_dir),落到 HF
cache 布局 models--Systran--faster-whisper-{size}/snapshots/<hash>/
- 加载:WhisperModel(model_size_or_path=size, download_root=model_dir),
让 faster-whisper 自己映射到 Systran/faster-whisper-* 并命中同一 cache
- 完整性检测 / 损坏自愈(_purge_cache) 同步按 HF cache 布局,并兼容老
modelscope 目录(向后兼容已下载的老用户)
HF_ENDPOINT 已在 Dockerfile 指向 hf-mirror.com,国内可用。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:27:03 +08:00 |
|
huangjianwu
|
1cc7f38e14
|
fix(backend): 升级 ctranslate2 4.5.0→4.6.0 修复后端启动崩溃
Docker 容器反复重启,启动即报:
ImportError: libctranslate2-*.so.4.5.0: cannot enable executable
stack as shared object requires: Invalid argument
根因:ctranslate2 4.5.0 预编译 wheel 把共享库标记为「需要可执行栈」,
新内核 / glibc 2.41+ 加载时拒绝并返回 EINVAL。faster-whisper 在
whisper.py 顶层 import,import 失败直接拖垮整个后端启动 → 重启死循环。
ctranslate2 4.6.0 加入 noexecstack 链接标志(OpenNMT/CTranslate2 #1852、
#1861)从 wheel 层根治。faster-whisper 1.1.1 依赖 ctranslate2<5,>=4.0,
4.6.0 兼容;同时覆盖 web / GPU / 桌面 三条构建链。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:26:49 +08:00 |
|
huangjianwu
|
7fffd6873b
|
Merge branch 'release/2.3.1' into develop
回合并 v2.3.1 版本号(CHANGELOG + README)。
|
2026-05-22 10:51:49 +08:00 |
|
huangjianwu
|
7b927db363
|
Merge branch 'release/2.3.1'
v2.3.1:更新微信交流群二维码(群 1-5)。
v2.3.1
|
2026-05-22 10:51:39 +08:00 |
|
huangjianwu
|
c42ceaaa32
|
docs: v2.3.1 CHANGELOG + README 版本
二维码热修补丁版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 10:51:30 +08:00 |
|
huangjianwu
|
177ee4ba3a
|
Merge branch 'fix/docker-startup-and-qr' into develop
更新微信交流群二维码(群 1-5,旧码即将失效)。
同步 master 上的二维码热修(README 二维码区块 + 5 张入群图)到 develop。
|
2026-05-22 10:51:05 +08:00 |
|
huangjianwu
|
aae17abf9a
|
docs: 更新微信交流群二维码(群 1-5,有效期至 5/29)
旧二维码即将失效,替换 README 中 5 个交流群的入群二维码。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 10:42:12 +08:00 |
|