微观短剧

This commit is contained in:
Harold
2026-04-29 14:18:36 +08:00
parent d2094f5016
commit b1449c242e
3 changed files with 81 additions and 7 deletions
+61 -2
View File
@@ -18,15 +18,15 @@ class TestDuanjuYouxuanSpider(unittest.TestCase):
def test_home_content_has_active_platforms(self):
content = self.spider.homeContent(False)
ids = [c["type_id"] for c in content["class"]]
self.assertEqual(ids, ["七猫", "星芽", "星星", "西饭", "锦鲤", "红果", "短剧网"])
self.assertEqual(ids, ["七猫", "星芽", "星星", "西饭", "锦鲤", "红果", "微观", "短剧网"])
self.assertNotIn("七星", ids)
self.assertNotIn("围观", ids)
def test_home_content_has_filters(self):
content = self.spider.homeContent(False)
self.assertIn("七猫", content["filters"])
self.assertIn("星星", content["filters"])
self.assertIn("锦鲤", content["filters"])
self.assertIn("微观", content["filters"])
self.assertIn("短剧网", content["filters"])
self.assertEqual(content["filters"]["锦鲤"][0]["key"], "area")
@@ -49,6 +49,11 @@ class TestDuanjuYouxuanSpider(unittest.TestCase):
self.assertEqual(result["parse"], 0)
self.assertEqual(result["url"], "push://pan.quark.cn/abc")
def test_player_weiguan_passthrough(self):
result = self.spider.playerContent("1080P", "https://media.example.com/1080.mp4", {})
self.assertEqual(result["parse"], 0)
self.assertEqual(result["url"], "https://media.example.com/1080.mp4")
@patch.object(Spider, "_post_json")
def test_category_jinli(self, mock_post_json):
mock_post_json.return_value = {
@@ -98,6 +103,25 @@ class TestDuanjuYouxuanSpider(unittest.TestCase):
self.assertEqual(result["list"][0]["vod_id"], "红果@b1")
self.assertEqual(result["page"], 1)
@patch.object(Spider, "_post_json")
def test_category_weiguan(self, mock_post_json):
mock_post_json.return_value = {
"data": [
{
"oneId": "wg1",
"title": "重生后我爆锤渣男",
"horzPoster": "http://pic/w1.jpg",
"episodeCount": "72集",
}
]
}
result = self.spider.categoryContent("微观", "1", False, {"area": "逆袭"})
self.assertEqual(len(result["list"]), 1)
self.assertEqual(result["list"][0]["vod_id"], "微观@wg1")
self.assertEqual(result["list"][0]["vod_pic"], "http://pic/w1.jpg")
self.assertIn("version_code=1500", mock_post_json.call_args.args[0])
self.assertEqual(mock_post_json.call_args.kwargs["body"]["subject"], "逆袭")
@patch.object(Spider, "_get_text")
def test_category_duanjuwang(self, mock_get_text):
mock_get_text.return_value = """
@@ -168,6 +192,40 @@ class TestDuanjuYouxuanSpider(unittest.TestCase):
self.assertIn("第1集$v1", vod["vod_play_url"])
self.assertIn("第2集$v2", vod["vod_play_url"])
@patch.object(Spider, "_get_json")
def test_detail_weiguan(self, mock_get_json):
mock_get_json.return_value = {
"title": "重生后我爆锤渣男",
"vertPoster": "http://pic/wg.jpg",
"description": "剧情简介",
"data": [
{
"playOrder": "第1集",
"videoClarityList": [
{"name": "1080P", "url": "https://media.example.com/1-1080.mp4"},
{"name": "720P", "url": "https://media.example.com/1-720.mp4"},
],
},
{
"playOrder": "第2集",
"videoClarityList": [
{"name": "1080P", "url": "https://media.example.com/2-1080.mp4"},
],
},
],
}
result = self.spider.detailContent(["微观@wg1"])
vod = result["list"][0]
self.assertEqual(vod["vod_name"], "重生后我爆锤渣男")
self.assertEqual(vod["vod_play_from"], "1080P$$$720P")
self.assertEqual(
vod["vod_play_url"],
"第1集$https://media.example.com/1-1080.mp4#第2集$https://media.example.com/2-1080.mp4"
"$$$第1集$https://media.example.com/1-720.mp4",
)
self.assertIn("oneId=wg1", mock_get_json.call_args.args[0])
self.assertIn("queryAll=true", mock_get_json.call_args.args[0])
@patch.object(Spider, "_get_text")
def test_detail_duanjuwang(self, mock_get_text):
mock_get_text.return_value = """
@@ -214,6 +272,7 @@ class TestDuanjuYouxuanSpider(unittest.TestCase):
def test_filter_defaults(self):
self.assertEqual(self.spider.filter_defaults["锦鲤"]["area"], "")
self.assertEqual(self.spider.filter_defaults["星星"]["area"], "1287")
self.assertEqual(self.spider.filter_defaults["微观"]["area"], "")
self.assertEqual(self.spider.filter_defaults["短剧网"]["area"], "1")
def test_identify_disk(self):
+15
View File
@@ -0,0 +1,15 @@
// ignore
//@name:微观短剧
//@version:1
//@remark:
//@format:secspider/1
//@alg:aes-256-gcm
//@wrap:hkdf-aes-keywrap
//@sign:ed25519
//@kid:k2026_04
//@nonce:base64:Vm77/tflIkg3/YPv
//@ek:base64:hdVAe+RAM6d7An2Bcq2PQfjqMRqxT3sTZGqb/3kind8i8kgmoRkUzmNHoxf7LKK9
//@hash:sha256:7b193b13b5932993a954afcf852623b447e5899df8351bf36315d32bc802b4be
//@sig:base64:0O/89xOTkPBzzAzctQ9PkFegEiOOMOgGt32cSR31o1DcRUceex/Yg9+bHpwhdDAebIu52BH1yKYGCjbwTXvNAg==
// ignore
payload.base64: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
+5 -5
View File
File diff suppressed because one or more lines are too long