Commit Graph

22 Commits

Author SHA1 Message Date
huangjianwu
41f17592c2 fix(backend): 部署韧性——模型自愈/就绪门禁/全局代理/启动诊断
- whisper: model.bin 截断/损坏时删目录重下重试一次,修「Unable to
  open file model.bin」死循环;mlx 同样按 config.json 判完整性
- /generate_note 加就绪门禁:本地转写引擎模型没下好直接拦截,返回
  reason=transcriber_model_not_ready,不让任务静默卡在首次下载
- 全局代理:新增 ProxyConfigManager(JSON 配置 + HTTP_PROXY env 兜底)
  + build_openai_client,统一注入代理到 LLM/Groq 客户端;yt-dlp 与
  youtube-transcript-api 也走代理
- build_openai_client 校验 api_key 非空,空 key 给「xxx 的 API Key
  未配置」而不是天书般的 Illegal header value b'Bearer '
- universal_gpt: 模型拒绝自定义 temperature(o1/o3/gpt-5 系列)时
  就地去掉参数重试,不消耗重试预算
- connect_test 改用真实 chat completion 而非 /v1/models 探测
- main.py: lifespan 拆 [startup 1/5..5/5] 分段日志 + 异常清晰定位
- /sys_health 重构为结构化返回 {backend,ffmpeg,db,whisper_model}

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 19:01:14 +08:00
huangjianwu
702b57c165 feat(bilibili): 优先走官方 player API 直拉字幕
之前 BilibiliDownloader.download_subtitles 走的是 yt-dlp 的 writesubtitles 路径,对 B 站签名/Cookie 的兼容性差,常常空手而归,落到音频下载 + Whisper 转写的慢路径。

新增 bilibili_subtitle.BilibiliSubtitleFetcher:
- /x/web-interface/view?bvid=... → 拿 cid
- /x/player/wbi/v2?bvid=...&cid=... → 拿 subtitle 列表(subtitle_url 已带 auth_key)
- 优先级:人工中文 > AI 中文 > 任意中文 > 任意非空
- fetch JSON body 解析为 TranscriptResult
- 通过 CookieConfigManager 自动注入 SESSDATA cookie(AI 字幕必需)

bilibili_downloader.download_subtitles 顺序改为:先试新 fetcher,失败再回退到原 yt-dlp 路径。NoteGenerator 的字幕优先逻辑无需改动——它本来就调 download_subtitles。

效果:
- B 站视频如果有字幕(人工或 AI),直接秒拿,跳过音频下载 + 转写
- 完全绕开 MLX Whisper 不可用 / 模型未下载 等转写器问题
- 拿不到字幕时仍可走原音频转写路径

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 11:55:50 +08:00
Lizhilin
c5e08e1ec6 fix: BilibiliDownloader 从 CookieConfigManager 读取 cookie 并注入 yt-dlp cookiefile 2026-04-28 23:20:34 +08:00
huangjianwu
f4801d5be7 feat(youtube): 使用 youtube-transcript-api 优先获取字幕,有字幕时跳过音频下载
- 新增 YouTubeSubtitleFetcher 模块,通过 youtube-transcript-api 获取字幕
- 重构笔记生成流程:缓存 → 平台字幕 → 按需下载 → 转写 fallback
- 有字幕时仅提取视频元信息,不下载音视频文件
- 添加 youtube-transcript-api 依赖

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:31:30 +08:00
sunnyclubcn
85b24dee40 feat: Add subtitle priority fetching and enhance mindmap export
## Subtitle Priority (Backend)
- Add download_subtitles() method to base downloader
- Implement Bilibili subtitle fetching with cookies support
- Implement YouTube subtitle fetching
- Support SRT and JSON3 format parsing
- Prioritize platform subtitles over Whisper transcription

