This commit is contained in:
Harold
2026-05-25 19:09:15 +08:00
parent 8694c20c9e
commit dde80485b7
6 changed files with 1178 additions and 1181 deletions
+847 -847
View File
@@ -1,21 +1,21 @@
{
"generated_at": "2026-05-24T19:20:56+08:00",
"generated_at": "2026-05-25T19:08:48+08:00",
"max_workers": 16,
"total_duration_ms": 26405.917,
"total_duration_ms": 26717.221,
"summary": {
"total": 78,
"success": 65,
"failed": 13,
"success_rate": 0.8333,
"success": 61,
"failed": 17,
"success_rate": 0.7821,
"stage_failures": {
"module_load": 0,
"init": 0,
"home": 1,
"category": 6,
"category": 3,
"detail": 1,
"player": 0,
"player": 1,
"url_check": 1,
"unexpected": 4
"unexpected": 10
}
},
"results": [
@@ -27,14 +27,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 150.184,
"module_load": 208.264,
"init": 0.001,
"home": 512.032,
"category": 0.018,
"detail": 357.629,
"player": 878.318,
"url_check": 438.139,
"total": 2341.662
"home": 423.487,
"category": 0.014,
"detail": 1231.176,
"player": 1322.258,
"url_check": 349.76,
"total": 3537.591
},
"counts": {
"classes": 6,
@@ -50,11 +50,11 @@
},
"player": {
"parse": 0,
"url": "https://oss.douyinbit.com/m3u8/1adda71f0ee801aa8a4612bcaa34a055.m3u8",
"url": "https://oss.douyinbit.com/m3u8/790f7198a20b63cd2113a552f2e0c76f.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://oss.douyinbit.com/m3u8/1adda71f0ee801aa8a4612bcaa34a055.m3u8",
"final_url": "https://oss.douyinbit.com/m3u8/790f7198a20b63cd2113a552f2e0c76f.m3u8",
"reason": null
}
},
@@ -66,14 +66,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 153.941,
"module_load": 218.711,
"init": 0.001,
"home": 0.005,
"category": 744.473,
"detail": 605.202,
"player": 0.004,
"url_check": 156.57,
"total": 1700.456
"home": 0.002,
"category": 946.143,
"detail": 608.729,
"player": 0.006,
"url_check": 373.292,
"total": 2151.441
},
"counts": {
"classes": 5,
@@ -83,17 +83,17 @@
},
"samples": {
"tid": "zuixin",
"vod_id": "18583",
"vod_id": "20199",
"flag": "夸克网盘",
"play_id": "push://https://pan.quark.cn/s/b80438fac841"
"play_id": "push://https://pan.quark.cn/s/11556f608ff2"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/b80438fac841",
"url": "https://pan.quark.cn/s/11556f608ff2",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/b80438fac841",
"final_url": "https://pan.quark.cn/s/11556f608ff2",
"reason": null
}
},
@@ -105,14 +105,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 148.958,
"init": 0.004,
"home": 0.001,
"category": 769.709,
"detail": 773.649,
"player": 0.002,
"url_check": 0.048,
"total": 1698.983
"module_load": 212.551,
"init": 0.005,
"home": 0.002,
"category": 626.079,
"detail": 625.254,
"player": 0.003,
"url_check": 0.086,
"total": 1480.495
},
"counts": {
"classes": 12,
@@ -144,14 +144,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 145.127,
"module_load": 210.268,
"init": 0.001,
"home": 197.71,
"category": 187.467,
"detail": 200.582,
"player": 194.459,
"url_check": 372.804,
"total": 1299.253
"home": 217.536,
"category": 158.019,
"detail": 177.86,
"player": 148.241,
"url_check": 1392.038,
"total": 2318.183
},
"counts": {
"classes": 6,
@@ -171,7 +171,7 @@
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://car-lv.kuwo.cn/e0efb48a4a4ad7318441a732d158bdf9/6a12df19/resource/1307392909/trackmedia/C200000W91kQ0efKLA.m4a?from=vip",
"final_url": "https://car-lv.kuwo.cn/eb88781611f8ad5ce13fe3ce2cd4772a/6a142dc2/resource/1307392909/trackmedia/C200000W91kQ0efKLA.m4a?from=vip",
"reason": null
}
},
@@ -183,14 +183,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 247.168,
"init": 0.0,
"module_load": 257.671,
"init": 0.001,
"home": 0.001,
"category": 715.134,
"detail": 378.939,
"category": 1044.538,
"detail": 1115.545,
"player": 0.009,
"url_check": 315.18,
"total": 1657.156
"url_check": 1840.348,
"total": 4258.669
},
"counts": {
"classes": 2,
@@ -200,17 +200,17 @@
},
"samples": {
"tid": "1",
"vod_id": "movie/8191.html",
"vod_id": "movie/8196.html",
"flag": "PPnix",
"play_id": "8191|1080P"
"play_id": "8196|1080P"
},
"player": {
"parse": 0,
"url": "https://www.ppnix.com/info/m3u8/8191/1080P.m3u8",
"url": "https://www.ppnix.com/info/m3u8/8196/1080P.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.ppnix.com/info/m3u8/8191/1080P.m3u8",
"final_url": "https://www.ppnix.com/info/m3u8/8196/1080P.m3u8",
"reason": null
}
},
@@ -222,34 +222,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 180.179,
"init": 0.011,
"home": 0.003,
"category": 515.194,
"detail": 237.549,
"player": 242.623,
"url_check": 179.002,
"total": 1368.557
"module_load": 208.345,
"init": 0.01,
"home": 0.004,
"category": 746.623,
"detail": 219.958,
"player": 495.987,
"url_check": 443.862,
"total": 3675.751
},
"counts": {
"classes": 6,
"category_videos": 30,
"category_videos": 44,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "playlist",
"vod_id": "playlist:7727620732",
"tid": "top",
"vod_id": "top:135",
"flag": "QQ音乐",
"play_id": "qqmusic:00008tK63ZjXt8:259631017|Reverse - ALisa"
"play_id": "qqmusic:001SZuO01zTv4Y:666401051|凌绝顶 - 梓渝"
},
"player": {
"parse": 0,
"url": "https://isure.stream.qqmusic.qq.com/F000003e6axj3Knw3w.flac?guid=c2aff241564d1f4caeb65e3062656f04&vkey=1EA7EDAF0A6F5544D922A73DDD2131E196CBB414785C4F514DF52140A1A5998F4FB1C552C470EB573B259598F44526CE95F92FC95EBE6D34__v2b9abfd5&uin=896389745&fromtag=119114&redirect=1",
"url": "https://isure.stream.qqmusic.qq.com/M500001SZuO01zTv4Y.mp3?guid=51dff72837796c98e5b30edfea30c4db&vkey=DB3D7184CFFC2273DA26DE979A3BD9CD2152328F63B1E063DC8C2FD99A8A4C3BC3B38139E1676C872786CEFDE46DCADE4870B5863D764AD5__v2b94c2a0&uin=&fromtag=119042&src=M500003j9rwW2ZuKVh.mp3&redirect=1",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://isure.stream.qqmusic.qq.com/F000003e6axj3Knw3w.flac?guid=c2aff241564d1f4caeb65e3062656f04&vkey=1EA7EDAF0A6F5544D922A73DDD2131E196CBB414785C4F514DF52140A1A5998F4FB1C552C470EB573B259598F44526CE95F92FC95EBE6D34__v2b9abfd5&uin=896389745&fromtag=119114&redirect=1",
"final_url": "https://isure.stream.qqmusic.qq.com/M500001SZuO01zTv4Y.mp3?guid=51dff72837796c98e5b30edfea30c4db&vkey=DB3D7184CFFC2273DA26DE979A3BD9CD2152328F63B1E063DC8C2FD99A8A4C3BC3B38139E1676C872786CEFDE46DCADE4870B5863D764AD5__v2b94c2a0&uin=&fromtag=119042&src=M500003j9rwW2ZuKVh.mp3&redirect=1",
"reason": null
}
},
@@ -261,14 +261,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 186.873,
"init": 0.003,
"home": 0.075,
"category": 848.064,
"detail": 2054.725,
"module_load": 208.11,
"init": 0.004,
"home": 0.051,
"category": 729.293,
"detail": 2620.757,
"player": 0.004,
"url_check": 1047.438,
"total": 4152.146
"url_check": 1103.739,
"total": 4679.927
},
"counts": {
"classes": 29,
@@ -300,34 +300,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 143.813,
"module_load": 208.108,
"init": 0.0,
"home": 0.0,
"category": 208.397,
"detail": 294.448,
"home": 0.001,
"category": 1897.029,
"detail": 954.642,
"player": 0.005,
"url_check": 159.442,
"total": 806.592
"url_check": 145.406,
"total": 3205.858
},
"counts": {
"classes": 6,
"category_videos": 48,
"detail_videos": 1,
"episodes": 2
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "714893397",
"vod_id": "714893469",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/d7ce87399a57"
"play_id": "https://pan.quark.cn/s/03ebc9aa9c9d"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/d7ce87399a57",
"url": "https://pan.quark.cn/s/03ebc9aa9c9d",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/d7ce87399a57",
"final_url": "https://pan.quark.cn/s/03ebc9aa9c9d",
"reason": null
}
},
@@ -339,34 +339,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 143.632,
"module_load": 204.893,
"init": 0.001,
"home": 0.001,
"category": 2013.963,
"detail": 1368.459,
"player": 1338.395,
"url_check": 1135.921,
"total": 6034.284
"home": 0.002,
"category": 1731.247,
"detail": 1602.053,
"player": 1261.947,
"url_check": 1064.698,
"total": 5879.305
},
"counts": {
"classes": 7,
"category_videos": 217,
"category_videos": 241,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "163503",
"vod_id": "204132",
"flag": "YouKnowTV",
"play_id": "eyJ2b2RfaWQiOiIxNjM1MDMiLCJlcGlzb2RlX2luZGV4IjoxLCJ0aXRsZSI6IjIwMjMwMzAyIiwiY2FuZGlkYXRlcyI6W3sic291cmNlIjoi57q_6LevMSIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8xNjM1MDMtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMiIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8xNjM1MDMtMS0xLyJ9LHsic291cmNlIjoi57q_6LevNDE5Iiwic291cmNlX2lkIjoiMyIsImVwaXNvZGVfdXJsIjoiaHR0cHM6Ly93d3cueW91a25vdy50di9wLzE2MzUwMy0zLTEvIn0seyJzb3VyY2UiOiLnur_ot680MjAiLCJzb3VyY2VfaWQiOiIzIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMTYzNTAzLTMtMS8ifSx7InNvdXJjZSI6Iue6v-i3rzYxOCIsInNvdXJjZV9pZCI6IjIiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8xNjM1MDMtMi0xLyJ9LHsic291cmNlIjoi57q_6LevNjE5Iiwic291cmNlX2lkIjoiMiIsImVwaXNvZGVfdXJsIjoiaHR0cHM6Ly93d3cueW91a25vdy50di9wLzE2MzUwMy0yLTEvIn1dfQ"
"play_id": "eyJ2b2RfaWQiOiIyMDQxMzIiLCJlcGlzb2RlX2luZGV4IjoxLCJ0aXRsZSI6IuWFqOmbhiIsImNhbmRpZGF0ZXMiOlt7InNvdXJjZSI6Iue6v-i3rzEiLCJzb3VyY2VfaWQiOiIxIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMjA0MTMyLTEtMS8ifSx7InNvdXJjZSI6Iue6v-i3rzIiLCJzb3VyY2VfaWQiOiIxIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMjA0MTMyLTEtMS8ifV19"
},
"player": {
"parse": 0,
"url": "https://vip.dytt-cinema.com/20250324/17444_9fb640ea/index.m3u8",
"url": "https://vip.dytt-see.com/20260525/38957_df9af533/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vip.dytt-cinema.com/20250324/17444_9fb640ea/index.m3u8",
"final_url": "https://vip.dytt-see.com/20260525/38957_df9af533/index.m3u8",
"reason": null
}
},
@@ -378,14 +378,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 142.334,
"init": 0.005,
"module_load": 209.202,
"init": 0.004,
"home": 0.002,
"category": 745.444,
"detail": 1055.309,
"player": 0.003,
"url_check": 2583.071,
"total": 4531.366
"category": 5305.104,
"detail": 834.206,
"player": 0.004,
"url_check": 0.052,
"total": 6362.88
},
"counts": {
"classes": 5,
@@ -395,56 +395,56 @@
},
"samples": {
"tid": "1",
"vod_id": "498675",
"flag": "百度1",
"play_id": "https://pan.baidu.com/s/1SOnvETAh2gr1DD3PHBGLmg?pwd=sxbj"
"vod_id": "49725",
"flag": "磁力1",
"play_id": "magnet:?xt=urn:btih:eba1696ad106954c041af1ba054e59e353db9616&dn=Vision.2018.JAPANESE.720p.BluRay.H264.AAC-VXT"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1SOnvETAh2gr1DD3PHBGLmg?pwd=sxbj",
"url": "magnet:?xt=urn:btih:eba1696ad106954c041af1ba054e59e353db9616&dn=Vision.2018.JAPANESE.720p.BluRay.H264.AAC-VXT",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=SOnvETAh2gr1DD3PHBGLmg&pwd=sxbj",
"reason": null
"reachable": null,
"status_code": null,
"final_url": "magnet:?xt=urn:btih:eba1696ad106954c041af1ba054e59e353db9616&dn=Vision.2018.JAPANESE.720p.BluRay.H264.AAC-VXT",
"reason": "非 HTTP 地址,按协议格式通过"
}
},
{
"spider": "不太灵",
"file": "不太灵.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='web5.mukaku.com', port=443): Read timed out. (read timeout=10)",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 534, in _make_request\n response = conn.getresponse()\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 571, in getresponse\n httplib_response = super().getresponse()\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 1450, in getresponse\n response.begin()\n ~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 336, in begin\n version, status, reason = self._read_status()\n ~~~~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 297, in _read_status\n line = str(self.fp.readline(_MAXLINE + 1), \"iso-8859-1\")\n ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\nTimeoutError: The read operation timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 39, in reraise\n raise value\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='web5.mukaku.com', port=443): Read timed out. (read timeout=10)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/不太灵.txt\", line 302, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/不太灵.txt\", line 63, in _request_api\nrequests.exceptions.ReadTimeout: HTTPSConnectionPool(host='web5.mukaku.com', port=443): Read timed out. (read timeout=10)\n",
"timings_ms": {
"module_load": 188.17,
"module_load": 208.749,
"init": 0.001,
"home": 4148.24,
"category": 4406.328,
"detail": 5861.313,
"player": 0.006,
"url_check": 995.395,
"total": 26399.976
"home": 4158.455,
"category": 10189.635,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 14568.109
},
"counts": {
"classes": 5,
"category_videos": 25,
"detail_videos": 1,
"episodes": 2
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "2",
"vod_id": "36310054",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/18_BEUEFJ_WmP3DaJIsxUfQ?pwd=Yu66"
"tid": "1",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/18_BEUEFJ_WmP3DaJIsxUfQ?pwd=Yu66",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=8_BEUEFJ_WmP3DaJIsxUfQ&pwd=Yu66",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -456,14 +456,14 @@
"error": "详情缺少播放源或播放列表",
"traceback": null,
"timings_ms": {
"module_load": 140.767,
"module_load": 204.953,
"init": 0.0,
"home": 392.045,
"category": 0.005,
"detail": 100.895,
"home": 379.493,
"category": 0.011,
"detail": 100.448,
"player": 0.0,
"url_check": 0.0,
"total": 727.792
"total": 785.806
},
"counts": {
"classes": 5,
@@ -490,78 +490,78 @@
{
"spider": "两个BT",
"file": "两个BT.txt",
"success": true,
"failed_stage": null,
"error": null,
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 198.863,
"init": 0.001,
"module_load": 219.619,
"init": 0.0,
"home": 0.001,
"category": 405.049,
"detail": 341.56,
"player": 736.435,
"url_check": 452.312,
"total": 2135.798
"category": 5010.734,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10268.16
},
"counts": {
"classes": 14,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "zgjun",
"vod_id": "ch45x6dqu",
"flag": "两个BT",
"play_id": "eyJwaWQiOiIvcGxheS9jaDQ1eDZkcXUiLCJzaWQiOiJjaDQ1eDZkcXUiLCJuYW1lIjoiMSJ9"
"tid": "meiju",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://zijieapi.douyinbyte.com/m3u8/534d87ea1d38261042ced3d85ebaa840.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://zijieapi.douyinbyte.com/m3u8/534d87ea1d38261042ced3d85ebaa840.m3u8",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "乌云影视",
"file": "乌云影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='wooyun.tv', port=443): Max retries exceeded with url: /movie/category/menu (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='wooyun.tv', port=443): Max retries exceeded with url: /movie/category/menu (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 705, in validate_spider_file\n home_result = _run_timed(result[\"timings_ms\"], \"home\", spider.homeContent, clock, False)\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/乌云影视.txt\", line 245, in homeContent\n File \"/home/harold/workspace/tvbox-resources/py/乌云影视.txt\", line 80, in _request_json\n File \"/home/harold/workspace/atv-spiders/py/base/spider.py\", line 145, in fetch\n rsp = requests.get(url, params=params, cookies=cookies, headers=headers, timeout=timeout, verify=verify,\n stream=stream, allow_redirects=allow_redirects)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='wooyun.tv', port=443): Max retries exceeded with url: /movie/category/menu (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 214.519,
"init": 0.001,
"home": 364.139,
"category": 419.76,
"detail": 1164.829,
"player": 0.027,
"url_check": 2110.591,
"total": 4276.172
"module_load": 203.678,
"init": 0.0,
"home": 114.974,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 324.522
},
"counts": {
"classes": 7,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
"classes": 0,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "movie",
"vod_id": "483203",
"flag": "乌云影视",
"play_id": "eyJtZWRpYUlkIjogIjQ4MzIwMyIsICJzZWFzb25ObyI6IDEsICJlcE5vIjogMSwgInZpZGVvSWQiOiAxNTc2MjgzMiwgInBsYXlVcmwiOiAiaHR0cHM6Ly9kMWpkbm1rYzFuNWNuNC5jbG91ZGZyb250Lm5ldC9nZW5fb3ZlcnNlYXMvaHR0cHM6Ly9zMi5iZmxsdmlwLmNvbS92aWRlby95YW54aWF4aW5nL2E2ZWY4NTRjMGMxZi9pbmRleC5tM3U4IiwgIm5hbWUiOiAi56ysMembhiDpq5jmuIUifQ"
"tid": null,
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://d1jdnmkc1n5cn4.cloudfront.net/gen_overseas/https://s2.bfllvip.com/video/yanxiaxing/a6ef854c0c1f/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://d1jdnmkc1n5cn4.cloudfront.net/hls_overseas/fb29d0c94cfb3c9c29ad9c3672b709257f40e7a4.m3u8",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -569,18 +569,18 @@
"spider": "乐兔",
"file": "乐兔.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.letu.me', port=443): Max retries exceeded with url: /type/1.html (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.letu.me', port=443): Max retries exceeded with url: /type/1.html (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/乐兔.txt\", line 117, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/乐兔.txt\", line 72, in _request_html\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='www.letu.me', port=443): Max retries exceeded with url: /type/1.html (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 139.621,
"module_load": 206.1,
"init": 0.001,
"home": 0.0,
"category": 396.681,
"home": 0.001,
"category": 169.828,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 1060.32
"total": 392.319
},
"counts": {
"classes": 5,
@@ -589,7 +589,7 @@
"episodes": 0
},
"samples": {
"tid": "2",
"tid": "1",
"vod_id": null,
"flag": null,
"play_id": null
@@ -612,14 +612,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 205.553,
"module_load": 205.262,
"init": 0.001,
"home": 0.001,
"category": 455.578,
"detail": 203.17,
"player": 0.007,
"url_check": 1304.997,
"total": 2169.769
"category": 368.832,
"detail": 612.825,
"player": 0.005,
"url_check": 4469.267,
"total": 5665.816
},
"counts": {
"classes": 4,
@@ -651,14 +651,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.709,
"module_load": 5.384,
"init": 0.001,
"home": 0.0,
"category": 593.509,
"detail": 793.841,
"player": 0.01,
"url_check": 968.506,
"total": 2360.254
"category": 1033.172,
"detail": 671.197,
"player": 0.008,
"url_check": 1231.438,
"total": 2942.314
},
"counts": {
"classes": 4,
@@ -690,14 +690,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.185,
"module_load": 5.542,
"init": 0.001,
"home": 312.737,
"category": 238.347,
"detail": 210.251,
"player": 618.493,
"url_check": 199.029,
"total": 2670.854
"home": 932.897,
"category": 236.668,
"detail": 230.386,
"player": 1242.328,
"url_check": 275.483,
"total": 5925.122
},
"counts": {
"classes": 4,
@@ -713,11 +713,11 @@
},
"player": {
"parse": 0,
"url": "https://a3fkpcui142jgve.302.fledgecloud.com:56782/zj-302-cdn.bwcgee.cn/50c5dbf255a571f1a35d4531959d0402/7d61db94110c47c08a8f77e9be92d2b7-8c648074a2124d2abad352598f7faf32-ld.mp4?auth_key=1779636059-25463f4f02d2aa83c6d5307dc120bd39-0-620030230d17361592ffd131f99d7428&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=0a1542f47a2a4f3bb2b18e44b205315f&hevc=false&seasonId=57590",
"url": "https://qn-302-m-play.bwcgee.cn/50c5dbf255a571f1a35d4531959d0402/7d61db94110c47c08a8f77e9be92d2b7-8c648074a2124d2abad352598f7faf32-ld.mp4?sign=eb40a02b0c856bc729749cb05c7513c4&t=6a146605&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=236fa5f4cd404689a2fbde92133937df&hevc=false&seasonId=57590",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://a3fkpcui142jgve.302.fledgecloud.com:56782/zj-302-cdn.bwcgee.cn/50c5dbf255a571f1a35d4531959d0402/7d61db94110c47c08a8f77e9be92d2b7-8c648074a2124d2abad352598f7faf32-ld.mp4?auth_key=1779636059-25463f4f02d2aa83c6d5307dc120bd39-0-620030230d17361592ffd131f99d7428&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=0a1542f47a2a4f3bb2b18e44b205315f&hevc=false&seasonId=57590",
"final_url": "https://982546209.ahdohpiechei.com:22443/OzwfcER4VzlnIl4iDWQYIyk1VyZaKRQLOz9bOw/50c5dbf255a571f1a35d4531959d0402/7d61db94110c47c08a8f77e9be92d2b7-8c648074a2124d2abad352598f7faf32-ld.mp4?sign=eb40a02b0c856bc729749cb05c7513c4&t=6a146605&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=236fa5f4cd404689a2fbde92133937df&hevc=false&seasonId=57590&x-sid=0X11A5sh9arYPz&x-redirect=0X11AOzwfcER4VzlnIl4iDWcYIyk1VyZZKRR5IzZEMxI-FnolJ1AiASQfMTg3WydaKRU5&x-lid=0X11Ab5874771ed4e&x-st=0X11Ahash",
"reason": null
}
},
@@ -729,14 +729,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.723,
"module_load": 10.586,
"init": 0.001,
"home": 0.001,
"category": 268.327,
"detail": 516.818,
"category": 971.528,
"detail": 764.506,
"player": 0.002,
"url_check": 230.398,
"total": 1024.556
"url_check": 229.152,
"total": 1976.429
},
"counts": {
"classes": 6,
@@ -746,56 +746,56 @@
},
"samples": {
"tid": "电视剧",
"vod_id": "show:afcb2d65c6a34b798d77",
"vod_id": "show:bbaf2557249a4f2a9447",
"flag": "优酷",
"play_id": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html"
"play_id": "https://v.youku.com/v_show/id_XNjUyMTM3MTY0OA==.html"
},
"player": {
"parse": 1,
"url": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html",
"url": "https://v.youku.com/v_show/id_XNjUyMTM3MTY0OA==.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html",
"final_url": "https://v.youku.com/v_show/id_XNjUyMTM3MTY0OA==.html",
"reason": null
}
},
{
"spider": "低端影视",
"file": "低端影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/低端影视.txt\", line 235, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/低端影视.txt\", line 197, in _request_html\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
"timings_ms": {
"module_load": 5.664,
"module_load": 5.999,
"init": 0.001,
"home": 0.001,
"category": 750.621,
"detail": 1363.5,
"player": 0.007,
"url_check": 570.23,
"total": 2690.584
"category": 5014.098,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 5024.496
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "series",
"vod_id": "movie/fight-for-my-way",
"flag": "播放源 1 (1080P)",
"play_id": "https://v.lzcdn26.com/20250426/15582_5d346db5/index.m3u8"
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://v.lzcdn26.com/20250426/15582_5d346db5/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v.lzcdn26.com/20250426/15582_5d346db5/index.m3u8",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -807,14 +807,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.613,
"module_load": 6.845,
"init": 0.001,
"home": 0.001,
"category": 1132.632,
"detail": 275.039,
"player": 1802.728,
"url_check": 611.419,
"total": 3831.495
"category": 826.497,
"detail": 268.783,
"player": 1191.041,
"url_check": 2137.133,
"total": 4431.249
},
"counts": {
"classes": 4,
@@ -830,11 +830,11 @@
},
"player": {
"parse": 0,
"url": "https://v.xlys.ltd.ua/obj/1852C57973695CC9D40073809E9C50ED516429480CB42EEEC5FC6668E964F526",
"url": "https://v.xlys.ltd.ua/obj/F34F5ED49EFAAB3C965DE6643439B6BAEBF973D5E7B330827F1DA009B1474DB0",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://lf26-imcloud-file-sign.bytetos.com/ad-penny-bucket/oQOPI7CqAgAQ3AtwAENcfAHCdmfDDF3rvDX9dR?x-expires=1779623169&x-signature=WzvcTd0fRpMsBhE7y0lvxbDoIz0%3D",
"final_url": "https://www.baidu.com/",
"reason": null
}
},
@@ -846,14 +846,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.483,
"init": 0.001,
"home": 0.001,
"category": 2352.146,
"detail": 1404.178,
"player": 12161.782,
"url_check": 2465.217,
"total": 18388.471
"module_load": 4.345,
"init": 0.0,
"home": 0.0,
"category": 2779.834,
"detail": 1692.525,
"player": 2974.02,
"url_check": 3160.418,
"total": 10611.838
},
"counts": {
"classes": 8,
@@ -869,11 +869,11 @@
},
"player": {
"parse": 0,
"url": "https://fktv.me/ysapi/m3u8/p/b037dc00f42fba0b1a81006ec213c7ae.m3u8",
"url": "https://fktv.me/ysapi/m3u8/p/c64aea0f0fef351a59635492ce479e68.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fktv.me/ysapi/m3u8/p/b037dc00f42fba0b1a81006ec213c7ae.m3u8",
"final_url": "https://fktv.me/ysapi/m3u8/p/c64aea0f0fef351a59635492ce479e68.m3u8",
"reason": null
}
},
@@ -885,14 +885,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.914,
"init": 0.001,
"module_load": 5.546,
"init": 0.0,
"home": 0.0,
"category": 779.766,
"detail": 759.262,
"player": 2191.563,
"url_check": 723.094,
"total": 4463.144
"category": 442.075,
"detail": 1454.812,
"player": 1380.2,
"url_check": 434.237,
"total": 3717.309
},
"counts": {
"classes": 5,
@@ -924,14 +924,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.349,
"module_load": 4.627,
"init": 0.001,
"home": 0.001,
"category": 296.948,
"detail": 429.135,
"player": 530.106,
"url_check": 1288.483,
"total": 2556.722
"category": 263.411,
"detail": 483.588,
"player": 490.773,
"url_check": 1266.008,
"total": 2509.055
},
"counts": {
"classes": 6,
@@ -963,14 +963,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.882,
"init": 0.001,
"home": 2859.172,
"category": 297.678,
"detail": 717.962,
"player": 0.005,
"url_check": 546.709,
"total": 4426.127
"module_load": 3.884,
"init": 0.0,
"home": 3142.826,
"category": 266.295,
"detail": 706.608,
"player": 0.001,
"url_check": 497.029,
"total": 4617.183
},
"counts": {
"classes": 11,
@@ -1002,14 +1002,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.418,
"init": 502.495,
"home": 0.003,
"category": 166.322,
"detail": 188.484,
"module_load": 4.86,
"init": 859.434,
"home": 0.004,
"category": 270.125,
"detail": 241.505,
"player": 0.002,
"url_check": 158.229,
"total": 1022.644
"url_check": 153.703,
"total": 1530.281
},
"counts": {
"classes": 7,
@@ -1021,15 +1021,15 @@
"tid": "ju",
"vod_id": "/ju/10489.html",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/53153ad27a69"
"play_id": "https://pan.quark.cn/s/9b5656987408"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/53153ad27a69",
"url": "https://pan.quark.cn/s/9b5656987408",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/53153ad27a69",
"final_url": "https://pan.quark.cn/s/9b5656987408",
"reason": null
}
},
@@ -1041,14 +1041,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 14.311,
"init": 81.338,
"module_load": 6.829,
"init": 82.159,
"home": 0.001,
"category": 168.711,
"detail": 416.571,
"player": 307.786,
"url_check": 228.262,
"total": 1217.866
"category": 169.799,
"detail": 443.632,
"player": 310.685,
"url_check": 318.333,
"total": 1332.244
},
"counts": {
"classes": 11,
@@ -1064,11 +1064,11 @@
},
"player": {
"parse": 0,
"url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=9af20ada54afe055792e3a76d40ddea3&buy_key=FM&token=6048&timestamp=1779621659&duration=453",
"url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=c842e519cb7a9d63bc7f4e6a2b11ac26&buy_key=FM&token=5744&timestamp=1779707333&duration=453",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=9af20ada54afe055792e3a76d40ddea3&buy_key=FM&token=6048&timestamp=1779621659&duration=453",
"final_url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=c842e519cb7a9d63bc7f4e6a2b11ac26&buy_key=FM&token=5744&timestamp=1779707333&duration=453",
"reason": null
}
},
@@ -1080,14 +1080,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.495,
"init": 0.0,
"home": 399.88,
"category": 295.46,
"detail": 786.167,
"player": 452.536,
"url_check": 145.23,
"total": 2093.219
"module_load": 10.861,
"init": 0.002,
"home": 397.566,
"category": 362.101,
"detail": 1965.117,
"player": 393.82,
"url_check": 528.008,
"total": 3659.318
},
"counts": {
"classes": 8,
@@ -1103,11 +1103,11 @@
},
"player": {
"parse": 0,
"url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779621209&sign=6021b727587f79659070520d0ec865bf",
"url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779704371&sign=9d85971ef0fa1db2d8e3c8889727d990",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779621209&sign=6021b727587f79659070520d0ec865bf",
"final_url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779704371&sign=9d85971ef0fa1db2d8e3c8889727d990",
"reason": null
}
},
@@ -1119,14 +1119,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 13.378,
"init": 0.006,
"home": 521.539,
"category": 466.189,
"detail": 555.419,
"player": 1702.979,
"url_check": 426.996,
"total": 3687.474
"module_load": 8.117,
"init": 0.004,
"home": 912.789,
"category": 1013.309,
"detail": 880.872,
"player": 1822.221,
"url_check": 464.266,
"total": 5102.248
},
"counts": {
"classes": 3,
@@ -1136,17 +1136,17 @@
},
"samples": {
"tid": "6",
"vod_id": "4983",
"vod_id": "4986",
"flag": "咕咕新线(国内高速)",
"play_id": "parse_api=a2796a09189261bcaf3cc4542d7c5ac2&url=ATKS0iIELAtFQYl+r7EpP+jZ7fHzIcytZZy7KgIUWH0ZGzIzMwD9WEFDm2xzfB9H&token=|主播女孩重度依赖|1"
"play_id": "parse_api=a2796a09189261bcaf3cc4542d7c5ac2&url=7CZ/0A1wxnBuNFQ8F9pMPQ1LTMGtqMdofwtKoge3Roj4Ql2IulhbTf/M80p8R+uE&token=|日本三国|1"
},
"player": {
"parse": 0,
"url": "https://p3-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/739b7aacab974d578487929576331c31~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810725662&x-signature=bm0EVxV%2F5fSSSapKkzGe5A1JSaY%3D",
"url": "https://p3-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/8473d111b28a4de7b6d45f2fa44c3400~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810811337&x-signature=soQGX2F28l0P%2F98USAnVA%2FUroto%3D",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://p3-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/739b7aacab974d578487929576331c31~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810725662&x-signature=bm0EVxV%2F5fSSSapKkzGe5A1JSaY%3D",
"final_url": "https://p3-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/8473d111b28a4de7b6d45f2fa44c3400~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810811337&x-signature=soQGX2F28l0P%2F98USAnVA%2FUroto%3D",
"reason": null
}
},
@@ -1155,17 +1155,17 @@
"file": "四万影视.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='40000.me', port=443): Read timed out. (read timeout=10)",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nTimeoutError: _ssl.c:1063: The handshake operation timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 39, in reraise\n raise value\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='40000.me', port=443): Read timed out. (read timeout=10)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/四万影视.txt\", line 238, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/四万影视.txt\", line 212, in _api_get\nrequests.exceptions.ReadTimeout: HTTPSConnectionPool(host='40000.me', port=443): Read timed out. (read timeout=10)\n",
"error": "('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/四万影视.txt\", line 238, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/四万影视.txt\", line 212, in _api_get\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
"timings_ms": {
"module_load": 22.475,
"module_load": 5.45,
"init": 0.001,
"home": 0.002,
"category": 10022.499,
"home": 0.001,
"category": 5389.959,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10048.275
"total": 5397.093
},
"counts": {
"classes": 5,
@@ -1193,18 +1193,18 @@
"spider": "在线之家",
"file": "在线之家.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.zxzjys.com', port=443): Max retries exceeded with url: /vodshow/2--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x72f96845a350>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 428, in _validate_from_tid\n video = _extract_first_video(category_result)\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 320, in _extract_first_video\n raise ValidationError(\"category\", \"分类视频列表为空\")\nValidationError: 分类视频列表为空\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 204, in _new_conn\n sock = connection.create_connection(\n (self._dns_host, self.port),\n ...<2 lines>...\n socket_options=self.socket_options,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\n ~~~~~~~~~~~~^^^^\nTimeoutError: timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 759, in connect\n self.sock = sock = self._new_conn()\n ~~~~~~~~~~~~~~^^\nurllib3.exceptions.ConnectTimeoutError: (<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x72f96845a350>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.zxzjys.com', port=443): Max retries exceeded with url: /vodshow/2--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x72f96845a350>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 737, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/在线之家.txt\", line 301, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/在线之家.txt\", line 245, in _request_html\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='www.zxzjys.com', port=443): Max retries exceeded with url: /vodshow/2--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x72f96845a350>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)'))\n",
"timings_ms": {
"module_load": 5.396,
"module_load": 8.649,
"init": 0.001,
"home": 0.001,
"category": 985.013,
"category": 10011.559,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 1878.99
"total": 11811.682
},
"counts": {
"classes": 6,
@@ -1236,14 +1236,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 14.33,
"module_load": 6.881,
"init": 0.001,
"home": 0.001,
"category": 524.147,
"detail": 415.362,
"player": 0.022,
"url_check": 901.392,
"total": 1857.382
"category": 530.554,
"detail": 416.932,
"player": 0.004,
"url_check": 1345.793,
"total": 2300.68
},
"counts": {
"classes": 6,
@@ -1275,14 +1275,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.061,
"init": 0.0,
"module_load": 5.736,
"init": 0.001,
"home": 0.006,
"category": 738.678,
"detail": 475.507,
"player": 0.014,
"url_check": 1916.153,
"total": 3136.477
"category": 763.535,
"detail": 369.334,
"player": 0.003,
"url_check": 803.544,
"total": 1942.9
},
"counts": {
"classes": 6,
@@ -1309,39 +1309,39 @@
{
"spider": "寻川4K",
"file": "寻川4K.txt",
"success": false,
"failed_stage": "unexpected",
"error": "'NoneType' object is not iterable",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 433, in _validate_from_tid\n detail_result = _run_timed(result[\"timings_ms\"], \"detail\", spider.detailContent, clock, [vod_id])\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/寻川4K.txt\", line 810, in detailContent\nTypeError: 'NoneType' object is not iterable\n",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 13.798,
"init": 452.033,
"home": 988.568,
"category": 536.84,
"detail": 533.626,
"player": 0.0,
"url_check": 0.0,
"total": 2526.068
"module_load": 9.513,
"init": 361.157,
"home": 742.778,
"category": 376.887,
"detail": 372.389,
"player": 1347.789,
"url_check": 85.089,
"total": 3296.047
},
"counts": {
"classes": 9,
"category_videos": 20,
"detail_videos": 0,
"episodes": 0
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "581873",
"flag": null,
"play_id": null
"vod_id": "588630",
"flag": "BFm(请勿相信任何广告)-高峰卡",
"play_id": "https://v10.baofeng10.com/video/munaiyi2026/45f4844f52a8/index.m3u8@@@bfzym3u8"
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"parse": 0,
"url": "http://122.51.23.16:7788/qgg/Cache/BF/06e0d137d206547f9e2229cc58ba528f.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://122.51.23.16:7788/qgg/Cache/BF/06e0d137d206547f9e2229cc58ba528f.m3u8",
"reason": null
}
},
@@ -1353,14 +1353,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.976,
"module_load": 5.124,
"init": 0.001,
"home": 0.001,
"category": 688.824,
"detail": 663.336,
"player": 936.092,
"url_check": 479.748,
"total": 2774.359
"category": 756.116,
"detail": 649.866,
"player": 921.219,
"url_check": 567.657,
"total": 2900.551
},
"counts": {
"classes": 4,
@@ -1376,11 +1376,11 @@
},
"player": {
"parse": 0,
"url": "https://media-bjcy-fy-person01.bjoss.ctyunxs.cn/PERSONCLOUD/874f908a-f9df-4538-942a-7342fda0ff8a.m3u8?x-amz-CLIENTTYPEIN=UNKNOWN&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&x-amz-userLevel=0&x-amz-limitrate=51200&x-amz-UID=269636103&x-amz-APPID=828221&response-content-disposition=attachment%3Bfilename%3D%22%E6%AD%A3%E7%89%87.m3u8%22%3Bfilename*%3DUTF-8%27%27%25E6%25AD%25A3%25E7%2589%2587.m3u8&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=PERSON&Signature=zl3s/ZmXgvIQLSRUzBaczrARtaI%3D&Expires=1779621942&x-amz-FSIZE=58373&x-amz-UFID=624471240788981016",
"url": "https://media-bjcy-fy-person01.bjoss.ctyunxs.cn/PERSONCLOUD/874f908a-f9df-4538-942a-7342fda0ff8a.m3u8?x-amz-CLIENTTYPEIN=UNKNOWN&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&x-amz-userLevel=0&x-amz-limitrate=51200&x-amz-UID=269636103&x-amz-APPID=828221&response-content-disposition=attachment%3Bfilename%3D%22%E6%AD%A3%E7%89%87.m3u8%22%3Bfilename*%3DUTF-8%27%27%25E6%25AD%25A3%25E7%2589%2587.m3u8&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=PERSON&Signature=CDHFS4XYIyUHpHKuxLyrB1qBdAw%3D&Expires=1779707483&x-amz-FSIZE=58373&x-amz-UFID=624471240788981016",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://media-bjcy-fy-person01.bjoss.ctyunxs.cn/PERSONCLOUD/874f908a-f9df-4538-942a-7342fda0ff8a.m3u8?x-amz-CLIENTTYPEIN=UNKNOWN&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&x-amz-userLevel=0&x-amz-limitrate=51200&x-amz-UID=269636103&x-amz-APPID=828221&response-content-disposition=attachment%3Bfilename%3D%22%E6%AD%A3%E7%89%87.m3u8%22%3Bfilename*%3DUTF-8%27%27%25E6%25AD%25A3%25E7%2589%2587.m3u8&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=PERSON&Signature=zl3s/ZmXgvIQLSRUzBaczrARtaI%3D&Expires=1779621942&x-amz-FSIZE=58373&x-amz-UFID=624471240788981016",
"final_url": "https://media-bjcy-fy-person01.bjoss.ctyunxs.cn/PERSONCLOUD/874f908a-f9df-4538-942a-7342fda0ff8a.m3u8?x-amz-CLIENTTYPEIN=UNKNOWN&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&x-amz-userLevel=0&x-amz-limitrate=51200&x-amz-UID=269636103&x-amz-APPID=828221&response-content-disposition=attachment%3Bfilename%3D%22%E6%AD%A3%E7%89%87.m3u8%22%3Bfilename*%3DUTF-8%27%27%25E6%25AD%25A3%25E7%2589%2587.m3u8&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=PERSON&Signature=CDHFS4XYIyUHpHKuxLyrB1qBdAw%3D&Expires=1779707483&x-amz-FSIZE=58373&x-amz-UFID=624471240788981016",
"reason": null
}
},
@@ -1392,14 +1392,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.318,
"init": 0.023,
"home": 192.69,
"category": 263.408,
"detail": 663.499,
"player": 0.004,
"url_check": 153.697,
"total": 1277.857
"module_load": 3.237,
"init": 0.017,
"home": 195.789,
"category": 373.549,
"detail": 375.062,
"player": 0.002,
"url_check": 514.475,
"total": 1462.545
},
"counts": {
"classes": 30,
@@ -1411,15 +1411,15 @@
"tid": "都市",
"vod_id": "110000044555935694",
"flag": "1080P",
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779621661&sign=eaad2320e611a2a33cb0bf617edf56c0"
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779707335&sign=f5449dcccc8fe8bea58ba940c057c681"
},
"player": {
"parse": 0,
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779621661&sign=eaad2320e611a2a33cb0bf617edf56c0",
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779707335&sign=f5449dcccc8fe8bea58ba940c057c681",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779621661&sign=eaad2320e611a2a33cb0bf617edf56c0",
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779707335&sign=f5449dcccc8fe8bea58ba940c057c681",
"reason": null
}
},
@@ -1431,14 +1431,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.867,
"module_load": 5.804,
"init": 0.001,
"home": 0.0,
"category": 617.276,
"detail": 648.043,
"player": 473.301,
"url_check": 1123.581,
"total": 2873.762
"home": 0.001,
"category": 1585.24,
"detail": 2892.21,
"player": 2075.071,
"url_check": 817.133,
"total": 7376.012
},
"counts": {
"classes": 5,
@@ -1470,14 +1470,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 12.367,
"module_load": 3.401,
"init": 0.001,
"home": 0.001,
"category": 484.351,
"detail": 874.184,
"player": 0.002,
"url_check": 106.89,
"total": 1478.375
"home": 0.0,
"category": 509.458,
"detail": 603.002,
"player": 0.003,
"url_check": 412.806,
"total": 1529.225
},
"counts": {
"classes": 5,
@@ -1509,14 +1509,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 28.949,
"module_load": 8.826,
"init": 0.001,
"home": 0.001,
"category": 345.843,
"detail": 249.411,
"player": 0.021,
"url_check": 393.851,
"total": 1019.429
"category": 450.73,
"detail": 332.916,
"player": 0.012,
"url_check": 477.869,
"total": 1270.974
},
"counts": {
"classes": 7,
@@ -1543,78 +1543,78 @@
{
"spider": "樱花动漫",
"file": "樱花动漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.dmvvv.com', port=443): Max retries exceeded with url: /type/guoman/ (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.dmvvv.com', port=443): Max retries exceeded with url: /type/guoman/ (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/樱花动漫.txt\", line 54, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/樱花动漫.txt\", line 121, in _get_html\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='www.dmvvv.com', port=443): Max retries exceeded with url: /type/guoman/ (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 4.712,
"module_load": 4.882,
"init": 0.001,
"home": 0.001,
"category": 1641.458,
"detail": 1583.76,
"player": 1591.047,
"url_check": 2152.69,
"total": 6974.232
"category": 227.291,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 238.386
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "guoman",
"vod_id": "891",
"flag": "高清",
"play_id": "/play/891-1-1/"
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://svip.high1-playback.com/20230925/702_a76644e3/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://svip.high1-playback.com/20230925/702_a76644e3/index.m3u8",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "橘子TV",
"file": "橘子TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 705, in validate_spider_file\n home_result = _run_timed(result[\"timings_ms\"], \"home\", spider.homeContent, clock, False)\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/橘子TV.txt\", line 117, in homeContent\n File \"/home/harold/workspace/tvbox-resources/py/橘子TV.txt\", line 96, in _post_api\n File \"/home/harold/workspace/atv-spiders/py/base/spider.py\", line 152, in post\n rsp = requests.post(url, params=params, data=data, json=json, cookies=cookies, headers=headers, timeout=timeout,\n verify=verify, stream=stream, allow_redirects=allow_redirects)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n",
"timings_ms": {
"module_load": 10.438,
"init": 347.281,
"home": 354.946,
"category": 360.614,
"detail": 410.095,
"player": 1500.732,
"url_check": 1165.547,
"total": 4150.687
"module_load": 12.415,
"init": 401.999,
"home": 5011.866,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 5428.73
},
"counts": {
"classes": 8,
"category_videos": 18,
"detail_videos": 1,
"episodes": 1
"classes": 0,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "50",
"vod_id": "387153",
"flag": "一起看APP",
"play_id": "24909683"
"tid": null,
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://usaydd.0rvgx279.com/m3u87/share/6974425/7170239/20260417/114416/1080/index.m3u8?sign=93f05d2825e24bf348a994de90ef82b2&t=1779621664",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://usaydd.0rvgx279.com/m3u87/share/6974425/7170239/20260417/114416/1080/index.m3u8?sign=93f05d2825e24bf348a994de90ef82b2&t=1779621664",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -1626,14 +1626,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.215,
"init": 0.0,
"module_load": 8.395,
"init": 0.001,
"home": 0.001,
"category": 374.512,
"detail": 314.22,
"player": 0.01,
"url_check": 1118.471,
"total": 1818.257
"category": 1680.423,
"detail": 1118.186,
"player": 0.006,
"url_check": 1049.083,
"total": 3856.576
},
"counts": {
"classes": 6,
@@ -1643,17 +1643,17 @@
},
"samples": {
"tid": "1",
"vod_id": "29571",
"vod_id": "30149",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/1gIt5r-N_wyroVz02nMmDFA?pwd=8888"
"play_id": "https://pan.baidu.com/s/1q-aIu_ukSASfpmgIRXvVyg?pwd=8888"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1gIt5r-N_wyroVz02nMmDFA?pwd=8888",
"url": "https://pan.baidu.com/s/1q-aIu_ukSASfpmgIRXvVyg?pwd=8888",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=gIt5r-N_wyroVz02nMmDFA&pwd=8888",
"final_url": "https://pan.baidu.com/share/init?surl=q-aIu_ukSASfpmgIRXvVyg&pwd=8888",
"reason": null
}
},
@@ -1665,14 +1665,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.91,
"init": 110.331,
"home": 182.485,
"category": 133.95,
"detail": 147.804,
"player": 131.793,
"url_check": 314.468,
"total": 1029.1
"module_load": 25.994,
"init": 94.108,
"home": 184.976,
"category": 132.816,
"detail": 103.448,
"player": 125.394,
"url_check": 477.605,
"total": 1146.258
},
"counts": {
"classes": 7,
@@ -1682,17 +1682,17 @@
},
"samples": {
"tid": "1",
"vod_id": "399728",
"vod_id": "403963",
"flag": "🔥蓝光🔥",
"play_id": "YYNB-ed6d8c98e2fdb332f780e0d95dc4b49e@@@YYNB"
"play_id": "YYNB-fb05126bd0ec8d1202c273ed27abff61@@@YYNB"
},
"player": {
"parse": 0,
"url": "https://fffan.wki8.com/hls/104c4c8ddc1eaca9c853e9f9e1858095.m3u8?token=0c3e05d373daf2f0eb34d8ac4d56a979&time=1779621663&YYNB.m3u8",
"url": "https://fffan.wki8.com/hls/fa6c308aa385e99ce4ae7f785af7bff9.m3u8?token=f6d93fb5887b2261af84902cb7e336f5&time=1779707337&YYNB.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fffan.wki8.com/hls/104c4c8ddc1eaca9c853e9f9e1858095.m3u8?token=0c3e05d373daf2f0eb34d8ac4d56a979&time=1779621663&YYNB.m3u8",
"final_url": "https://fffan.wki8.com/hls/fa6c308aa385e99ce4ae7f785af7bff9.m3u8?token=f6d93fb5887b2261af84902cb7e336f5&time=1779707337&YYNB.m3u8",
"reason": null
}
},
@@ -1704,14 +1704,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.777,
"init": 0.001,
"home": 401.828,
"category": 348.469,
"detail": 842.998,
"player": 0.058,
"url_check": 271.541,
"total": 1871.323
"module_load": 13.984,
"init": 0.0,
"home": 337.797,
"category": 326.17,
"detail": 757.54,
"player": 0.02,
"url_check": 384.069,
"total": 1825.579
},
"counts": {
"classes": 10,
@@ -1723,15 +1723,15 @@
"tid": "462",
"vod_id": "41000200565",
"flag": "河马剧场",
"play_id": "https://dzzt-video.cbread.cn/3bd535024c643bf337fa5624fdb9e9f4/6a142bb0/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4"
"play_id": "https://dzzt-video.cbread.cn/5727ee74bbf3b1983ded5fde74fb6798/6a156f20/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4"
},
"player": {
"parse": 0,
"url": "https://dzzt-video.cbread.cn/3bd535024c643bf337fa5624fdb9e9f4/6a142bb0/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4",
"url": "https://dzzt-video.cbread.cn/5727ee74bbf3b1983ded5fde74fb6798/6a156f20/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://dzzt-video.cbread.cn/3bd535024c643bf337fa5624fdb9e9f4/6a142bb0/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4",
"final_url": "https://dzzt-video.cbread.cn/5727ee74bbf3b1983ded5fde74fb6798/6a156f20/85/5x6/56x5/565x0/56500200014/613046858_1/613046858.720p.narrowv3.mp4",
"reason": null
}
},
@@ -1743,14 +1743,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.755,
"init": 330.501,
"home": 667.231,
"category": 312.252,
"detail": 342.703,
"player": 752.401,
"url_check": 61.585,
"total": 6490.199
"module_load": 7.417,
"init": 307.976,
"home": 316.799,
"category": 418.405,
"detail": 170.542,
"player": 984.241,
"url_check": 380.643,
"total": 2586.444
},
"counts": {
"classes": 7,
@@ -1759,18 +1759,18 @@
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "245464",
"flag": "qq",
"play_id": "https://v.qq.com/x/cover/mzc00200lpwbono/x41021gd2jr.html@@@qq"
"tid": "1",
"vod_id": "245420",
"flag": "奇异",
"play_id": "https://www.iqiyi.com/v_159dxzpa3mo.html@@@qiyi"
},
"player": {
"parse": 0,
"url": "https://apd-vlive.apdcdn.tc.qq.com/defaultts.tc.qq.com/B_3k--xdVBUHYl1q0K2jODe7RDfxfTYoID7Bu9QoczVCyZcNiJs4yyk05SqvzDhOIiLp-UETbvdCXfVseT7FV3wr66TQ7pwsPGBaR_VW_eAKm5GQ1aFCdmJutUC-LOfqJ7QWhMlwWkFLEsqXwgdTXrXg/svp_50112/M4uoUiWOxYNxqDYaX8ay5pD4dZoZZSWGGwVj7Lx8erLOxJLSvXqp5PqjBciR_pJMJ8aRYf5-dbr3Xc-umMZhDuQl-MmzQUiwY2hfT60XeET7LSwLBzs8xEGay7nCXVmkG_ccfPbTpZdkJ64wws2bFtRizklosdeR2rXGVzPyzo6X0mqZ3yxd04yClHpF2IcpoPhphbnlQRo/gzc_1000102_0b53ziaosaaaiaamhaipejvmbswd5hdab3ka.f322363.ts.m3u8?ver=4",
"url": "http://jxk.ys088.top/Cache/qy/0585401dac1e174b433c000c686efaeb.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://apd-vlive.apdcdn.tc.qq.com/defaultts.tc.qq.com/B_3k--xdVBUHYl1q0K2jODe7RDfxfTYoID7Bu9QoczVCyZcNiJs4yyk05SqvzDhOIiLp-UETbvdCXfVseT7FV3wr66TQ7pwsPGBaR_VW_eAKm5GQ1aFCdmJutUC-LOfqJ7QWhMlwWkFLEsqXwgdTXrXg/svp_50112/M4uoUiWOxYNxqDYaX8ay5pD4dZoZZSWGGwVj7Lx8erLOxJLSvXqp5PqjBciR_pJMJ8aRYf5-dbr3Xc-umMZhDuQl-MmzQUiwY2hfT60XeET7LSwLBzs8xEGay7nCXVmkG_ccfPbTpZdkJ64wws2bFtRizklosdeR2rXGVzPyzo6X0mqZ3yxd04yClHpF2IcpoPhphbnlQRo/gzc_1000102_0b53ziaosaaaiaamhaipejvmbswd5hdab3ka.f322363.ts.m3u8?ver=4",
"final_url": "http://jxk.ys088.top/Cache/qy/0585401dac1e174b433c000c686efaeb.m3u8",
"reason": null
}
},
@@ -1782,14 +1782,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 15.727,
"module_load": 5.284,
"init": 0.001,
"home": 0.001,
"category": 218.714,
"detail": 320.841,
"category": 395.883,
"detail": 274.654,
"player": 0.003,
"url_check": 1013.035,
"total": 1569.162
"url_check": 1056.785,
"total": 1733.258
},
"counts": {
"classes": 5,
@@ -1821,14 +1821,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.038,
"init": 0.002,
"home": 283.32,
"category": 493.326,
"detail": 282.157,
"player": 309.128,
"url_check": 44.237,
"total": 1416.657
"module_load": 8.12,
"init": 0.003,
"home": 361.643,
"category": 385.011,
"detail": 314.387,
"player": 262.762,
"url_check": 906.855,
"total": 2239.211
},
"counts": {
"classes": 10,
@@ -1844,11 +1844,11 @@
},
"player": {
"parse": 0,
"url": "http://beyond8888888.ucyy.cn/2026-05-24/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779620415-0-0-9595c420c179a8cfc5bb855597a2a601",
"url": "http://beyond8888888.ucyy.cn/2026-05-25/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779706826-0-0-eeccf7d79684f75ee84ccafd042e974c",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://beyond8888888.ucyy.cn/2026-05-24/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779620415-0-0-9595c420c179a8cfc5bb855597a2a601",
"final_url": "http://beyond8888888.ucyy.cn/2026-05-25/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779706826-0-0-eeccf7d79684f75ee84ccafd042e974c",
"reason": null
}
},
@@ -1860,18 +1860,18 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.877,
"init": 0.024,
"home": 3535.558,
"category": 765.457,
"detail": 99.674,
"module_load": 15.113,
"init": 0.019,
"home": 4838.194,
"category": 392.968,
"detail": 367.455,
"player": 0.001,
"url_check": 116.874,
"total": 4530.336
"url_check": 407.302,
"total": 6021.817
},
"counts": {
"classes": 11,
"category_videos": 48,
"category_videos": 60,
"detail_videos": 1,
"episodes": 1
},
@@ -1899,14 +1899,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.081,
"module_load": 4.46,
"init": 0.001,
"home": 0.001,
"category": 724.449,
"detail": 332.853,
"player": 338.823,
"url_check": 338.447,
"total": 1739.579
"category": 1334.792,
"detail": 1204.93,
"player": 1228.433,
"url_check": 1026.765,
"total": 4799.908
},
"counts": {
"classes": 6,
@@ -1916,36 +1916,36 @@
},
"samples": {
"tid": "index",
"vod_id": "144772",
"vod_id": "145003",
"flag": "独播库",
"play_id": "144772-1-1"
"play_id": "145003-1-1"
},
"player": {
"parse": 0,
"url": "https://vid.dbokutv.com/20260510/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBtfsRsGlR7XgBNfgBJ0nBJ0nGZ8vDpaqCovjS34/chunklist.m3u8",
"url": "https://vid.dbokutv.com/20260524/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsHdTcyo5xOy6ejP7HjTsGnQYqmCIqmCZD6E3D6E3GkRN0q/chunklist.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vid.dbokutv.com/20260510/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBtfsRsGlR7XgBNfgBJ0nBJ0nGZ8vDpaqCovjS34/chunklist.m3u8",
"final_url": "https://vid.dbokutv.com/20260524/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsHdTcyo5xOy6ejP7HjTsGnQYqmCIqmCZD6E3D6E3GkRN0q/chunklist.m3u8",
"reason": null
}
},
{
"spider": "猫猫4K",
"file": "猫猫4K.txt",
"success": true,
"failed_stage": null,
"error": null,
"success": false,
"failed_stage": "player",
"error": "playerContent 未返回播放地址",
"traceback": null,
"timings_ms": {
"module_load": 33.511,
"init": 224.122,
"home": 321.725,
"category": 198.308,
"detail": 134.24,
"player": 128.518,
"url_check": 981.719,
"total": 3398.505
"module_load": 9.238,
"init": 189.71,
"home": 237.823,
"category": 399.841,
"detail": 165.674,
"player": 331.408,
"url_check": 0.0,
"total": 2543.234
},
"counts": {
"classes": 5,
@@ -1954,96 +1954,96 @@
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "189564",
"flag": "火猫备用R",
"play_id": "https://svip.ryiplay18.com/20260523/6672_de2d6a20/index.m3u8@@@rym3u8"
"tid": "2",
"vod_id": "9118",
"flag": "火猫极速Y",
"play_id": "https://v.youku.com/v_show/id_XMzAxOTY0OTk2NA==.html@@@youku"
},
"player": {
"parse": 0,
"url": "https://svip.ryiplay18.com/20260523/6672_de2d6a20/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://svip.ryiplay18.com/20260523/6672_de2d6a20/index.m3u8",
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "玩偶哥哥",
"file": "玩偶哥哥.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 27.632,
"module_load": 8.489,
"init": 0.001,
"home": 0.001,
"category": 148.082,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 331.968
"category": 728.1,
"detail": 565.105,
"player": 0.009,
"url_check": 139.608,
"total": 1441.912
},
"counts": {
"classes": 8,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
"category_videos": 70,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "2",
"vod_id": null,
"flag": null,
"play_id": null
"tid": "1",
"vod_id": "125344",
"flag": "夸克#玩偶哥哥",
"play_id": "https://pan.quark.cn/s/f7f361fcba9a"
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"parse": 0,
"url": "https://pan.quark.cn/s/f7f361fcba9a",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/f7f361fcba9a",
"reason": null
}
},
{
"spider": "玩偶聚合",
"file": "玩偶聚合.txt",
"success": false,
"failed_stage": "unexpected",
"error": "all domains failed",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/玩偶聚合.txt\", line 5136, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/玩偶聚合.txt\", line 5068, in _request_with_failover\nRuntimeError: all domains failed\n",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 37.608,
"module_load": 42.324,
"init": 0.001,
"home": 2.482,
"category": 385.392,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 426.891
"home": 2.614,
"category": 1484.602,
"detail": 810.049,
"player": 0.002,
"url_check": 1255.49,
"total": 3596.175
},
"counts": {
"classes": 10,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
"category_videos": 70,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "site_wanou",
"vod_id": null,
"flag": null,
"play_id": null
"vod_id": "site:wanou:/voddetail/124186.html",
"flag": "百度#玩偶",
"play_id": "https://pan.baidu.com/s/17YPFM4QzzANNPXtsORGeHA?pwd=zhfc"
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"parse": 0,
"url": "https://pan.baidu.com/s/17YPFM4QzzANNPXtsORGeHA?pwd=zhfc",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=7YPFM4QzzANNPXtsORGeHA&pwd=zhfc",
"reason": null
}
},
@@ -2055,14 +2055,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.001,
"init": 0.002,
"home": 0.026,
"category": 552.603,
"detail": 1021.17,
"player": 534.192,
"url_check": 321.038,
"total": 2437.357
"module_load": 5.355,
"init": 0.001,
"home": 0.011,
"category": 1905.263,
"detail": 2275.239,
"player": 1119.091,
"url_check": 383.218,
"total": 5689.167
},
"counts": {
"classes": 5,
@@ -2078,11 +2078,11 @@
},
"player": {
"parse": 0,
"url": "https://vd.hxcztech.com/2dc8157b2eea1dfbd8f2ea1b2ae2be05/20260524192105/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"url": "https://vd.jiunuow.com/ade2f8c0a1bd5a306e19a435a9693c4d/20260525190903/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vd.hxcztech.com/2dc8157b2eea1dfbd8f2ea1b2ae2be05/20260524192105/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"final_url": "https://vd.jiunuow.com/ade2f8c0a1bd5a306e19a435a9693c4d/20260525190903/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"reason": null
}
},
@@ -2094,14 +2094,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.179,
"module_load": 7.742,
"init": 0.001,
"home": 373.279,
"category": 269.325,
"detail": 677.451,
"player": 292.28,
"url_check": 40.343,
"total": 1662.496
"home": 388.222,
"category": 259.812,
"detail": 589.556,
"player": 252.33,
"url_check": 47.15,
"total": 1545.25
},
"counts": {
"classes": 29,
@@ -2117,11 +2117,11 @@
},
"player": {
"parse": 0,
"url": "http://vd3.bdstatic.com/mda-rgu31fx13xnschwc/1080p/mv_cae264_backtrack_1080p_normal/1753858859061604699/mda-rgu31fx13xnschwc.mp4?v_from_s=haokan-ui-video-hnb",
"url": "http://vd3.bdstatic.com/mda-rgu31fx13xnschwc/1080p/mv_cae264_backtrack_1080p_normal/1753858859061604699/mda-rgu31fx13xnschwc.mp4?v_from_s=haokan-ui-video-hna",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://vd3.bdstatic.com/mda-rgu31fx13xnschwc/1080p/mv_cae264_backtrack_1080p_normal/1753858859061604699/mda-rgu31fx13xnschwc.mp4?v_from_s=haokan-ui-video-hnb",
"final_url": "http://vd3.bdstatic.com/mda-rgu31fx13xnschwc/1080p/mv_cae264_backtrack_1080p_normal/1753858859061604699/mda-rgu31fx13xnschwc.mp4?v_from_s=haokan-ui-video-hna",
"reason": null
}
},
@@ -2133,14 +2133,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.653,
"module_load": 10.281,
"init": 0.001,
"home": 332.532,
"category": 254.394,
"detail": 221.903,
"player": 0.024,
"url_check": 136.029,
"total": 956.226
"home": 268.956,
"category": 253.187,
"detail": 232.374,
"player": 0.021,
"url_check": 458.247,
"total": 1223.632
},
"counts": {
"classes": 8,
@@ -2167,39 +2167,39 @@
{
"spider": "盘聚",
"file": "盘聚.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.seedhub.cc', port=443): Max retries exceeded with url: /?page=1 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.seedhub.cc', port=443): Max retries exceeded with url: /?page=1 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 721, in validate_spider_file\n _validate_from_tid(\n ~~~~~~~~~~~~~~~~~~^\n spider=spider,\n ^^^^^^^^^^^^^^\n ...<6 lines>...\n logger=logger,\n ^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 417, in _validate_from_tid\n category_result = _run_timed(result[\"timings_ms\"], \"category\", spider.categoryContent, clock, tid, \"1\", False, {})\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/盘聚.txt\", line 144, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/盘聚.txt\", line 99, in _request_html\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='www.seedhub.cc', port=443): Max retries exceeded with url: /?page=1 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 5.499,
"module_load": 6.695,
"init": 0.001,
"home": 0.0,
"category": 205.735,
"detail": 238.511,
"player": 196.64,
"url_check": 1139.278,
"total": 1786.328
"home": 0.001,
"category": 5012.399,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 5022.863
},
"counts": {
"classes": 4,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "/",
"vod_id": "118943",
"flag": "百度1",
"play_id": "push://https://www.seedhub.cc/link_start/?redirect_to=pan_id_582338&movie_title=❤️❤️❤️【低智商犯罪】【4K 1080P】更新于 ✅ 今天"
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1peTZUHSqI7G9IV8sDes97g?pwd=ojmk",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=peTZUHSqI7G9IV8sDes97g&pwd=ojmk",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -2211,14 +2211,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.706,
"init": 0.04,
"module_load": 7.467,
"init": 0.03,
"home": 0.001,
"category": 1597.828,
"detail": 357.828,
"category": 1290.472,
"detail": 244.581,
"player": 0.002,
"url_check": 1750.246,
"total": 3717.222
"url_check": 1247.515,
"total": 2790.571
},
"counts": {
"classes": 5,
@@ -2250,18 +2250,18 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 20.21,
"init": 743.62,
"home": 0.096,
"category": 493.41,
"detail": 315.368,
"module_load": 18.446,
"init": 549.45,
"home": 0.113,
"category": 701.349,
"detail": 655.112,
"player": 0.002,
"url_check": 106.93,
"total": 1680.383
"url_check": 497.286,
"total": 2422.422
},
"counts": {
"classes": 11,
"category_videos": 77,
"category_videos": 73,
"detail_videos": 1,
"episodes": 1
},
@@ -2289,34 +2289,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.02,
"init": 0.001,
"module_load": 3.932,
"init": 0.0,
"home": 0.001,
"category": 383.39,
"detail": 349.739,
"player": 0.005,
"url_check": 159.802,
"total": 899.513
"category": 232.512,
"detail": 261.879,
"player": 0.008,
"url_check": 920.094,
"total": 1418.903
},
"counts": {
"classes": 2,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "https://sm3.cc/?id=52147",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/c953c0afd454"
"vod_id": "https://sm3.cc/?id=52305",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/15WnDe2sc1UFF2R91mnX8zg?pwd=6666"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/c953c0afd454",
"url": "https://pan.baidu.com/s/15WnDe2sc1UFF2R91mnX8zg?pwd=6666",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/c953c0afd454",
"final_url": "https://pan.baidu.com/share/init?surl=5WnDe2sc1UFF2R91mnX8zg&pwd=6666",
"reason": null
}
},
@@ -2328,18 +2328,18 @@
"error": "HTTPSConnectionPool(host='vip.123pan.cn', port=443): Max retries exceeded with url: /1853039965/202510/%E4%B8%BB%E8%A7%92/%E4%B8%BB%E8%A7%92EP01.m3u8 (Caused by SSLError(SSLError(1, '[SSL: RECORD_LAYER_FAILURE] record layer failure (_ssl.c:1081)')))",
"traceback": null,
"timings_ms": {
"module_load": 5.902,
"module_load": 5.469,
"init": 0.001,
"home": 817.801,
"category": 847.266,
"detail": 172.27,
"player": 279.587,
"url_check": 54.668,
"total": 4271.496
"home": 953.329,
"category": 1227.854,
"detail": 155.902,
"player": 279.968,
"url_check": 53.564,
"total": 5252.838
},
"counts": {
"classes": 7,
"category_videos": 47,
"category_videos": 45,
"detail_videos": 1,
"episodes": 2
},
@@ -2367,14 +2367,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.812,
"module_load": 5.093,
"init": 0.001,
"home": 390.656,
"category": 410.52,
"detail": 0.009,
"player": 1121.557,
"url_check": 41.367,
"total": 1974.06
"home": 632.628,
"category": 400.173,
"detail": 0.005,
"player": 1653.163,
"url_check": 780.557,
"total": 3472.54
},
"counts": {
"classes": 62,
@@ -2384,17 +2384,17 @@
},
"samples": {
"tid": "/discover/toplist?id=19723756",
"vod_id": "3356975915@Montagem pitty@见过夏天P👉MP3",
"vod_id": "3383232912@如果是我@余宇涵👉MP3",
"flag": "网易云音乐",
"play_id": "3356975915"
"play_id": "3383232912"
},
"player": {
"parse": 0,
"url": "https://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260524194606/a3801aa71e6570d6ea6504bf7771df19/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/78836438796/af82/828d/c0e5/0f114dda22328c5aa6de7d46c0c3442c.mp3",
"url": "https://iot202.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260525193402/b7990b7b569d26c2860c3c7d98f4072b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/80373858734/0344/c1cb/f368/efa3d8f5ae91e134bd9eec734e0d1797.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260524194606/a3801aa71e6570d6ea6504bf7771df19/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/78836438796/af82/828d/c0e5/0f114dda22328c5aa6de7d46c0c3442c.mp3",
"final_url": "https://iot202.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260525193402/b7990b7b569d26c2860c3c7d98f4072b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/80373858734/0344/c1cb/f368/efa3d8f5ae91e134bd9eec734e0d1797.mp3",
"reason": null
}
},
@@ -2406,14 +2406,14 @@
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 6.595,
"module_load": 4.597,
"init": 0.001,
"home": 0.0,
"category": 1284.141,
"home": 0.001,
"category": 4160.227,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 2640.621
"total": 14896.854
},
"counts": {
"classes": 6,
@@ -2445,14 +2445,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.271,
"module_load": 9.226,
"init": 0.001,
"home": 133.331,
"category": 337.931,
"detail": 1110.758,
"player": 0.003,
"url_check": 240.663,
"total": 1829.697
"home": 475.433,
"category": 278.006,
"detail": 1569.04,
"player": 0.002,
"url_check": 200.832,
"total": 2533.597
},
"counts": {
"classes": 7,
@@ -2484,14 +2484,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.847,
"module_load": 10.626,
"init": 0.001,
"home": 0.001,
"category": 379.127,
"detail": 284.522,
"player": 0.036,
"url_check": 162.528,
"total": 838.814
"category": 479.899,
"detail": 451.83,
"player": 0.011,
"url_check": 158.248,
"total": 1101.056
},
"counts": {
"classes": 7,
@@ -2523,34 +2523,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.412,
"init": 0.001,
"home": 217.641,
"category": 457.597,
"detail": 323.497,
"player": 606.721,
"url_check": 1270.846,
"total": 2887.566
"module_load": 7.083,
"init": 0.0,
"home": 423.852,
"category": 520.631,
"detail": 273.211,
"player": 691.375,
"url_check": 161.783,
"total": 2078.605
},
"counts": {
"classes": 4,
"category_videos": 35,
"detail_videos": 1,
"episodes": 2
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "detail/video/121157",
"flag": "FF有广",
"play_id": "play/121157-1-1"
"vod_id": "detail/video/121197",
"flag": "BF有广",
"play_id": "play/121197-1-1"
},
"player": {
"parse": 0,
"url": "https://vip.ffzy-play10.com/20260522/66759_da5f7764/index.m3u8",
"url": "https://v10.baofeng10.com/video/diyu/6e1cfef27217/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vip.ffzy-play10.com/20260522/66759_da5f7764/index.m3u8",
"final_url": "https://v10.baofeng10.com/video/diyu/6e1cfef27217/index.m3u8",
"reason": null
}
},
@@ -2562,14 +2562,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.579,
"module_load": 7.884,
"init": 0.001,
"home": 0.001,
"category": 3829.204,
"detail": 3879.633,
"category": 3204.526,
"detail": 3784.945,
"player": 0.009,
"url_check": 931.585,
"total": 8648.801
"url_check": 1237.243,
"total": 8235.03
},
"counts": {
"classes": 7,
@@ -2579,17 +2579,17 @@
},
"samples": {
"tid": "1",
"vod_id": "462748",
"vod_id": "460085",
"flag": "百度#虎斑",
"play_id": "https://pan.baidu.com/s/1YSfhei2ni1eaGRcDcMOBDA?pwd=9937"
"play_id": "https://pan.baidu.com/s/1bW6l6bn2ManRsl581WP7RA?pwd=4832"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1YSfhei2ni1eaGRcDcMOBDA?pwd=9937",
"url": "https://pan.baidu.com/s/1bW6l6bn2ManRsl581WP7RA?pwd=4832",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=YSfhei2ni1eaGRcDcMOBDA&pwd=9937",
"final_url": "https://pan.baidu.com/share/init?surl=bW6l6bn2ManRsl581WP7RA&pwd=4832",
"reason": null
}
},
@@ -2601,14 +2601,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.871,
"module_load": 10.989,
"init": 0.001,
"home": 0.001,
"category": 594.415,
"detail": 335.324,
"category": 624.183,
"detail": 1221.948,
"player": 0.003,
"url_check": 1593.306,
"total": 2530.464
"url_check": 1022.611,
"total": 2880.63
},
"counts": {
"classes": 7,
@@ -2640,14 +2640,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.306,
"module_load": 6.413,
"init": 0.001,
"home": 0.001,
"category": 737.065,
"detail": 224.423,
"player": 203.309,
"url_check": 1116.399,
"total": 2287.201
"category": 1347.413,
"detail": 939.914,
"player": 913.466,
"url_check": 1059.79,
"total": 4267.725
},
"counts": {
"classes": 4,
@@ -2679,14 +2679,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 19.295,
"module_load": 5.887,
"init": 0.0,
"home": 362.575,
"category": 230.243,
"detail": 314.738,
"player": 629.384,
"url_check": 460.26,
"total": 2017.435
"home": 401.979,
"category": 285.828,
"detail": 258.238,
"player": 730.322,
"url_check": 606.487,
"total": 2289.711
},
"counts": {
"classes": 6,
@@ -2713,39 +2713,39 @@
{
"spider": "路漫漫",
"file": "路漫漫.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.69,
"init": 0.001,
"module_load": 4.124,
"init": 0.0,
"home": 0.001,
"category": 209.732,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 470.036
"category": 819.024,
"detail": 635.172,
"player": 1738.644,
"url_check": 578.864,
"total": 3776.567
},
"counts": {
"classes": 6,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "7",
"vod_id": null,
"flag": null,
"play_id": null
"tid": "6",
"vod_id": "detail/7976.html",
"flag": "播放节点列表X dev云播 聚合线路",
"play_id": "play/7976_1_1.html"
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"parse": 1,
"url": "https://www.lmm85.com/play/7976_1_1.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.lmm85.com/play/7976_1_1.html",
"reason": null
}
},
@@ -2757,14 +2757,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.757,
"module_load": 5.106,
"init": 0.001,
"home": 391.399,
"category": 101.866,
"detail": 3488.778,
"player": 145.823,
"url_check": 43.374,
"total": 4178.585
"home": 701.406,
"category": 102.168,
"detail": 3541.782,
"player": 368.528,
"url_check": 53.522,
"total": 4773.56
},
"counts": {
"classes": 4,
@@ -2780,11 +2780,11 @@
},
"player": {
"parse": 0,
"url": "http://car-lv.kuwo.cn/7f7f823b239331d3559332b41b4b0cb3/6a12df27/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"url": "http://car-lv.kuwo.cn/25cf6cef96856badc8dfac1bf2b10350/6a142dd3/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://car-lv.kuwo.cn/7f7f823b239331d3559332b41b4b0cb3/6a12df27/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"final_url": "http://car-lv.kuwo.cn/25cf6cef96856badc8dfac1bf2b10350/6a142dd3/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"reason": null
}
},
@@ -2796,34 +2796,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.924,
"init": 423.186,
"home": 256.204,
"category": 263.054,
"detail": 270.816,
"player": 318.171,
"url_check": 28.007,
"total": 1568.592
"module_load": 7.373,
"init": 1058.203,
"home": 285.15,
"category": 246.704,
"detail": 277.624,
"player": 305.236,
"url_check": 41.023,
"total": 2222.651
},
"counts": {
"classes": 12,
"category_videos": 15,
"category_videos": 14,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "recommend",
"vod_id": "516619275",
"vod_id": "276470230",
"flag": "酷狗音乐",
"play_id": "516619275"
"play_id": "276470230"
},
"player": {
"parse": 0,
"url": "http://fsdg360.tx.kugou.com/202605241921/f22722932bc0ec674834e2e288a7d7a7/v3/bdef1289fab9bf110bcf3144cb8ae850/yp/p_0_960183/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx516619275_qu128_s4043407878.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"url": "http://fsdg360.tx.kugou.com/202605251909/3d6e18d7079e6a0feb77a47dc14bb864/v3/5246d7ade6e9854a47093541e7d913d6/yp/p_0_960127/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx276470230_qu128_s1831941621.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://fsdg360.tx.kugou.com/202605241921/f22722932bc0ec674834e2e288a7d7a7/v3/bdef1289fab9bf110bcf3144cb8ae850/yp/p_0_960183/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx516619275_qu128_s4043407878.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"final_url": "http://fsdg360.tx.kugou.com/202605251909/3d6e18d7079e6a0feb77a47dc14bb864/v3/5246d7ade6e9854a47093541e7d913d6/yp/p_0_960127/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx276470230_qu128_s1831941621.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"reason": null
}
},
@@ -2835,14 +2835,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.137,
"init": 0.002,
"home": 1101.932,
"category": 1245.752,
"detail": 216.251,
"player": 218.227,
"url_check": 1125.254,
"total": 3917.18
"module_load": 3.815,
"init": 0.001,
"home": 603.295,
"category": 201.751,
"detail": 198.962,
"player": 208.162,
"url_check": 733.048,
"total": 1950.607
},
"counts": {
"classes": 4,
@@ -2858,11 +2858,11 @@
},
"player": {
"parse": 0,
"url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779621670-32eaf16ade5441d5924eea05394ecc60-0-589e234b6e754a1991e9c863f329c668",
"url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779707345-88e6724108ca41f3bd64ed68e6dd92b2-0-47c796f1fa64511e614cac923bc863d9",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779621670-32eaf16ade5441d5924eea05394ecc60-0-589e234b6e754a1991e9c863f329c668",
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779707345-88e6724108ca41f3bd64ed68e6dd92b2-0-47c796f1fa64511e614cac923bc863d9",
"reason": null
}
},
@@ -2874,14 +2874,14 @@
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 6.543,
"module_load": 6.341,
"init": 0.001,
"home": 0.001,
"category": 1474.473,
"category": 1213.701,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 3149.906
"total": 2359.404
},
"counts": {
"classes": 5,
@@ -2913,14 +2913,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.827,
"module_load": 3.789,
"init": 0.001,
"home": 0.0,
"category": 1058.333,
"detail": 1012.339,
"player": 1000.137,
"url_check": 979.722,
"total": 4055.667
"home": 0.001,
"category": 1231.298,
"detail": 1289.217,
"player": 1232.69,
"url_check": 835.224,
"total": 4593.011
},
"counts": {
"classes": 4,
@@ -2930,17 +2930,17 @@
},
"samples": {
"tid": "1",
"vod_id": "821",
"flag": "茅台资源1",
"play_id": "/vodplay/821-5-1.html"
"vod_id": "240991",
"flag": "高清31",
"play_id": "/vodplay/240991-2-1.html"
},
"player": {
"parse": 0,
"url": "https://vodcnd10.myqqdd.com/20250114/replUa4Y/index.m3u8",
"url": "https://player.yzzyvip-35.com/20260524/7506_4b2ae7d9/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vodcnd10.myqqdd.com/20250114/replUa4Y/index.m3u8",
"final_url": "https://player.yzzyvip-35.com/20260524/7506_4b2ae7d9/index.m3u8",
"reason": null
}
},
@@ -2952,14 +2952,14 @@
"error": "分类列表为空",
"traceback": null,
"timings_ms": {
"module_load": 6.398,
"module_load": 7.096,
"init": 0.001,
"home": 162.329,
"home": 104.485,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 168.978
"total": 111.793
},
"counts": {
"classes": 0,
@@ -2991,14 +2991,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.502,
"module_load": 3.493,
"init": 0.001,
"home": 0.0,
"category": 239.88,
"detail": 273.635,
"player": 0.038,
"url_check": 435.052,
"total": 955.681
"category": 454.904,
"detail": 158.02,
"player": 0.018,
"url_check": 344.53,
"total": 962.23
},
"counts": {
"classes": 6,
@@ -3030,14 +3030,14 @@
"error": "('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 534, in _make_request\n response = conn.getresponse()\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 571, in getresponse\n httplib_response = super().getresponse()\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 1450, in getresponse\n response.begin()\n ~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 336, in begin\n version, status, reason = self._read_status()\n ~~~~~~~~~~~~~~~~~^^\nhttp.client.RemoteDisconnected: Remote end closed connection without response\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 705, in validate_spider_file\n home_result = _run_timed(result[\"timings_ms\"], \"home\", spider.homeContent, clock, False)\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 296, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/黑猫APP.txt\", line 155, in homeContent\n File \"/home/harold/workspace/tvbox-resources/py/黑猫APP.txt\", line 67, in _api_post\n File \"/home/harold/workspace/atv-spiders/py/base/spider.py\", line 152, in post\n rsp = requests.post(url, params=params, data=data, json=json, cookies=cookies, headers=headers, timeout=timeout,\n verify=verify, stream=stream, allow_redirects=allow_redirects)\nrequests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))\n",
"timings_ms": {
"module_load": 6.281,
"module_load": 5.598,
"init": 0.001,
"home": 148.258,
"home": 5013.399,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 157.604
"total": 5021.056
},
"counts": {
"classes": 0,