fix: correct youknow category page paths

This commit is contained in:
Harold
2026-04-18 15:24:42 +08:00
parent 160dd2a53f
commit eb6b907d96
2 changed files with 30 additions and 1 deletions
+12
View File
@@ -58,8 +58,20 @@ class TestYouKnowSpider(unittest.TestCase):
"""
result = self.spider.categoryContent("movie", "2", False, {})
self.assertEqual(result["page"], 2)
self.assertEqual(mock_request_html.call_args.args[0], "/show/2--------2---/")
self.assertEqual(result["list"][0]["vod_id"], "222")
@patch.object(Spider, "_request_html")
def test_category_content_uses_page1_path_without_page_number(self, mock_request_html):
mock_request_html.return_value = """
<a class="module-poster-item" href="/v/555.html" title="分类第一页" data-original="/page1.jpg">
<div class="module-item-note">HD</div>
</a>
"""
result = self.spider.categoryContent("movie", "1", False, {})
self.assertEqual(mock_request_html.call_args.args[0], "/show/2-----------/")
self.assertEqual(result["list"][0]["vod_id"], "555")
@patch.object(Spider, "_request_html")
def test_search_content_reuses_card_parser(self, mock_request_html):
mock_request_html.return_value = """
+18 -1
View File
@@ -144,6 +144,23 @@ class Spider(BaseSpider):
"total": pagecount * max(len(items), 1),
}
def _build_category_path(self, tid, pg):
page = int(pg)
if tid == "index":
return self.category_paths["index"]
type_map = {
"drama": "1",
"movie": "2",
"variety": "3",
"anime": "4",
"short": "55",
"doc": "5",
}
type_id = type_map.get(tid, "2")
if page <= 1:
return f"/show/{type_id}-----------/"
return f"/show/{type_id}--------{page}---/"
def _clean_text(self, text):
return re.sub(r"\s+", " ", str(text or "").replace("\xa0", " ")).strip()
@@ -249,7 +266,7 @@ class Spider(BaseSpider):
return {"list": self._parse_list_cards(html)}
def categoryContent(self, tid, pg, filter, extend):
path = self.category_paths.get(tid, self.category_paths["movie"]).format(pg=pg)
path = self._build_category_path(tid, pg)
html = self._request_html(
path,
expect_xpath="//*[contains(@class,'module-poster-item') or contains(@class,'module-card-item-poster')]",