mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-09-05 07:36:45 +08:00
fix: 规范化含 BV 号的任意 B 站链接(稍后再看/收藏夹/追踪参数)
从"稍后再看"(/list/watchlater/?bvid=BV...)、收藏夹播放页等场景 复制的链接会被判为无效链接,尽管其中包含完整 BV 号;校验通过的 链接也会带着追踪参数原样传给 yt-dlp。 在请求入口新增 normalize_video_url():提取 BV 号重建标准 /video/BVxxx 链接,保留分 P 参数(?p=N),丢弃其余查询参数。 b23.tv 短链与其他平台行为不变,无 BV 号链接仍按原逻辑拒绝。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
6d67e5a76a
commit
b85d7bc1ff
@@ -35,6 +35,29 @@ def extract_video_id(url: str, platform: str) -> Optional[str]:
|
||||
return None
|
||||
|
||||
|
||||
def normalize_video_url(url: str) -> str:
|
||||
"""
|
||||
将任意包含 BV 号的 B 站链接规范化为标准视频链接。
|
||||
|
||||
支持稍后再看(/list/watchlater/?bvid=BV...)、收藏夹播放页(/list/mlXXX?bvid=BV...)、
|
||||
带追踪参数的分享链接等。保留分 P 参数,丢弃其余查询参数。
|
||||
|
||||
b23.tv 短链与无 BV 号的链接原样返回(后者交由校验器拒绝)。
|
||||
"""
|
||||
if "b23.tv" in url:
|
||||
return url
|
||||
|
||||
match = re.search(r"BV([0-9A-Za-z]+)", url)
|
||||
if not match:
|
||||
return url
|
||||
|
||||
normalized = f"https://www.bilibili.com/video/BV{match.group(1)}"
|
||||
p = extract_bilibili_p_number(url)
|
||||
if p:
|
||||
normalized += f"?p={p}"
|
||||
return normalized
|
||||
|
||||
|
||||
def resolve_bilibili_short_url(short_url: str) -> Optional[str]:
|
||||
"""
|
||||
解析哔哩哔哩短链接以获取真实视频链接
|
||||
|
||||
Reference in New Issue
Block a user