feat: add ddys player routing

This commit is contained in:
Harold
2026-04-19 16:44:22 +08:00
parent 53571a890a
commit c2db1748b4
2 changed files with 35 additions and 0 deletions
+20
View File
@@ -185,6 +185,26 @@ class TestDDYSSpider(unittest.TestCase):
self.assertEqual(result["list"][0]["vod_play_from"], "直连")
self.assertEqual(result["list"][0]["vod_play_url"], "全集$/play/detail-demo")
def test_player_content_returns_full_url_for_direct_source(self):
result = self.spider.playerContent("DDYS", "/play/ep1", {})
self.assertEqual(result["parse"], 0)
self.assertEqual(result["jx"], 0)
self.assertEqual(result["url"], "https://ddys.io/play/ep1")
self.assertEqual(result["header"]["Referer"], "https://ddys.io/")
def test_player_content_returns_pan_link_without_rewriting(self):
result = self.spider.playerContent("quark", "https://pan.quark.cn/s/demo", {})
self.assertEqual(result["parse"], 0)
self.assertEqual(result["jx"], 0)
self.assertEqual(result["url"], "https://pan.quark.cn/s/demo")
self.assertEqual(result["header"], {})
def test_player_content_treats_baidu_and_xunlei_as_pan_sources(self):
baidu = self.spider.playerContent("baidu", "https://pan.baidu.com/s/demo", {})
xunlei = self.spider.playerContent("xunlei", "https://pan.xunlei.com/s/demo", {})
self.assertEqual(baidu["url"], "https://pan.baidu.com/s/demo")
self.assertEqual(xunlei["url"], "https://pan.xunlei.com/s/demo")
if __name__ == "__main__":
unittest.main()
+15
View File
@@ -267,3 +267,18 @@ class Spider(BaseSpider):
vod = self._parse_detail_page(self._request_html(vod_id), vod_id)
result["list"].append(vod)
return result
def _is_pan_flag(self, flag):
lowered = self._stringify(flag).lower()
return any(token in lowered for token in ["quark", "baidu", "xunlei"])
def playerContent(self, flag, id, vipFlags):
target = self._stringify(id).strip()
if self._is_pan_flag(flag):
return {"parse": 0, "jx": 0, "url": target, "header": {}}
return {
"parse": 0,
"jx": 0,
"url": self._build_url(target),
"header": dict(self.headers),
}