diff --git a/py/tests/test_滴答影视.py b/py/tests/test_滴答影视.py index d8c054d..32f461b 100644 --- a/py/tests/test_滴答影视.py +++ b/py/tests/test_滴答影视.py @@ -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() diff --git a/py/滴答影视.py b/py/滴答影视.py index f5ce0ee..7cfaa1c 100644 --- a/py/滴答影视.py +++ b/py/滴答影视.py @@ -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": ""}