fix(kb-bilibili): 分离API和下载请求,禁用下载自动解压

This commit is contained in:
2026-02-12 10:19:50 +08:00
parent 9dec66d2bf
commit 98c689eaa5
2 changed files with 35 additions and 8 deletions
@@ -31,7 +31,6 @@ class BilibiliContent:
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
@@ -58,10 +57,11 @@ class BilibiliContent:
result = {"success": False, "bvid": bvid, "message": "", "filepath": None, "metadata": {}}
try:
async with aiohttp.ClientSession(headers=self._get_headers()) as session:
# API 请求使用自动解压
async with aiohttp.ClientSession(headers=self._get_headers()) as api_session:
# 获取视频信息
print(f"获取视频信息: {bvid}")
async with session.get("https://api.bilibili.com/x/web-interface/view", params={'bvid': bvid}) as resp:
async with api_session.get("https://api.bilibili.com/x/web-interface/view", params={'bvid': bvid}) as resp:
data = await resp.json()
if data.get('code') != 0:
@@ -77,7 +77,7 @@ class BilibiliContent:
# 获取播放地址
print(f"获取视频流...")
async with session.get("https://api.bilibili.com/x/player/playurl",
async with api_session.get("https://api.bilibili.com/x/player/playurl",
params={'bvid': bvid, 'cid': cid, 'qn': quality}) as resp:
play_data = await resp.json()
@@ -97,7 +97,9 @@ class BilibiliContent:
safe_title = "".join(c for c in title if c.isalnum() or c in (' ', '-', '_')).strip()[:30]
output_path = self.output_dir / f"{safe_title}_{bvid}.flv"
async with session.get(video_url) as resp:
# 视频下载使用禁用自动解压的 session
async with aiohttp.ClientSession(headers=self._get_headers(), auto_decompress=False) as download_session:
async with download_session.get(video_url) as resp:
with open(output_path, 'wb') as f:
async for chunk in resp.content.iter_chunked(81920):
f.write(chunk)