feat: add tengxun category and batch helper

This commit is contained in:
Harold
2026-04-23 21:08:58 +08:00
parent 306a0d5bcc
commit c87f96d417
2 changed files with 121 additions and 0 deletions
+49
View File
@@ -21,6 +21,13 @@ HOME_HTML = """
</div>
"""
CATEGORY_HTML = """
<div class="list_item">
<a data-float="/x/cover/cid001/vid001.html"><img alt="三体" src="https://img.test/c.jpg"></a>
<a>更新至30集</a>
</div>
"""
class TestTencentSpider(unittest.TestCase):
def setUp(self):
@@ -71,6 +78,48 @@ class TestTencentSpider(unittest.TestCase):
},
)
@patch.object(Spider, "fetch")
def test_category_content_maps_filters_and_prefixes_channel(self, mock_fetch):
mock_fetch.return_value = SimpleNamespace(text=CATEGORY_HTML)
result = self.spider.categoryContent(
"tv",
"2",
False,
{
"sort": "18",
"iyear": "2024",
"year": "2024",
"type": "17",
"feature": "4",
"area": "2",
"itrailer": "1",
"sex": "1",
},
)
request_url = mock_fetch.call_args.args[0]
self.assertIn("channel=tv", request_url)
self.assertIn("offset=21", request_url)
self.assertIn("sort=18", request_url)
self.assertIn("iyear=2024", request_url)
self.assertIn("year=2024", request_url)
self.assertIn("itype=17", request_url)
self.assertIn("ifeature=4", request_url)
self.assertIn("iarea=2", request_url)
self.assertIn("itrailer=1", request_url)
self.assertIn("gender=1", request_url)
self.assertEqual(result["list"][0]["vod_id"], "tv$/x/cover/cid001/vid001.html")
self.assertEqual(result["page"], 2)
self.assertEqual(result["limit"], 21)
self.assertEqual(result["pagecount"], 9999)
@patch.object(Spider, "fetch")
def test_get_batch_video_info_parses_qzoutputjson_payload(self, mock_fetch):
mock_fetch.return_value = SimpleNamespace(
text='QZOutputJson={"results":[{"fields":{"vid":"vid001","title":"第1集","category_map":["0","正片"]}}]};'
)
result = self.spider._get_batch_video_info(["vid001"])
self.assertEqual(result, [{"vid": "vid001", "title": "第1集", "type": "正片"}])
if __name__ == "__main__":
unittest.main()