Files
tvboxzt/spider_validation.json
T
2026-05-21 19:13:21 +08:00

3026 lines
107 KiB
JSON

{
"generated_at": "2026-05-21T19:12:50+08:00",
"max_workers": 16,
"total_duration_ms": 30830.251,
"summary": {
"total": 77,
"success": 63,
"failed": 14,
"success_rate": 0.8182,
"stage_failures": {
"module_load": 0,
"init": 0,
"home": 1,
"category": 4,
"detail": 1,
"player": 1,
"url_check": 0,
"unexpected": 7
}
},
"results": [
{
"spider": "4K指南",
"file": "4K指南.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 150.916,
"init": 0.001,
"home": 0.003,
"category": 1077.294,
"detail": 686.501,
"player": 0.004,
"url_check": 245.09,
"total": 2162.926
},
"counts": {
"classes": 5,
"category_videos": 50,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "zuixin",
"vod_id": "20166",
"flag": "夸克网盘",
"play_id": "push://https://pan.quark.cn/s/444bfa8d1e50"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/444bfa8d1e50",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/444bfa8d1e50",
"reason": null
}
},
{
"spider": "6V磁力",
"file": "6V磁力.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 226.046,
"init": 0.039,
"home": 0.001,
"category": 921.951,
"detail": 775.023,
"player": 0.002,
"url_check": 0.043,
"total": 1926.674
},
"counts": {
"classes": 12,
"category_videos": 18,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "dianshiju/guoju",
"vod_id": "/dianshiju/guoju/28754.html",
"flag": "01-07.1080p.HD国语中字无水印.mkv",
"play_id": "magnet:?xt=urn:btih:179e2e96aecc2ff52e16b81e3b3c1e89a6010b05&dn=%E4%B8%BB%E8%A7%9201-07"
},
"player": {
"parse": 0,
"url": "magnet:?xt=urn:btih:179e2e96aecc2ff52e16b81e3b3c1e89a6010b05&dn=%E4%B8%BB%E8%A7%9201-07",
"valid": true,
"reachable": null,
"status_code": null,
"final_url": "magnet:?xt=urn:btih:179e2e96aecc2ff52e16b81e3b3c1e89a6010b05&dn=%E4%B8%BB%E8%A7%9201-07",
"reason": "非 HTTP 地址,按协议格式通过"
}
},
{
"spider": "AAZ音乐",
"file": "AAZ音乐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 134.93,
"init": 0.001,
"home": 751.17,
"category": 223.45,
"detail": 232.945,
"player": 299.854,
"url_check": 361.117,
"total": 2005.283
},
"counts": {
"classes": 6,
"category_videos": 60,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "new",
"vod_id": "song:e0f3c77fa564632f924f77fc5943ba7e",
"flag": "AAZ音乐",
"play_id": "song:e0f3c77fa564632f924f77fc5943ba7e"
},
"player": {
"parse": 0,
"url": "https://s.5bb3.com/m4a/3374e5b4a4d9d8e8f967976747b5c2ca.m4a",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://car-lv.kuwo.cn/ccb0e3c3788e0aa3ce91f11f1d801ebd/6a0ee8b4/resource/1307392909/trackmedia/C200000W91kQ0efKLA.m4a?from=vip",
"reason": null
}
},
{
"spider": "PPnix",
"file": "PPnix.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 266.263,
"init": 0.0,
"home": 0.001,
"category": 683.057,
"detail": 460.475,
"player": 0.016,
"url_check": 511.038,
"total": 1922.754
},
"counts": {
"classes": 2,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "movie/8190.html",
"flag": "PPnix",
"play_id": "8190|1080P"
},
"player": {
"parse": 0,
"url": "https://www.ppnix.com/info/m3u8/8190/1080P.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.ppnix.com/info/m3u8/8190/1080P.m3u8",
"reason": null
}
},
{
"spider": "QQ音乐",
"file": "QQ音乐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 190.114,
"init": 0.014,
"home": 0.005,
"category": 230.906,
"detail": 230.273,
"player": 555.562,
"url_check": 91.243,
"total": 3409.649
},
"counts": {
"classes": 6,
"category_videos": 44,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "top",
"vod_id": "top:135",
"flag": "QQ音乐",
"play_id": "qqmusic:001SZuO01zTv4Y:666401051|凌绝顶 - 梓渝"
},
"player": {
"parse": 0,
"url": "https://isure.stream.qqmusic.qq.com/M500001SZuO01zTv4Y.mp3?guid=b712fec8a44500980efb6bfc59bcd287&vkey=31F90736BD507B0A12CF3FA021DA87EEC29B57F30B23F677567D29B188A12DEC093D991DB5ED14937831B71937443A27BDC8EA66A1D69BE0__v2b9abc41&uin=&fromtag=119042&src=M500003j9rwW2ZuKVh.mp3&redirect=1",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://isure.stream.qqmusic.qq.com/M500001SZuO01zTv4Y.mp3?guid=b712fec8a44500980efb6bfc59bcd287&vkey=31F90736BD507B0A12CF3FA021DA87EEC29B57F30B23F677567D29B188A12DEC093D991DB5ED14937831B71937443A27BDC8EA66A1D69BE0__v2b9abc41&uin=&fromtag=119042&src=M500003j9rwW2ZuKVh.mp3&redirect=1",
"reason": null
}
},
{
"spider": "YouTube",
"file": "YouTube.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 218.674,
"init": 0.003,
"home": 0.047,
"category": 866.534,
"detail": 2048.673,
"player": 0.004,
"url_check": 994.864,
"total": 4133.466
},
"counts": {
"classes": 29,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "cat_recommend",
"vod_id": "yt:video:E3jcQgR3TNE",
"flag": "YouTube",
"play_id": "yt:video:E3jcQgR3TNE"
},
"player": {
"parse": 0,
"url": "https://www.youtube.com/watch?v=E3jcQgR3TNE",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.youtube.com/watch?v=E3jcQgR3TNE",
"reason": null
}
},
{
"spider": "libvio",
"file": "libvio.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 196.559,
"init": 0.001,
"home": 0.001,
"category": 333.114,
"detail": 244.004,
"player": 0.004,
"url_check": 174.886,
"total": 950.003
},
"counts": {
"classes": 6,
"category_videos": 48,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "index",
"vod_id": "714893349",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/0a02bf0237ac"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/0a02bf0237ac",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/0a02bf0237ac",
"reason": null
}
},
{
"spider": "youknow",
"file": "youknow.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 220.901,
"init": 0.001,
"home": 0.001,
"category": 1966.125,
"detail": 1062.749,
"player": 1606.398,
"url_check": 386.364,
"total": 5245.983
},
"counts": {
"classes": 7,
"category_videos": 225,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "203061",
"flag": "YouKnowTV",
"play_id": "eyJ2b2RfaWQiOiIyMDMwNjEiLCJlcGlzb2RlX2luZGV4IjoxLCJ0aXRsZSI6IuesrDAx6ZuGIiwiY2FuZGlkYXRlcyI6W3sic291cmNlIjoi57q_6LevMSIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDMwNjEtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMiIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDMwNjEtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMTAiLCJzb3VyY2VfaWQiOiIyIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMjAzMDYxLTItMS8ifSx7InNvdXJjZSI6Iue6v-i3rzExIiwic291cmNlX2lkIjoiMiIsImVwaXNvZGVfdXJsIjoiaHR0cHM6Ly93d3cueW91a25vdy50di9wLzIwMzA2MS0yLTEvIn0seyJzb3VyY2UiOiLnur_ot68xOCIsInNvdXJjZV9pZCI6IjMiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDMwNjEtMy0xLyJ9LHsic291cmNlIjoi57q_6LevMTkiLCJzb3VyY2VfaWQiOiIzIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMjAzMDYxLTMtMS8ifV19"
},
"player": {
"parse": 0,
"url": "https://vip.dytt-tvs.com/20260409/15870_86317a32/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cnvod.jimxtc.com/20260409/15870_86317a32/index.m3u8",
"reason": null
}
},
{
"spider": "七味",
"file": "七味.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 221.869,
"init": 0.005,
"home": 0.001,
"category": 897.277,
"detail": 1170.36,
"player": 0.003,
"url_check": 1058.763,
"total": 3356.225
},
"counts": {
"classes": 5,
"category_videos": 42,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "492461",
"flag": "百度1",
"play_id": "https://pan.baidu.com/s/1MZa4NhXR02WdMOXlmINHCA?pwd=Yu66"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1MZa4NhXR02WdMOXlmINHCA?pwd=Yu66",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=MZa4NhXR02WdMOXlmINHCA&pwd=Yu66",
"reason": null
}
},
{
"spider": "不太灵",
"file": "不太灵.txt",
"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 716, 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 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 291, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/不太灵.txt\", line 330, in detailContent\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": 129.217,
"init": 0.001,
"home": 3740.485,
"category": 1348.44,
"detail": 10318.538,
"player": 0.0,
"url_check": 0.0,
"total": 15540.798
},
"counts": {
"classes": 5,
"category_videos": 25,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "1",
"vod_id": "30255246",
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "世纪音乐",
"file": "世纪音乐.txt",
"success": false,
"failed_stage": "detail",
"error": "详情缺少播放源或播放列表",
"traceback": null,
"timings_ms": {
"module_load": 227.189,
"init": 0.001,
"home": 189.542,
"category": 0.011,
"detail": 147.089,
"player": 0.0,
"url_check": 0.0,
"total": 704.674
},
"counts": {
"classes": 5,
"category_videos": 3,
"detail_videos": 1,
"episodes": 0
},
"samples": {
"tid": "rank_list",
"vod_id": "rank:rise",
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "两个BT",
"file": "两个BT.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 229.646,
"init": 0.001,
"home": 0.001,
"category": 587.542,
"detail": 396.493,
"player": 855.551,
"url_check": 474.098,
"total": 2546.254
},
"counts": {
"classes": 14,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "zgjun",
"vod_id": "ch455phy4",
"flag": "两个BT",
"play_id": "eyJwaWQiOiIvcGxheS9jaDQ1NXBoeTQiLCJzaWQiOiJjaDQ1NXBoeTQiLCJuYW1lIjoiMSJ9"
},
"player": {
"parse": 0,
"url": "https://zijieapi.douyinbyte.com/m3u8/78a48dcc0743a001372febd11244eec5.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://zijieapi.douyinbyte.com/m3u8/78a48dcc0743a001372febd11244eec5.m3u8",
"reason": null
}
},
{
"spider": "乌云影视",
"file": "乌云影视.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='wooyun.tv', port=443): Max retries exceeded with url: /movie/media/detail?mediaId=483203 (Caused by ConnectTimeoutError(<HTTPSConnection(host='wooyun.tv', port=443) at 0x73d601c2ca50>, 'Connection to wooyun.tv timed out. (connect timeout=15)'))",
"traceback": "Traceback (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='wooyun.tv', port=443) at 0x73d601c2ca50>, 'Connection to wooyun.tv timed out. (connect timeout=15)')\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/media/detail?mediaId=483203 (Caused by ConnectTimeoutError(<HTTPSConnection(host='wooyun.tv', port=443) at 0x73d601c2ca50>, 'Connection to wooyun.tv timed out. (connect timeout=15)'))\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 716, 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 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 291, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/乌云影视.txt\", line 343, in detailContent\n File \"/home/harold/workspace/tvbox-resources/py/乌云影视.txt\", line 80, in _request_json\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='wooyun.tv', port=443): Max retries exceeded with url: /movie/media/detail?mediaId=483203 (Caused by ConnectTimeoutError(<HTTPSConnection(host='wooyun.tv', port=443) at 0x73d601c2ca50>, 'Connection to wooyun.tv timed out. (connect timeout=15)'))\n",
"timings_ms": {
"module_load": 134.112,
"init": 0.001,
"home": 375.745,
"category": 626.866,
"detail": 15348.833,
"player": 0.0,
"url_check": 0.0,
"total": 16493.29
},
"counts": {
"classes": 7,
"category_videos": 24,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "movie",
"vod_id": "483203",
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "乐兔",
"file": "乐兔.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 230.652,
"init": 0.001,
"home": 0.002,
"category": 406.692,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 1125.495
},
"counts": {
"classes": 5,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "2",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 205.59,
"init": 0.001,
"home": 0.001,
"category": 673.066,
"detail": 541.143,
"player": 0.004,
"url_check": 1452.134,
"total": 2873.202
},
"counts": {
"classes": 4,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "12430",
"flag": "百度#二小",
"play_id": "https://pan.baidu.com/s/1FGG9y2FLgMlWylYevE0DDA?pwd=n5ug"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1FGG9y2FLgMlWylYevE0DDA?pwd=n5ug",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=FGG9y2FLgMlWylYevE0DDA&pwd=n5ug",
"reason": null
}
},
{
"spider": "人人电影",
"file": "人人电影.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 125.116,
"init": 0.001,
"home": 0.001,
"category": 592.735,
"detail": 445.055,
"player": 0.007,
"url_check": 1089.073,
"total": 2253.145
},
"counts": {
"classes": 4,
"category_videos": 10,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "movie/list_2",
"vod_id": "/movie/2019/1114/6538.html",
"flag": "baidu",
"play_id": "https://pan.baidu.com/s/18KYxz0gvuKcHmbO9LPktQA?pwd=5btz"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/18KYxz0gvuKcHmbO9LPktQA?pwd=5btz",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=8KYxz0gvuKcHmbO9LPktQA&pwd=5btz",
"reason": null
}
},
{
"spider": "人人视频",
"file": "人人视频.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.503,
"init": 0.001,
"home": 208.904,
"category": 263.714,
"detail": 258.754,
"player": 449.953,
"url_check": 998.448,
"total": 3405.605
},
"counts": {
"classes": 4,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "MOVIE",
"vod_id": "57571",
"flag": "人人专线",
"play_id": "57571@384815"
},
"player": {
"parse": 0,
"url": "https://qn-302-m-play.bwcgee.cn/206fd8da542071f180914531858c0402/31c411606dd04572b375f184ed0e7c2c-9436db47d2fb72ac09f3f4785c7cd734-ld.mp4?sign=11e2769c580639db0420a2e573c46361&t=6a0f20f5&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=19aed8b2c50e470a84f6e981d91450e8&hevc=false&seasonId=57571",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://2027855665.ahdohpiechei.com:22443/OzwfcER4VzlnIl4iDWQYIyk1VyZaKRQLOz9bOw/206fd8da542071f180914531858c0402/31c411606dd04572b375f184ed0e7c2c-9436db47d2fb72ac09f3f4785c7cd734-ld.mp4?sign=11e2769c580639db0420a2e573c46361&t=6a0f20f5&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=19aed8b2c50e470a84f6e981d91450e8&hevc=false&seasonId=57571&x-sid=0X11AVjpScCcQN&x-redirect=0X11AOzwfcER4VzlnIl4iDWcYIyk1VyZZKRR5IzZEMxI-FnolJ1AiASQfMTg3WydaKRU5&x-lid=0X11Ab5874771ed4e&x-st=0X11Ahash",
"reason": null
}
},
{
"spider": "优酷",
"file": "优酷.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.422,
"init": 0.001,
"home": 0.001,
"category": 322.84,
"detail": 615.347,
"player": 0.002,
"url_check": 252.935,
"total": 1202.086
},
"counts": {
"classes": 6,
"category_videos": 23,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "电视剧",
"vod_id": "show:afcb2d65c6a34b798d77",
"flag": "优酷",
"play_id": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html"
},
"player": {
"parse": 1,
"url": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v.youku.com/v_show/id_XNjUzNDA5NDEwNA==.html",
"reason": null
}
},
{
"spider": "低端影视",
"file": "低端影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.813,
"init": 0.001,
"home": 0.001,
"category": 726.84,
"detail": 998.956,
"player": 0.023,
"url_check": 1020.105,
"total": 10809.777
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "movie",
"vod_id": "movie/the-finest-hours",
"flag": "备胎2号 (1080P)",
"play_id": "https://c1.ddbbffcdn.com/video/nuhaijiuyuan/HD中字/index.m3u8"
},
"player": {
"parse": 0,
"url": "https://c1.ddbbffcdn.com/video/nuhaijiuyuan/HD中字/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://c1.ddbbffcdn.com/video/nuhaijiuyuan/HD%E4%B8%AD%E5%AD%97/index.m3u8",
"reason": null
}
},
{
"spider": "修罗",
"file": "修罗.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.555,
"init": 0.0,
"home": 0.001,
"category": 681.449,
"detail": 1059.225,
"player": 0.013,
"url_check": 0.064,
"total": 7895.358
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "movie",
"vod_id": "dongzuo/26912",
"flag": "磁力合集",
"play_id": "magnet:?xt=urn:btih:0f122b6d43b305783e1f12d0186cd9191608ccd2"
},
"player": {
"parse": 0,
"url": "magnet:?xt=urn:btih:0f122b6d43b305783e1f12d0186cd9191608ccd2",
"valid": true,
"reachable": null,
"status_code": null,
"final_url": "magnet:?xt=urn:btih:0f122b6d43b305783e1f12d0186cd9191608ccd2",
"reason": "非 HTTP 地址,按协议格式通过"
}
},
{
"spider": "凡客TV",
"file": "凡客TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 12.068,
"init": 0.001,
"home": 0.0,
"category": 1013.024,
"detail": 1188.655,
"player": 1858.671,
"url_check": 2891.385,
"total": 6964.775
},
"counts": {
"classes": 8,
"category_videos": 32,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "f3ba7ae26fd85903",
"flag": "高速线路",
"play_id": "{\"movie_id\":\"f3ba7ae26fd85903\",\"link_id\":\"97b555d07d3dbb0e89efa7a47427bc91\",\"line_id\":\"line1\",\"line_name\":\"高速线路\",\"episode_name\":\"1080p\",\"type\":\"switch\",\"page\":\"https://fktv.me/movie/detail/f3ba7ae26fd85903\"}"
},
"player": {
"parse": 0,
"url": "https://fktv.me/ysapi/m3u8/p/ae251054381296305cc07392b3e0d7ca.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fktv.me/ysapi/m3u8/p/ae251054381296305cc07392b3e0d7ca.m3u8",
"reason": null
}
},
{
"spider": "剧圈圈",
"file": "剧圈圈.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.775,
"init": 0.001,
"home": 0.001,
"category": 972.113,
"detail": 690.068,
"player": 2196.981,
"url_check": 662.681,
"total": 4528.431
},
"counts": {
"classes": 5,
"category_videos": 16,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "dianying",
"vod_id": "63097",
"flag": "BF备用",
"play_id": "play/63097-3-1"
},
"player": {
"parse": 1,
"url": "https://www.jqqzx.cc/play/63097-3-1.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.jqqzx.one/play/63097-3-1.html",
"reason": null
}
},
{
"spider": "剧迷",
"file": "剧迷.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.892,
"init": 0.001,
"home": 0.001,
"category": 251.493,
"detail": 452.674,
"player": 430.576,
"url_check": 1150.383,
"total": 2294.137
},
"counts": {
"classes": 6,
"category_videos": 150,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "443094",
"flag": "高清线路 ᴴᴰ",
"play_id": "443094-11-1"
},
"player": {
"parse": 0,
"url": "https://play.phimgood.com/20260511/26651_2f4d94b1/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://play.phimgood.com/20260511/26651_2f4d94b1/index.m3u8",
"reason": null
}
},
{
"spider": "博看听书",
"file": "博看听书.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.97,
"init": 0.001,
"home": 3226.071,
"category": 295.973,
"detail": 815.505,
"player": 0.002,
"url_check": 650.095,
"total": 4995.126
},
"counts": {
"classes": 11,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1319",
"vod_id": "902849",
"flag": "博看听书",
"play_id": "http://audio.bookan.com.cn/video1/audio/20200706001/aache64_133068a2.m4a"
},
"player": {
"parse": 0,
"url": "http://audio.bookan.com.cn/video1/audio/20200706001/aache64_133068a2.m4a",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://audio.bookan.com.cn/video1/audio/20200706001/aache64_133068a2.m4a",
"reason": null
}
},
{
"spider": "双星",
"file": "双星.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 33.895,
"init": 471.284,
"home": 0.003,
"category": 204.777,
"detail": 214.07,
"player": 0.005,
"url_check": 230.779,
"total": 1171.405
},
"counts": {
"classes": 7,
"category_videos": 15,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "ju",
"vod_id": "/ju/10489.html",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/e19b9da31554"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/e19b9da31554",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/e19b9da31554",
"reason": null
}
},
{
"spider": "听书",
"file": "听书.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.915,
"init": 78.53,
"home": 0.001,
"category": 198.54,
"detail": 4737.662,
"player": 305.783,
"url_check": 119.317,
"total": 5444.384
},
"counts": {
"classes": 11,
"category_videos": 10,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "6",
"vod_id": "63",
"flag": "直链",
"play_id": "2926931|||63"
},
"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=e5595d52875dda71fcad5930a419abd1&buy_key=FM&token=6852&timestamp=1779361978&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=e5595d52875dda71fcad5930a419abd1&buy_key=FM&token=6852&timestamp=1779361978&duration=453",
"reason": null
}
},
{
"spider": "听友FM",
"file": "听友FM.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.606,
"init": 0.0,
"home": 401.542,
"category": 309.619,
"detail": 1073.14,
"player": 618.424,
"url_check": 221.895,
"total": 2632.379
},
"counts": {
"classes": 8,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "46",
"vod_id": "9783312385",
"flag": "听友FM",
"play_id": "9783312385|1"
},
"player": {
"parse": 0,
"url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779361975&sign=58cabac4a745ad982581e7daa2c55e38",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779361975&sign=58cabac4a745ad982581e7daa2c55e38",
"reason": null
}
},
{
"spider": "咕咕动漫",
"file": "咕咕动漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.081,
"init": 0.006,
"home": 610.001,
"category": 582.86,
"detail": 605.505,
"player": 1292.83,
"url_check": 292.987,
"total": 3394.418
},
"counts": {
"classes": 3,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "6",
"vod_id": "4993",
"flag": "咕咕新线(国内高速)",
"play_id": "parse_api=a2796a09189261bcaf3cc4542d7c5ac2&url=vC3JvwfizISFocml/iaZMgd1trHAYekCw+0xsYBueVGqQACTAukjD3I2F/niiuEK&token=|木头风纪委员和迷你裙JK的故事|1"
},
"player": {
"parse": 0,
"url": "https://p9-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/dba4cb7929b54de1a195e5b3cc139e3c~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810465976&x-signature=IE0oZE5GoBk0cSUJWDIbRxWcPUc%3D",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://p9-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/dba4cb7929b54de1a195e5b3cc139e3c~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810465976&x-signature=IE0oZE5GoBk0cSUJWDIbRxWcPUc%3D",
"reason": null
}
},
{
"spider": "四万影视",
"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 716, 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 412, 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 291, 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",
"timings_ms": {
"module_load": 3.784,
"init": 0.001,
"home": 0.001,
"category": 10018.07,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10024.609
},
"counts": {
"classes": 5,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "20",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "在线之家",
"file": "在线之家.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.zxzjys.com', port=443): Max retries exceeded with url: /vodshow/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x73d60191a210>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)'))",
"traceback": "Traceback (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 0x73d60191a210>, '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/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x73d60191a210>, '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 716, 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 412, 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 291, 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/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.zxzjys.com', port=443) at 0x73d60191a210>, 'Connection to www.zxzjys.com timed out. (connect timeout=10)'))\n",
"timings_ms": {
"module_load": 5.819,
"init": 0.001,
"home": 0.001,
"category": 10011.81,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10019.18
},
"counts": {
"classes": 6,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "1",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 7.951,
"init": 0.001,
"home": 0.001,
"category": 490.553,
"detail": 399.172,
"player": 0.005,
"url_check": 1359.878,
"total": 2258.014
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "9470",
"flag": "百度#多多",
"play_id": "https://pan.baidu.com/s/1xqKiIv1nSRhHrG2x-v3x8Q?pwd=yyds"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1xqKiIv1nSRhHrG2x-v3x8Q?pwd=yyds",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=xqKiIv1nSRhHrG2x-v3x8Q&pwd=yyds",
"reason": null
}
},
{
"spider": "如意资源",
"file": "如意资源.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.399,
"init": 0.001,
"home": 0.005,
"category": 812.2,
"detail": 389.212,
"player": 0.004,
"url_check": 1835.349,
"total": 3042.413
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "77675",
"flag": "rym3u8",
"play_id": "https://svip.ryiplay18.com/20260520/6588_b9baf3b3/index.m3u8"
},
"player": {
"parse": 0,
"url": "https://svip.ryiplay18.com/20260520/6588_b9baf3b3/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://svip.ryiplay18.com/20260520/6588_b9baf3b3/index.m3u8",
"reason": null
}
},
{
"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 716, 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 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 291, 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",
"timings_ms": {
"module_load": 9.786,
"init": 536.624,
"home": 996.371,
"category": 474.391,
"detail": 463.619,
"player": 0.0,
"url_check": 0.0,
"total": 2481.991
},
"counts": {
"classes": 9,
"category_videos": 20,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "1",
"vod_id": "581873",
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 12.402,
"init": 0.001,
"home": 0.001,
"category": 688.865,
"detail": 763.871,
"player": 959.947,
"url_check": 364.26,
"total": 2789.856
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "86421",
"flag": "JD蓝光(1)",
"play_id": "JD4K@1@JD-3823d951135350f7454bb0f521eaa5a70"
},
"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=SkC7vr8nPCAs6V9GLdN98HLFodc%3D&Expires=1779362058&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=SkC7vr8nPCAs6V9GLdN98HLFodc%3D&Expires=1779362058&x-amz-FSIZE=58373&x-amz-UFID=624471240788981016",
"reason": null
}
},
{
"spider": "微观短剧",
"file": "微观短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.593,
"init": 0.022,
"home": 217.214,
"category": 260.052,
"detail": 301.491,
"player": 0.003,
"url_check": 298.656,
"total": 1082.865
},
"counts": {
"classes": 30,
"category_videos": 30,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "都市",
"vod_id": "110000044555935694",
"flag": "1080P",
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779361976&sign=cf3d1a2309cdfe4eec449dc978843fd3"
},
"player": {
"parse": 0,
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779361976&sign=cf3d1a2309cdfe4eec449dc978843fd3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779361976&sign=cf3d1a2309cdfe4eec449dc978843fd3",
"reason": null
}
},
{
"spider": "新韩剧网",
"file": "新韩剧网.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.151,
"init": 0.0,
"home": 0.0,
"category": 686.945,
"detail": 508.392,
"player": 471.289,
"url_check": 1843.304,
"total": 3517.614
},
"counts": {
"classes": 5,
"category_videos": 16,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "3591",
"flag": "在线云播",
"play_id": "3591_1_1"
},
"player": {
"parse": 0,
"url": "https://cdn.vvvip-plays33.cc/20260224/8726_d6f84c02/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cdn.vvvip-plays33.cc/20260224/8726_d6f84c02/index.m3u8",
"reason": null
}
},
{
"spider": "星星短剧",
"file": "星星短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.066,
"init": 0.001,
"home": 0.001,
"category": 452.795,
"detail": 640.794,
"player": 0.002,
"url_check": 227.352,
"total": 1325.354
},
"counts": {
"classes": 5,
"category_videos": 10,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1287",
"vod_id": "422599939194881@@穿越诡计爱上你@@苏清韵为了给妹妹治病,卖身富豪被卓熙辰所救,答应卓熙辰的契约婚姻。苏清韵受到了爱慕卓熙辰的上官溪玲的疯狂攻击与算计,导致妹妹离世。苏清韵误会记恨卓熙辰因此拿刀伤了他,自己也被判入狱五年。",
"flag": "星星短剧",
"play_id": "https://img.novel.wsljf.xyz/shortPlay-mp4/420424102051841/EvnIm1746774634078/abc6208e-390b-4533-a1a4-b9e5741cc384/540x960/output.m3u8"
},
"player": {
"parse": 0,
"url": "https://img.novel.wsljf.xyz/shortPlay-mp4/420424102051841/EvnIm1746774634078/abc6208e-390b-4533-a1a4-b9e5741cc384/540x960/output.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://img.novel.wsljf.xyz/shortPlay-mp4/420424102051841/EvnIm1746774634078/abc6208e-390b-4533-a1a4-b9e5741cc384/540x960/output.m3u8",
"reason": null
}
},
{
"spider": "木偶",
"file": "木偶.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.381,
"init": 0.001,
"home": 0.001,
"category": 342.638,
"detail": 308.595,
"player": 0.008,
"url_check": 257.751,
"total": 919.847
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "25",
"vod_id": "7959",
"flag": "115#木偶",
"play_id": "https://115cdn.com/s/swfu7lp36dh?password=f4d6"
},
"player": {
"parse": 0,
"url": "https://115cdn.com/s/swfu7lp36dh?password=f4d6",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://115cdn.com/s/swfu7lp36dh?password=f4d6",
"reason": null
}
},
{
"spider": "樱花动漫",
"file": "樱花动漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.454,
"init": 0.001,
"home": 0.0,
"category": 2225.054,
"detail": 1593.095,
"player": 1443.56,
"url_check": 1009.592,
"total": 6277.462
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "guoman",
"vod_id": "18530",
"flag": "高清",
"play_id": "/play/18530-1-1/"
},
"player": {
"parse": 0,
"url": "https://vip.ffzy-plays.com/20260211/50403_026573d4/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vip.ffzy-plays.com/20260211/50403_026573d4/index.m3u8",
"reason": null
}
},
{
"spider": "橘子TV",
"file": "橘子TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.756,
"init": 338.976,
"home": 393.753,
"category": 385.876,
"detail": 473.901,
"player": 1563.103,
"url_check": 1034.085,
"total": 4194.022
},
"counts": {
"classes": 8,
"category_videos": 18,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "50",
"vod_id": "399092",
"flag": "一起看APP",
"play_id": "25430680"
},
"player": {
"parse": 0,
"url": "https://usaydd.5gwcft9h.com/m3u87/share/7434749/7628489/20260514/154832/1080/index.m3u8?sign=9241927f6fafcaf44eb7330383628fe3&t=1779361980",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://usaydd.5gwcft9h.com/m3u87/share/7434749/7628489/20260514/154832/1080/index.m3u8?sign=9241927f6fafcaf44eb7330383628fe3&t=1779361980",
"reason": null
}
},
{
"spider": "欧歌",
"file": "欧歌.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.812,
"init": 0.001,
"home": 0.0,
"category": 285.277,
"detail": 392.186,
"player": 0.006,
"url_check": 1092.882,
"total": 1778.612
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "30078",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/1kbV2djHyOxiEBAL7Chv0ng?pwd=8888"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1kbV2djHyOxiEBAL7Chv0ng?pwd=8888",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=kbV2djHyOxiEBAL7Chv0ng&pwd=8888",
"reason": null
}
},
{
"spider": "沐辞4K",
"file": "沐辞4K.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.179,
"init": 142.876,
"home": 190.429,
"category": 143.795,
"detail": 130.741,
"player": 108.816,
"url_check": 153.687,
"total": 881.012
},
"counts": {
"classes": 7,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "399728",
"flag": "🔥蓝光🔥",
"play_id": "YYNB-ed6d8c98e2fdb332f780e0d95dc4b49e@@@YYNB"
},
"player": {
"parse": 0,
"url": "https://fffan.wki8.com/hls/bf2c25759a917f71dcb8d0a625e31da8.m3u8?token=e44c21021df7fceacc70e10039df4ccc&time=1779361978&YYNB.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fffan.wki8.com/hls/bf2c25759a917f71dcb8d0a625e31da8.m3u8?token=e44c21021df7fceacc70e10039df4ccc&time=1779361978&YYNB.m3u8",
"reason": null
}
},
{
"spider": "河马短剧",
"file": "河马短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.911,
"init": 0.0,
"home": 361.813,
"category": 395.415,
"detail": 1179.821,
"player": 0.023,
"url_check": 217.039,
"total": 2159.749
},
"counts": {
"classes": 10,
"category_videos": 10,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "462",
"vod_id": "41000194161",
"flag": "河马剧场",
"play_id": "https://dzzt-video.cbread.cn/3cef3fba93e64003b61b09c860a1f764/6a102920/90/1x6/16x1/161x4/16149100014/612735109_1/612735109.720p.narrowv3.mp4"
},
"player": {
"parse": 0,
"url": "https://dzzt-video.cbread.cn/3cef3fba93e64003b61b09c860a1f764/6a102920/90/1x6/16x1/161x4/16149100014/612735109_1/612735109.720p.narrowv3.mp4",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://dzzt-video.cbread.cn/3cef3fba93e64003b61b09c860a1f764/6a102920/90/1x6/16x1/161x4/16149100014/612735109_1/612735109.720p.narrowv3.mp4",
"reason": null
}
},
{
"spider": "清沅4K",
"file": "清沅4K.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.257,
"init": 263.084,
"home": 626.157,
"category": 320.681,
"detail": 337.174,
"player": 768.342,
"url_check": 50.081,
"total": 2373.413
},
"counts": {
"classes": 7,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "54508",
"flag": "qq",
"play_id": "https://v.qq.com/x/cover/ji5c0mbrafu7011/h0032goqc0j.html@@@qq"
},
"player": {
"parse": 0,
"url": "https://apd-vlive.apdcdn.tc.qq.com/defaultts.tc.qq.com/B_3k--xdVBUHYl1q0K2jODe2jj8AB_RsP4ZRdhE1Hvktx2sItpqJPHphPP8Ax8sOmc-v7DZAkOOOXcNpIiFr4g2WtuU0swTcK0OOtFFjyaIOO5GQ1aFCdmJutUC-LOfqJ7QWhMlwWkFLEsqXwgdTXrXg/svp_50112/hbYYSGfbVf1irCpg9sYkty__afmrLfLB6soo0tkFkZV2TizCt3VZ5I6Xa4HKpODqAzpyReq8XBbeIo8vf0XUjcE_Xc0s9f_CVi6WKQOlA8NdRWXaXlfiFEGliO5heHx2f0DTRdMF5fFDH7oCf_bG9dYzZ_E_vzbOJ0sR7KQY52m8OBlbjbowyD1GIT01VZE_j94NOUA8cnY/gzc_1000102_0b53giacaaaaumaffubthzrmamwdea7aajca.f323002.ts.m3u8?ver=4",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://apd-vlive.apdcdn.tc.qq.com/defaultts.tc.qq.com/B_3k--xdVBUHYl1q0K2jODe2jj8AB_RsP4ZRdhE1Hvktx2sItpqJPHphPP8Ax8sOmc-v7DZAkOOOXcNpIiFr4g2WtuU0swTcK0OOtFFjyaIOO5GQ1aFCdmJutUC-LOfqJ7QWhMlwWkFLEsqXwgdTXrXg/svp_50112/hbYYSGfbVf1irCpg9sYkty__afmrLfLB6soo0tkFkZV2TizCt3VZ5I6Xa4HKpODqAzpyReq8XBbeIo8vf0XUjcE_Xc0s9f_CVi6WKQOlA8NdRWXaXlfiFEGliO5heHx2f0DTRdMF5fFDH7oCf_bG9dYzZ_E_vzbOJ0sR7KQY52m8OBlbjbowyD1GIT01VZE_j94NOUA8cnY/gzc_1000102_0b53giacaaaaumaffubthzrmamwdea7aajca.f323002.ts.m3u8?ver=4",
"reason": null
}
},
{
"spider": "滴答影视",
"file": "滴答影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.53,
"init": 0.001,
"home": 0.001,
"category": 232.344,
"detail": 241.511,
"player": 0.003,
"url_check": 1243.249,
"total": 1723.413
},
"counts": {
"classes": 5,
"category_videos": 48,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "3052",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/1IpynPB3crD7Q1CfCvSkQIw?pwd=jx4t"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1IpynPB3crD7Q1CfCvSkQIw?pwd=jx4t",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=IpynPB3crD7Q1CfCvSkQIw&pwd=jx4t",
"reason": null
}
},
{
"spider": "潮流APP",
"file": "潮流APP.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.098,
"init": 0.005,
"home": 128.351,
"category": 126.26,
"detail": 209.588,
"player": 290.215,
"url_check": 125.544,
"total": 887.478
},
"counts": {
"classes": 10,
"category_videos": 12,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "10",
"vod_id": "75722",
"flag": "线路二 (点击换线)",
"play_id": "75722@@0@@0"
},
"player": {
"parse": 0,
"url": "http://beyond8888888.ucyy.cn/2026-05-21/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779361217-0-0-c4d94f2d26252301ff03011e8c6d6b8c",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://beyond8888888.ucyy.cn/2026-05-21/125_78402_NBY-e84585334a25c5b49078dfac81549a0b.m3u8?ts=1779361217-0-0-c4d94f2d26252301ff03011e8c6d6b8c",
"reason": null
}
},
{
"spider": "爱奇艺",
"file": "爱奇艺.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.754,
"init": 0.018,
"home": 3307.013,
"category": 1005.756,
"detail": 249.012,
"player": 0.005,
"url_check": 249.646,
"total": 4824.653
},
"counts": {
"classes": 11,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "pcw:1",
"vod_id": "pcw:1$6003108394876300",
"flag": "爱奇艺",
"play_id": "http://www.iqiyi.com/v_1mmd1991kgw.html"
},
"player": {
"parse": 1,
"url": "http://www.iqiyi.com/v_1mmd1991kgw.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.iqiyi.com/v_1mmd1991kgw.html",
"reason": null
}
},
{
"spider": "独播库",
"file": "独播库.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.238,
"init": 0.001,
"home": 0.0,
"category": 508.876,
"detail": 368.115,
"player": 344.037,
"url_check": 254.625,
"total": 1480.4
},
"counts": {
"classes": 6,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "143343",
"flag": "独播库",
"play_id": "143343-1-1"
},
"player": {
"parse": 0,
"url": "https://vid.dbokutv.com/20260331/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBtHsRsGlR7XgBMPaUNXnBJ0nBJ0pCK95GJ0uH2vjS34/chunklist.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vid.dbokutv.com/20260331/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBtHsRsGlR7XgBMPaUNXnBJ0nBJ0pCK95GJ0uH2vjS34/chunklist.m3u8",
"reason": null
}
},
{
"spider": "猫猫4K",
"file": "猫猫4K.txt",
"success": false,
"failed_stage": "player",
"error": "playerContent 未返回播放地址",
"traceback": null,
"timings_ms": {
"module_load": 7.127,
"init": 392.95,
"home": 643.021,
"category": 1044.822,
"detail": 274.907,
"player": 1211.273,
"url_check": 0.0,
"total": 5921.464
},
"counts": {
"classes": 5,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "842",
"flag": "火猫极速Q",
"play_id": "https://v.qq.com/x/cover/mzc0020027s08l1/g41011u2sng.html@@@qq"
},
"player": {
"parse": 0,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "玩偶哥哥",
"file": "玩偶哥哥.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 6.605,
"init": 0.001,
"home": 0.001,
"category": 272.85,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 684.537
},
"counts": {
"classes": 8,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "2",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
{
"spider": "玩偶聚合",
"file": "玩偶聚合.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='wogg.xxooo.cf', port=443): Max retries exceeded with url: /vodshow/44--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='wogg.xxooo.cf', port=443) at 0x73d60182e5d0>, 'Connection to wogg.xxooo.cf timed out. (connect timeout=10)'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 716, 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 412, 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 291, 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: HTTPSConnectionPool(host='wogg.xxooo.cf', port=443): Max retries exceeded with url: /vodshow/44--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='wogg.xxooo.cf', port=443) at 0x73d60182e5d0>, 'Connection to wogg.xxooo.cf timed out. (connect timeout=10)'))\n",
"timings_ms": {
"module_load": 48.601,
"init": 0.001,
"home": 2.491,
"category": 10231.047,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10283.59
},
"counts": {
"classes": 10,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "site_wanou",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 4.447,
"init": 0.001,
"home": 0.014,
"category": 450.87,
"detail": 915.001,
"player": 456.623,
"url_check": 131.102,
"total": 1959.509
},
"counts": {
"classes": 5,
"category_videos": 30,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "128782",
"flag": "1080",
"play_id": "vod_d_id=128782&vurl_id=3323715&domain_type=8&resolution=1080&type=play"
},
"player": {
"parse": 0,
"url": "https://vd.hxcztech.com/effe49f9d75b9a54a8078948df9e99ab/20260521191301/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/effe49f9d75b9a54a8078948df9e99ab/20260521191301/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"reason": null
}
},
{
"spider": "百度短剧",
"file": "百度短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.227,
"init": 0.001,
"home": 2072.903,
"category": 270.834,
"detail": 635.702,
"player": 279.768,
"url_check": 85.426,
"total": 3348.266
},
"counts": {
"classes": 29,
"category_videos": 9,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "3",
"vod_id": "10284595040762396431",
"flag": "百度短剧",
"play_id": "4723147730512611191|||10284595040762396431"
},
"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",
"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",
"reason": null
}
},
{
"spider": "盘Ta",
"file": "盘Ta.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.323,
"init": 0.001,
"home": 312.282,
"category": 305.164,
"detail": 332.613,
"player": 0.026,
"url_check": 197.015,
"total": 1151.974
},
"counts": {
"classes": 8,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "?tagId=39765285016165",
"vod_id": "264430",
"flag": "移动",
"play_id": "https://yun.139.com/shareweb/%23/w/i/2sUfBKpu5QBqz"
},
"player": {
"parse": 0,
"url": "https://yun.139.com/shareweb/#/w/i/2sUfBKpu5QBqz",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://yun.139.com/shareweb/#/w/i/2sUfBKpu5QBqz",
"reason": null
}
},
{
"spider": "盘聚",
"file": "盘聚.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.421,
"init": 0.0,
"home": 0.001,
"category": 296.302,
"detail": 281.955,
"player": 221.582,
"url_check": 1531.902,
"total": 2337.672
},
"counts": {
"classes": 4,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"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】更新于 ✅ 今天"
},
"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",
"reason": null
}
},
{
"spider": "盘链",
"file": "盘链.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.57,
"init": 0.023,
"home": 0.001,
"category": 1575.818,
"detail": 390.594,
"player": 0.003,
"url_check": 1192.469,
"total": 3167.319
},
"counts": {
"classes": 5,
"category_videos": 30,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "0",
"vod_id": "75716",
"flag": "百度",
"play_id": "push://https://pan.baidu.com/s/1rbhXV3rLNKd1wVta_hMYnw?pwd=8888"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1rbhXV3rLNKd1wVta_hMYnw?pwd=8888",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=rbhXV3rLNKd1wVta_hMYnw&pwd=8888",
"reason": null
}
},
{
"spider": "短剧优选",
"file": "短剧优选.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 23.612,
"init": 660.732,
"home": 0.121,
"category": 470.15,
"detail": 388.959,
"player": 0.002,
"url_check": 103.46,
"total": 1647.894
},
"counts": {
"classes": 11,
"category_videos": 75,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "七猫",
"vod_id": "七猫@24333",
"flag": "七猫短剧",
"play_id": "https://cdn-vod-playlet.wtzw.com/asset/b936eac78f199fd865afbe3c5b707e7f/play_multi_video/6f7310c287644b7c813ab8e2eb7a4a0c/f1223068052dd7f1bc88718af4b2c0e4.m3u8"
},
"player": {
"parse": 0,
"url": "https://cdn-vod-playlet.wtzw.com/asset/b936eac78f199fd865afbe3c5b707e7f/play_multi_video/6f7310c287644b7c813ab8e2eb7a4a0c/f1223068052dd7f1bc88718af4b2c0e4.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cdn-vod-playlet.wtzw.com/asset/b936eac78f199fd865afbe3c5b707e7f/play_multi_video/6f7310c287644b7c813ab8e2eb7a4a0c/f1223068052dd7f1bc88718af4b2c0e4.m3u8",
"reason": null
}
},
{
"spider": "短剧网",
"file": "短剧网.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.537,
"init": 0.0,
"home": 0.001,
"category": 369.363,
"detail": 270.117,
"player": 0.006,
"url_check": 220.657,
"total": 864.222
},
"counts": {
"classes": 2,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "https://sm3.cc/?id=51627",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/aa9341e32c89"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/aa9341e32c89",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/aa9341e32c89",
"reason": null
}
},
{
"spider": "糯米",
"file": "糯米.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.263,
"init": 0.0,
"home": 579.192,
"category": 813.787,
"detail": 197.124,
"player": 387.376,
"url_check": 385.86,
"total": 2370.326
},
"counts": {
"classes": 7,
"category_videos": 81,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "/vod-type-id-1-pg-1.html",
"vod_id": "90063",
"flag": "uvw",
"play_id": "/vod-play-id-90063-src-1-num-1.html"
},
"player": {
"parse": 0,
"url": "https://vip.123pan.cn/1853039965/dy/东北往事极恶不赦.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vip.123pan.cn/1853039965/dy/%E4%B8%9C%E5%8C%97%E5%BE%80%E4%BA%8B%E6%9E%81%E6%81%B6%E4%B8%8D%E8%B5%A6.m3u8",
"reason": null
}
},
{
"spider": "网易云音乐",
"file": "网易云音乐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.593,
"init": 0.001,
"home": 444.705,
"category": 436.076,
"detail": 0.011,
"player": 1193.887,
"url_check": 62.595,
"total": 2142.534
},
"counts": {
"classes": 62,
"category_videos": 100,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "/discover/toplist?id=19723756",
"vod_id": "3382908505@玻璃@Gareth.T👉MV",
"flag": "网易云音乐",
"play_id": "3382908505"
},
"player": {
"parse": 0,
"url": "https://vodkgeyttp8.vod.126.net/cloudmusic/97b8/core/049a/1cfe51550208f56600ac733af86ae87c.mp4?wsSecret=dc1309c04ad53d9b1f53da7af57a27cc&wsTime=1779361984",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vodkgeyttp8.vod.126.net/cloudmusic/97b8/core/049a/1cfe51550208f56600ac733af86ae87c.mp4?wsSecret=dc1309c04ad53d9b1f53da7af57a27cc&wsTime=1779361984",
"reason": null
}
},
{
"spider": "耐视点播",
"file": "耐视点播.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 8.036,
"init": 0.001,
"home": 0.001,
"category": 1578.112,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 3260.605
},
"counts": {
"classes": 6,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "2",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 5.688,
"init": 0.001,
"home": 1176.318,
"category": 253.905,
"detail": 1232.126,
"player": 0.002,
"url_check": 250.009,
"total": 2924.13
},
"counts": {
"classes": 7,
"category_videos": 12,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "choice",
"vod_id": "choice$mzc002009g0nh88",
"flag": "腾讯视频",
"play_id": "https://v.qq.com/x/cover/mzc002009g0nh88/w4102d4f4ur.html"
},
"player": {
"parse": 1,
"url": "https://v.qq.com/x/cover/mzc002009g0nh88/w4102d4f4ur.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v.qq.com/x/cover/mzc002009g0nh88/w4102d4f4ur.html",
"reason": null
}
},
{
"spider": "至臻",
"file": "至臻.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.728,
"init": 0.001,
"home": 0.001,
"category": 339.897,
"detail": 335.727,
"player": 0.004,
"url_check": 1020.349,
"total": 1706.088
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "20480",
"flag": "百度#至臻",
"play_id": "https://pan.baidu.com/s/1veZLeaYWTo6tOKTfrxHsmA?pwd=a86k"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1veZLeaYWTo6tOKTfrxHsmA?pwd=a86k",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=veZLeaYWTo6tOKTfrxHsmA&pwd=a86k",
"reason": null
}
},
{
"spider": "茶杯狐",
"file": "茶杯狐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.009,
"init": 0.0,
"home": 2160.754,
"category": 1011.203,
"detail": 813.541,
"player": 1371.865,
"url_check": 873.436,
"total": 6238.493
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "detail/video/121144",
"flag": "FF有广2",
"play_id": "play/121144-1-1"
},
"player": {
"parse": 0,
"url": "https://vip.ffzy-plays.com/20260521/53826_b70b811e/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vip.ffzy-plays.com/20260521/53826_b70b811e/index.m3u8",
"reason": null
}
},
{
"spider": "虎斑",
"file": "虎斑.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.242,
"init": 0.001,
"home": 0.001,
"category": 5325.372,
"detail": 6149.097,
"player": 0.009,
"url_check": 1036.477,
"total": 12520.703
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "457915",
"flag": "百度#虎斑",
"play_id": "https://pan.baidu.com/s/12eLedCSBjbN4lgbt5vbBqQ?pwd=xhe3"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/12eLedCSBjbN4lgbt5vbBqQ?pwd=xhe3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=2eLedCSBjbN4lgbt5vbBqQ&pwd=xhe3",
"reason": null
}
},
{
"spider": "蜡笔",
"file": "蜡笔.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.303,
"init": 0.001,
"home": 0.001,
"category": 682.91,
"detail": 531.96,
"player": 0.004,
"url_check": 1775.366,
"total": 2999.94
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "29",
"vod_id": "9231",
"flag": "百度#蜡笔",
"play_id": "https://pan.baidu.com/s/1LZC9v0B6ETfpQWooAqqxJA?pwd=jcx5"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1LZC9v0B6ETfpQWooAqqxJA?pwd=jcx5",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=LZC9v0B6ETfpQWooAqqxJA&pwd=jcx5",
"reason": null
}
},
{
"spider": "袋鼠影视",
"file": "袋鼠影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.091,
"init": 0.0,
"home": 0.0,
"category": 855.104,
"detail": 215.278,
"player": 230.493,
"url_check": 1029.7,
"total": 2337.359
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "414946",
"flag": "蓝光专线4",
"play_id": "play/414946-1-0"
},
"player": {
"parse": 0,
"url": "https://play.phimgood.com/20260520/27061_3dc91c93/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://play.phimgood.com/20260520/27061_3dc91c93/index.m3u8",
"reason": null
}
},
{
"spider": "视界",
"file": "视界.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 16.321,
"init": 0.001,
"home": 390.485,
"category": 241.776,
"detail": 273.469,
"player": 703.47,
"url_check": 146.956,
"total": 1773.069
},
"counts": {
"classes": 6,
"category_videos": 30,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "20",
"vod_id": "134893",
"flag": "2K源①",
"play_id": "parse_api=4fd521eae0c48923af390209e31299c2&url=0ThrJ1LedewYr5DBlrHWzZq2L1A7kh9B1oSCw/ntU9OCrP6F1EzJButm6jU1WN5BGwn0ISJOY3nwmEnqfSR+Rg==&token=33c978efa26ec828cc64b2e5835e49c4|主角|1"
},
"player": {
"parse": 0,
"url": "https://fffan.wki8.com/hls/91c8229475704c93b90ccc2ef29f08ee.m3u8?token=d050b4ed3ee74b8e00ad833fe40cedee&time=1779361985&YYNB.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fffan.wki8.com/hls/91c8229475704c93b90ccc2ef29f08ee.m3u8?token=d050b4ed3ee74b8e00ad833fe40cedee&time=1779361985&YYNB.m3u8",
"reason": null
}
},
{
"spider": "路漫漫",
"file": "路漫漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.511,
"init": 0.001,
"home": 0.001,
"category": 927.073,
"detail": 702.135,
"player": 4573.948,
"url_check": 248.821,
"total": 8344.164
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "6",
"vod_id": "detail/8010.html",
"flag": "dev云播",
"play_id": "play/8010_2_1.html"
},
"player": {
"parse": 0,
"url": "https://v16.toutiao50.com/7803f8ec11cb1d01680379f807e306f9/6a103fb2/video/tos/alisg/tos-alisg-ve-0051c001-sg/oEZIAIbobSfQTA7eY46sfdFSbiZGGCL9gnVDWY/",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v16.toutiao50.com/7803f8ec11cb1d01680379f807e306f9/6a103fb2/video/tos/alisg/tos-alisg-ve-0051c001-sg/oEZIAIbobSfQTA7eY46sfdFSbiZGGCL9gnVDWY/",
"reason": null
}
},
{
"spider": "酷我听书",
"file": "酷我听书.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.736,
"init": 0.001,
"home": 397.421,
"category": 98.846,
"detail": 3732.663,
"player": 162.932,
"url_check": 43.449,
"total": 4444.463
},
"counts": {
"classes": 4,
"category_videos": 21,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "2",
"vod_id": "13492273",
"flag": "酷我听书",
"play_id": "free|94448942"
},
"player": {
"parse": 0,
"url": "http://car-lv.kuwo.cn/e98383a32acedba6ff97d3ebc06e2fbb/6a0ee8c4/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/e98383a32acedba6ff97d3ebc06e2fbb/6a0ee8c4/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
}
},
{
"spider": "酷狗音乐",
"file": "酷狗音乐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 15.062,
"init": 513.681,
"home": 301.86,
"category": 371.49,
"detail": 312.049,
"player": 329.401,
"url_check": 64.702,
"total": 1909.432
},
"counts": {
"classes": 12,
"category_videos": 15,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "recommend",
"vod_id": "567754623",
"flag": "酷狗音乐",
"play_id": "567754623"
},
"player": {
"parse": 0,
"url": "http://fsdg360.tx.kugou.com/202605211913/73ddbe4b660299356fe22a14295a745c/v3/73b9713d5256d093756124102938de1b/yp/p_0_960139/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx567754623_qu128_s1002255785.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://fsdg360.tx.kugou.com/202605211913/73ddbe4b660299356fe22a14295a745c/v3/73b9713d5256d093756124102938de1b/yp/p_0_960139/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx567754623_qu128_s1002255785.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"reason": null
}
},
{
"spider": "金牌",
"file": "金牌.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.686,
"init": 0.0,
"home": 8548.162,
"category": 230.298,
"detail": 238.262,
"player": 322.994,
"url_check": 560.284,
"total": 9904.262
},
"counts": {
"classes": 4,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "143230",
"flag": "金牌线路",
"play_id": "143230@1271963"
},
"player": {
"parse": 0,
"url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779361993-b7462c4969ac42fe965e48324613994c-0-2ae350b505422e6be59865c2dfab33e3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779361993-b7462c4969ac42fe965e48324613994c-0-2ae350b505422e6be59865c2dfab33e3",
"reason": null
}
},
{
"spider": "闪电",
"file": "闪电.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 8.719,
"init": 0.001,
"home": 0.001,
"category": 7378.644,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 17051.946
},
"counts": {
"classes": 5,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "2",
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 30.494,
"init": 0.001,
"home": 0.001,
"category": 1036.626,
"detail": 1046.7,
"player": 1061.333,
"url_check": 216.842,
"total": 3392.633
},
"counts": {
"classes": 4,
"category_videos": 40,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "240700",
"flag": "高清21",
"play_id": "/vodplay/240700-3-1.html"
},
"player": {
"parse": 0,
"url": "https://v10.baofeng10.com/video/erendangdao/97563230f391/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v10.baofeng10.com/video/erendangdao/97563230f391/index.m3u8",
"reason": null
}
},
{
"spider": "魔方APP",
"file": "魔方APP.txt",
"success": false,
"failed_stage": "home",
"error": "分类列表为空",
"traceback": null,
"timings_ms": {
"module_load": 17.596,
"init": 0.001,
"home": 180.908,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 199.01
},
"counts": {
"classes": 0,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": null,
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"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,
"timings_ms": {
"module_load": 3.531,
"init": 0.0,
"home": 0.0,
"category": 259.164,
"detail": 268.69,
"player": 0.027,
"url_check": 540.193,
"total": 1072.261
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "171427",
"flag": "LZ源",
"play_id": "eyJ1cmwiOiJodHRwczovL3YubHpjZG4yNy5jb20vMjAyNTA3MzEvNjc5XzUwYTJiMDQ3L2luZGV4Lm0zdTgiLCJwYXJzZV9hcGkiOiJodHRwczovL2RlbC5tdDMyMC5jb20vbHpmZi5waHA_dXJsPSIsImhlYWRlcnMiOnt9LCJ1c2VyX2FnZW50IjoiIn0="
},
"player": {
"parse": 0,
"url": "https://v.lzcdn27.com/20250731/679_50a2b047/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v.lzcdn27.com/20250731/679_50a2b047/index.m3u8",
"reason": null
}
},
{
"spider": "黑猫APP",
"file": "黑猫APP.txt",
"success": false,
"failed_stage": "unexpected",
"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 700, 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 291, 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": 5.879,
"init": 0.002,
"home": 215.469,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 223.138
},
"counts": {
"classes": 0,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": null,
"vod_id": null,
"flag": null,
"play_id": null
},
"player": {
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
}
]
}