From feeac4c368b4488223c24f3635113305541d05dd Mon Sep 17 00:00:00 2001 From: Harold <8866033@gmail.com> Date: Mon, 20 Apr 2026 15:45:27 +0800 Subject: [PATCH] feat: complete rrdy spider --- py/tests/test_人人电影.py | 25 +++++++++++++++++++++++++ py/人人电影.py | 6 ++++++ 2 files changed, 31 insertions(+) diff --git a/py/tests/test_人人电影.py b/py/tests/test_人人电影.py index b17344b..2e55e76 100644 --- a/py/tests/test_人人电影.py +++ b/py/tests/test_人人电影.py @@ -166,3 +166,28 @@ class TestRenRenDianYingSpider(unittest.TestCase): vod["vod_play_url"], "百度网盘$https://pan.baidu.com/s/b1#夸克资源$https://pan.quark.cn/s/q1", ) + + def test_player_content_passthroughs_supported_pan_urls(self): + self.assertEqual( + self.spider.playerContent("网盘", "https://pan.baidu.com/s/demo", {}), + {"parse": 0, "playUrl": "", "url": "https://pan.baidu.com/s/demo"}, + ) + + def test_player_content_rejects_non_pan_url(self): + self.assertEqual( + self.spider.playerContent("站内", "/movie/123.html", {}), + {"parse": 0, "playUrl": "", "url": ""}, + ) + + @patch.object(Spider, "_request_html") + def test_detail_content_leaves_play_fields_empty_when_no_pan_url_exists(self, mock_request_html): + mock_request_html.return_value = """ +

无网盘影片

+
+

仅有简介,没有网盘。

+ """ + result = self.spider.detailContent(["/movie/empty.html"]) + vod = result["list"][0] + self.assertEqual(vod["vod_name"], "无网盘影片") + self.assertEqual(vod["vod_play_from"], "") + self.assertEqual(vod["vod_play_url"], "") diff --git a/py/人人电影.py b/py/人人电影.py index a8c6320..485f399 100644 --- a/py/人人电影.py +++ b/py/人人电影.py @@ -193,3 +193,9 @@ class Spider(BaseSpider): detail = self._parse_detail(vod_id, self._request_html(self._build_url(vod_id))) result["list"].append(detail) return result + + def playerContent(self, flag, id, vipFlags): + url = str(id or "").strip() + if self._is_supported_pan_url(url): + return {"parse": 0, "playUrl": "", "url": url} + return {"parse": 0, "playUrl": "", "url": ""}