腾讯视频

This commit is contained in:
Harold
2026-04-24 15:25:05 +08:00
parent 0d658a368b
commit 9add1ebf3b
2 changed files with 38 additions and 2 deletions
+25
View File
@@ -156,6 +156,31 @@ class TestTencentSpider(unittest.TestCase):
"第1集$https://v.qq.com/x/cover/cid001/vid001.html#终极预告$https://v.qq.com/x/cover/cid001/vid002.html",
)
@patch.object(Spider, "_get_batch_video_info")
@patch.object(Spider, "fetch")
def test_detail_content_handles_nested_typ_and_nam_lists(self, mock_fetch, mock_get_batch_video_info):
mock_fetch.return_value = SimpleNamespace(
json=lambda: {
"c": {
"title": "示例影片",
"year": "2024",
"description": "剧情简介",
"pic": "/poster.jpg",
"video_ids": ["vid001"],
},
"typ": [["动漫", "1"], ["冒险", "2"]],
"nam": [["演员甲", "a1"], ["演员乙", "a2"]],
"rec": "更新中",
}
)
mock_get_batch_video_info.return_value = [{"vid": "vid001", "title": "1", "type": "正片"}]
result = self.spider.detailContent(["cid001"])
vod = result["list"][0]
self.assertEqual(vod["type_name"], "动漫,冒险")
self.assertEqual(vod["vod_actor"], "演员甲,演员乙")
@patch.object(Spider, "post")
def test_search_content_collects_normal_and_area_results(self, mock_post):
mock_post.return_value = SimpleNamespace(
+13 -2
View File
@@ -84,6 +84,17 @@ class Spider(BaseSpider):
raw = raw[: -len(strip_suffix)]
return json.loads(raw) if raw else {}
def _join_text_list(self, values):
parts = []
for item in values or []:
if isinstance(item, (list, tuple)):
text = next((str(value).strip() for value in item if str(value).strip()), "")
else:
text = str(item).strip()
if text:
parts.append(text)
return ",".join(parts)
def _get_batch_video_info(self, vids):
results = []
for start in range(0, len(vids or []), 30):
@@ -161,8 +172,8 @@ class Spider(BaseSpider):
vod = {
"vod_id": raw_id,
"vod_name": ((payload.get("c") or {}).get("title") or ""),
"type_name": ",".join(payload.get("typ", []) or []),
"vod_actor": ",".join(payload.get("nam", []) or []),
"type_name": self._join_text_list(payload.get("typ", []) or []),
"vod_actor": self._join_text_list(payload.get("nam", []) or []),
"vod_year": ((payload.get("c") or {}).get("year") or ""),
"vod_content": ((payload.get("c") or {}).get("description") or ""),
"vod_remarks": payload.get("rec", "") or "",