feat: add dida player routing

This commit is contained in:
Harold
2026-04-19 18:28:07 +08:00
parent c492691194
commit 9acceb289a
2 changed files with 46 additions and 0 deletions
+26
View File
@@ -143,6 +143,32 @@ class TestDidaSpider(unittest.TestCase):
self.assertEqual(result["list"][0]["vod_play_from"], "uc")
self.assertEqual(result["list"][0]["vod_play_url"], "合集$https://drive.uc.cn/s/u1")
def test_player_content_returns_direct_netdisk_link(self):
result = self.spider.playerContent("quark", "https://pan.quark.cn/s/demo", {})
self.assertEqual(result, {"parse": 0, "playUrl": "", "url": "https://pan.quark.cn/s/demo"})
def test_player_content_supports_uc_baidu_xunlei_aliyun_links(self):
self.assertEqual(
self.spider.playerContent("uc", "https://drive.uc.cn/s/u1", {})["url"],
"https://drive.uc.cn/s/u1",
)
self.assertEqual(
self.spider.playerContent("baidu", "https://pan.baidu.com/s/b1", {})["url"],
"https://pan.baidu.com/s/b1",
)
self.assertEqual(
self.spider.playerContent("xunlei", "https://pan.xunlei.com/s/x1", {})["url"],
"https://pan.xunlei.com/s/x1",
)
self.assertEqual(
self.spider.playerContent("aliyun", "https://www.alipan.com/s/a1", {})["url"],
"https://www.alipan.com/s/a1",
)
def test_player_content_returns_empty_for_non_netdisk_input(self):
result = self.spider.playerContent("播放线路", "/play/111-1-1.html", {})
self.assertEqual(result, {"parse": 0, "playUrl": "", "url": ""})
if __name__ == "__main__":
unittest.main()
+20
View File
@@ -272,3 +272,23 @@ class Spider(BaseSpider):
continue
result["list"].append(self._parse_detail_page(self._request_html(vod_id), vod_id))
return result
def _is_netdisk_url(self, value):
text = self._stringify(value).strip().lower()
return any(
token in text
for token in [
"drive.uc.cn",
"pan.quark.cn",
"pan.baidu.com",
"pan.xunlei.com",
"alipan.com",
"aliyundrive.com",
]
)
def playerContent(self, flag, id, vipFlags):
raw = self._stringify(id).strip()
if self._is_netdisk_url(raw):
return {"parse": 0, "playUrl": "", "url": raw}
return {"parse": 0, "playUrl": "", "url": ""}