#450·BiliNote

feat(utils): 提取 detect_platform helper,集中 URL 到平台的识别逻辑

Author: EricWang1358Created Aug 25, 2026Updated Aug 25, 2026

问题 / Feature request

pp/validators/video_url_validator.py 中的 is_supported_video_url(url) 只能返回 ool,调用方若想同时知道是哪个平台,要么自己重写正则,要么额外 urlparse 一遍。这让前后端跨工作区(ackend / BillNote_frontend / BillNote_extension)复用同一份平台识别逻辑时出现重复代码:前端 platform.ts / 扩展 platform.ts 各自维护了一份正则表。

期望

  • 在 pp/utils/url_parser.py 中新增 detect_platform(url) -> Optional[str](返回 "bilibili" | "youtube" | "douyin" | "kuaishou" | None);
  • 让 is_supported_video_url 复用它,保持单一数据源;
  • 把正则表 SUPPORTED_PLATFORMS 抽到 url_parser.py,validator 与新 helper 都引用。

为什么建议独立 PR

  • 改动面小(单个文件加约 20 行,加 1 个测试文件),与 bcut / kuaishou / docker 三个 PR 完全正交。
  • 这次为了避免与它们在合并时产生冲突,先单独立 issue 跟踪,后续单独再开 PR。

关联

  • 见 BiliNote CLAUDE.md "架构" 一节:浏览器扩展 src/logic/platform.ts 和后端 alidators/video_url_validator.py 是镜像实现,确实有重复。