## Mindmap Export Enhancements (Frontend)
- Add SVG vector export with proper viewBox handling
- Add XMind format export with Chinese character encoding fix
- Fix PNG/SVG export to capture full content by calling fit() before export
- Add JSZip dependency for XMind export

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 17:12:14 +08:00
JefferyHcool
d92cc4a977 feat(NoteForm): 增加文件上传状态反馈 2025-06-19 14:54:51 +08:00
JefferyHcool
8b1bc54f2d refactor(backend): 重构后端异常处理和模型管理
- 新增自定义异常类 BizException、NoteError 和 ProviderError
- 优化了模型管理相关的逻辑,包括加载、删除和测试连接等功能
- 改进了 Douyin 下载器的错误处理
- 调整了任务重试逻辑和笔记生成的异常处理- 更新了相关组件和页面以适应新的异常处理机制
2025-06-06 21:30:23 +08:00
黄建武
21c9d47495 feat(download): 添加快手下载器并优化下载配置功能
- 新增快手下载器,支持快手视频下载
- 添加下载配置页面,可设置各平台Cookies
- 优化后端接口,增加获取和更新Cookies的功能
- 前端新增Downloader组件和相关表单组件
- 更新路由配置,增加下载配置相关路由
2025-05-08 18:15:59 +08:00
黄建武
97f153646f feat(frontend): 新增多版本笔记功能,并做了向下兼容。
- 新增关于页面组件,介绍项目背景、功能和使用方法
- 重构笔记生成逻辑,支持多版本笔记
- 新增笔记版本选择、复制和导出功能
-优化笔记界面布局和交互
- 调整部分组件样式,提升用户体验
2025-05-04 11:00:54 +08:00
黄建武
04dad3b72a feat(downloaders): 添加抖音视频识别功能
- 新增 abogus.py 文件,实现 a_bogus 参数的生成逻辑
- 代码源自 JoeanAmier/TikTokDownloader 项目,并进行了适配和优化
- 功能包括生成用户代理字符串、加密 URL 参数和生成最终的 a_bogus值
- 提供了详细的注释和函数说明,便于理解和维护
2025-05-02 14:00:29 +08:00
思诺特
c65de4654f feat(local): 添加本地视频处理功能
- 实现本地视频上传和处理功能
- 新增 LocalDownloader 类处理本地视频
- 更新前端界面支持本地视频选择
- 添加视频封面提取和保存功能
- 优化后端路由支持本地视频上传
2025-04-28 13:34:09 +08:00
思诺特
84cd345b9f feat(frontend): 重构首页布局并添加生成历史组件
- 新增 History 组件用于展示生成历史记录
- 调整 HomeLayout 布局,增加 History 侧边栏
- 优化 NoteHistory 组件样式和布局- 更新首页样式,调整各个组件的位置和样式
2025-04-27 16:57:03 +08:00
思诺特
489fa78946 fix(env): 修复 Youtube 转义失败问题 2025-04-27 14:45:57 +08:00
Jefferyhcool
bb974b0b89 :feat 新增模型配置页面和相关功能
- 新增模型配置页面组件和路由
- 实现模型配置表单和相关逻辑- 添加全局配置入口和功能- 优化首页布局和样式- 新增 404 页面组件
- 更新部分组件样式和结构
2025-04-22 17:01:02 +08:00
Jefferyhcool
6c21aa2055 feat(bilibili_downloader): 更新视频下载格式选择
- 将音频下载格式更改为视频+音频组合格式
- 新格式优先选择bv*+ba,然后是bestvideo+bestaudio,最后是best
- 这个改动可以提高下载视频的质量,并确保视频和音频同步
2025-04-15 22:07:09 +08:00
Jefferyhcool
61a0c08df8 fix(bilibili_downloader): 修改音频下载格式为 mp4
- 将 BilibiliDownloader 类中的音频下载格式从 m4a改为 mp4
- 此修改解决了因 m4a 格式导致的文件名错误问题
2025-04-15 22:01:10 +08:00
Jefferyhcool
a966614dd2 feat(downloaders): 更新 Bilibili 和 YouTube 下载器格式选择- 将 Bilibili 和 YouTube 下载器的格式选择从视频格式更改为音频格式
-优先选择 m4a 格式的最佳音频,如果没有可用的 m4a 格式,则选择最佳音频格式
- 如果没有可用的音频格式,则选择最佳格式
2025-04-15 20:19:46 +08:00
思诺特
a395f8e1c1 feat(downloaders): 更新 Bilibili 和 YouTube 下载器的视频质量选择
- Bilibili 下载器:将视频格式选择更改为优先下载 MP4 格式,且分辨率不超过 480p
- YouTube 下载器:将视频格式选择更改为优先下载 MP4 格式,且分辨率不超过 480p
2025-04-15 11:39:38 +08:00
思诺特
ea565b8a9f fix(bilibili_downloader): 移除音频转码步骤并更改输出格式
- 移除了 ydl_opts 中的 postprocessors 设置,取消了将音频转码为 mp3 的步骤
- 将输出音频文件的扩展名从 mp3 改为 m4a
2025-04-15 10:44:00 +08:00
Jefferyhcool
7bf31ad16e fix(downloaders): 修复 Youtube 下载报错问题理
- 优化了临时文件清理逻辑,删除以指定文件名开头的所有相关文件
2025-04-15 00:16:03 +08:00
Jefferyhcool
1ebf236f4f feat(app): 添加日志记录功能
- 新增 logger 模块,用于全局日志记录
- 在关键位置添加日志输出,包括事件处理、文件清理、FFmpeg 检查等
- 优化数据库操作,增加日志记录
- 在主程序启动时添加日志输出
2025-04-14 19:50:44 +08:00
Jefferyhcool
0e0b8da317 first commit 2025-04-13 17:44:54 +08:00