From 004b656377e78b8240a6965a4594b058b5c88be4 Mon Sep 17 00:00:00 2001 From: Harold <8866033@gmail.com> Date: Thu, 23 Apr 2026 18:37:21 +0800 Subject: [PATCH] fix: align butailing player payload --- py/tests/test_不太灵.py | 12 +++++++++--- py/不太灵.py | 22 +++++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/py/tests/test_不太灵.py b/py/tests/test_不太灵.py index 8e45eda..78b2a07 100644 --- a/py/tests/test_不太灵.py +++ b/py/tests/test_不太灵.py @@ -164,14 +164,20 @@ class TestBuTaiLingSpider(unittest.TestCase): self.assertEqual(vod["vod_play_from"], "aliyun#1") self.assertEqual(vod["vod_play_url"], "aliyun#1$https://www.alipan.com/s/ali1") - def test_player_content_passthroughs_share_links(self): + def test_player_content_passthroughs_share_links_with_tvbox_shape(self): self.assertEqual( self.spider.playerContent("quark#1", "https://pan.quark.cn/s/q1", {}), - {"parse": 0, "url": "https://pan.quark.cn/s/q1"}, + {"parse": 0, "playUrl": "", "url": "https://pan.quark.cn/s/q1"}, ) self.assertEqual( self.spider.playerContent("quark#1", "push://https://pan.quark.cn/s/q1", {}), - {"parse": 0, "url": "https://pan.quark.cn/s/q1"}, + {"parse": 0, "playUrl": "", "url": "https://pan.quark.cn/s/q1"}, + ) + + def test_player_content_returns_empty_url_for_non_pan_links(self): + self.assertEqual( + self.spider.playerContent("other#1", "https://example.com/file", {}), + {"parse": 0, "playUrl": "", "url": ""}, ) diff --git a/py/不太灵.py b/py/不太灵.py index f62cd9d..bbd5e6c 100644 --- a/py/不太灵.py +++ b/py/不太灵.py @@ -207,6 +207,23 @@ class Spider(BaseSpider): return "a123" return "other" + def _is_supported_pan_url(self, url): + text = str(url or "").strip().lower() + return any( + token in text + for token in [ + "pan.quark.cn", + "pan.baidu.com", + "pan.xunlei.com", + "alipan.com", + "aliyundrive.com", + "123865.com", + "123684.com", + "123pan.com", + "drive.uc.cn", + ] + ) + def _extract_pan_sources(self, detail): groups = (detail or {}).get("movies_online_seed") if not isinstance(groups, dict): @@ -285,4 +302,7 @@ class Spider(BaseSpider): def playerContent(self, flag, id, vipFlags): raw = str(id or "").strip() - return {"parse": 0, "url": raw[7:] if raw.startswith("push://") else raw} + url = raw[7:] if raw.startswith("push://") else raw + if self._is_supported_pan_url(url): + return {"parse": 0, "playUrl": "", "url": url} + return {"parse": 0, "playUrl": "", "url": ""}