Files
tvboxzt/spider_validation.json
T
2026-05-23 09:15:37 +08:00

3065 lines
108 KiB
JSON

{
"generated_at": "2026-05-23T09:14:53+08:00",
"max_workers": 16,
"total_duration_ms": 43497.605,
"summary": {
"total": 78,
"success": 62,
"failed": 16,
"success_rate": 0.7949,
"stage_failures": {
"module_load": 0,
"init": 0,
"home": 1,
"category": 4,
"detail": 1,
"player": 1,
"url_check": 2,
"unexpected": 7
}
},
"results": [
{
"spider": "4KVM",
"file": "4KVM.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 245.593,
"init": 0.001,
"home": 790.259,
"category": 0.015,
"detail": 834.744,
"player": 952.011,
"url_check": 832.614,
"total": 3656.62
},
"counts": {
"classes": 6,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "-1",
"vod_id": "cgzs2ud5p",
"flag": "alists",
"play_id": "2460|cgzs2ud5p"
},
"player": {
"parse": 0,
"url": "https://oss.douyinbit.com/m3u8/2d1b68345f90a09ad1bd583e26870122.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://oss.douyinbit.com/m3u8/2d1b68345f90a09ad1bd583e26870122.m3u8",
"reason": null
}
},
{
"spider": "4K指南",
"file": "4K指南.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 294.605,
"init": 0.001,
"home": 0.002,
"category": 1289.271,
"detail": 786.199,
"player": 0.004,
"url_check": 183.099,
"total": 2574.187
},
"counts": {
"classes": 5,
"category_videos": 50,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "zuixin",
"vod_id": "20176",
"flag": "夸克网盘",
"play_id": "push://https://pan.quark.cn/s/de189c9f53db"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/de189c9f53db",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/de189c9f53db",
"reason": null
}
},
{
"spider": "6V磁力",
"file": "6V磁力.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 306.357,
"init": 0.005,
"home": 0.001,
"category": 951.102,
"detail": 790.899,
"player": 0.007,
"url_check": 0.188,
"total": 2057.275
},
"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": 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/AAZ音乐.txt\", line 220, in homeContent\n File \"/home/harold/workspace/tvbox-resources/py/AAZ音乐.txt\", line 57, in _fetch_html\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.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))\n",
"timings_ms": {
"module_load": 279.216,
"init": 0.001,
"home": 912.502,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 1231.373
},
"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": "PPnix",
"file": "PPnix.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 355.709,
"init": 0.001,
"home": 0.0,
"category": 1038.481,
"detail": 612.82,
"player": 0.011,
"url_check": 619.009,
"total": 2627.405
},
"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": 273.587,
"init": 0.008,
"home": 0.002,
"category": 1034.724,
"detail": 938.157,
"player": 448.532,
"url_check": 221.576,
"total": 2918.688
},
"counts": {
"classes": 6,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "playlist",
"vod_id": "playlist:7782896878",
"flag": "QQ音乐",
"play_id": "qqmusic:001UxzJo2mN9wh:248471068|大眠 - juju"
},
"player": {
"parse": 0,
"url": "https://isure.stream.qqmusic.qq.com/M800004MWEGL4Dz8Y8.mp3?guid=e89b23e63c117dc306291ae80454a0f2&vkey=53A01E9532B3C7D8D2886CB156EFC21CD36C1C9E5544F9DA239C4C273C74BE125DC203F00A8FB826E3673C01C0FEAD3BE599FE2BFC971F14__v2b9ab6f8&uin=896389745&fromtag=119093&redirect=1",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://isure.stream.qqmusic.qq.com/M800004MWEGL4Dz8Y8.mp3?guid=e89b23e63c117dc306291ae80454a0f2&vkey=53A01E9532B3C7D8D2886CB156EFC21CD36C1C9E5544F9DA239C4C273C74BE125DC203F00A8FB826E3673C01C0FEAD3BE599FE2BFC971F14__v2b9ab6f8&uin=896389745&fromtag=119093&redirect=1",
"reason": null
}
},
{
"spider": "YouTube",
"file": "YouTube.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 274.171,
"init": 0.004,
"home": 0.077,
"category": 811.469,
"detail": 3073.101,
"player": 0.009,
"url_check": 1117.325,
"total": 5300.529
},
"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": 242.826,
"init": 0.0,
"home": 0.0,
"category": 744.136,
"detail": 525.703,
"player": 0.005,
"url_check": 190.316,
"total": 1705.008
},
"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/6a2dba67ad05"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/6a2dba67ad05",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/6a2dba67ad05",
"reason": null
}
},
{
"spider": "youknow",
"file": "youknow.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 279.145,
"init": 0.001,
"home": 0.001,
"category": 2076.187,
"detail": 1642.251,
"player": 1155.682,
"url_check": 1850.173,
"total": 7042.54
},
"counts": {
"classes": 7,
"category_videos": 219,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "203584",
"flag": "YouKnowTV",
"play_id": "eyJ2b2RfaWQiOiIyMDM1ODQiLCJlcGlzb2RlX2luZGV4IjoxLCJ0aXRsZSI6IuesrDAx6ZuGIiwiY2FuZGlkYXRlcyI6W3sic291cmNlIjoi57q_6LevMSIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM1ODQtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMiIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM1ODQtMS0xLyJ9LHsic291cmNlIjoi57q_6LevOCIsInNvdXJjZV9pZCI6IjIiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM1ODQtMi0xLyJ9LHsic291cmNlIjoi57q_6LevOSIsInNvdXJjZV9pZCI6IjIiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM1ODQtMi0xLyJ9XX0"
},
"player": {
"parse": 0,
"url": "https://vip.dytt-tvs.com/20260501/18578_80f0fe8b/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cnvod.jimxtc.com/20260501/18578_80f0fe8b/index.m3u8",
"reason": null
}
},
{
"spider": "七味",
"file": "七味.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 273.817,
"init": 0.006,
"home": 0.003,
"category": 1093.341,
"detail": 1351.497,
"player": 0.003,
"url_check": 1128.265,
"total": 3884.607
},
"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": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 315.192,
"init": 0.001,
"home": 1369.784,
"category": 1493.007,
"detail": 904.874,
"player": 0.018,
"url_check": 183.59,
"total": 4269.489
},
"counts": {
"classes": 5,
"category_videos": 25,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "37242440",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/f214cf612e90"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/f214cf612e90",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/f214cf612e90",
"reason": null
}
},
{
"spider": "世纪音乐",
"file": "世纪音乐.txt",
"success": false,
"failed_stage": "detail",
"error": "详情缺少播放源或播放列表",
"traceback": null,
"timings_ms": {
"module_load": 270.577,
"init": 0.001,
"home": 207.984,
"category": 0.02,
"detail": 158.604,
"player": 0.0,
"url_check": 0.0,
"total": 787.629
},
"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": 316.551,
"init": 0.001,
"home": 0.001,
"category": 636.89,
"detail": 494.057,
"player": 2073.744,
"url_check": 801.546,
"total": 4324.471
},
"counts": {
"classes": 14,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "zgjun",
"vod_id": "ch45x6dqu",
"flag": "两个BT",
"play_id": "eyJwaWQiOiIvcGxheS9jaDQ1eDZkcXUiLCJzaWQiOiJjaDQ1eDZkcXUiLCJuYW1lIjoiMSJ9"
},
"player": {
"parse": 0,
"url": "https://zijieapi.douyinbyte.com/m3u8/2f35b121a4926d93934aa0a83b137848.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://zijieapi.douyinbyte.com/m3u8/2f35b121a4926d93934aa0a83b137848.m3u8",
"reason": null
}
},
{
"spider": "乌云影视",
"file": "乌云影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 307.716,
"init": 0.001,
"home": 576.59,
"category": 659.997,
"detail": 1651.417,
"player": 0.043,
"url_check": 2231.226,
"total": 5436.695
},
"counts": {
"classes": 7,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "movie",
"vod_id": "483203",
"flag": "乌云影视",
"play_id": "eyJtZWRpYUlkIjogIjQ4MzIwMyIsICJzZWFzb25ObyI6IDEsICJlcE5vIjogMSwgInZpZGVvSWQiOiAxNTc2MjgzMiwgInBsYXlVcmwiOiAiaHR0cHM6Ly9kMWpkbm1rYzFuNWNuNC5jbG91ZGZyb250Lm5ldC9nZW5fb3ZlcnNlYXMvaHR0cHM6Ly9zMi5iZmxsdmlwLmNvbS92aWRlby95YW54aWF4aW5nL2E2ZWY4NTRjMGMxZi9pbmRleC5tM3U4IiwgIm5hbWUiOiAi56ysMembhiDpq5jmuIUifQ"
},
"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/465545b7520ef976383477623777608235df67c1.m3u8",
"reason": null
}
},
{
"spider": "乐兔",
"file": "乐兔.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.letu.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='www.letu.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 117, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/乐兔.txt\", line 72, in _request_html\nrequests.exceptions.ReadTimeout: HTTPSConnectionPool(host='www.letu.me', port=443): Read timed out. (read timeout=10)\n",
"timings_ms": {
"module_load": 269.452,
"init": 0.001,
"home": 0.001,
"category": 10041.678,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10314.792
},
"counts": {
"classes": 5,
"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": 284.623,
"init": 0.004,
"home": 0.001,
"category": 731.793,
"detail": 496.904,
"player": 0.007,
"url_check": 1055.258,
"total": 2597.899
},
"counts": {
"classes": 4,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "9959",
"flag": "百度#二小",
"play_id": "https://pan.baidu.com/s/14f1iyAGK4zz1k3juDMNxSg?pwd=d77e"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/14f1iyAGK4zz1k3juDMNxSg?pwd=d77e",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=4f1iyAGK4zz1k3juDMNxSg&pwd=d77e",
"reason": null
}
},
{
"spider": "人人电影",
"file": "人人电影.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 18.081,
"init": 0.001,
"home": 0.001,
"category": 1402.029,
"detail": 1109.66,
"player": 0.036,
"url_check": 1250.623,
"total": 3781.186
},
"counts": {
"classes": 4,
"category_videos": 10,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "movie/list_2",
"vod_id": "/movie/2026/0522/59317.html",
"flag": "baidu",
"play_id": "https://pan.baidu.com/s/19XlDJc0vbValTHXWG3yqsg?pwd=53xj"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/19XlDJc0vbValTHXWG3yqsg?pwd=53xj",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=9XlDJc0vbValTHXWG3yqsg&pwd=53xj",
"reason": null
}
},
{
"spider": "人人视频",
"file": "人人视频.txt",
"success": false,
"failed_stage": "url_check",
"error": "HTTP 403",
"traceback": null,
"timings_ms": {
"module_load": 10.211,
"init": 0.001,
"home": 207.677,
"category": 291.728,
"detail": 238.798,
"player": 341.796,
"url_check": 286.357,
"total": 2586.062
},
"counts": {
"classes": 4,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "MOVIE",
"vod_id": "56961",
"flag": "人人专线",
"play_id": "56961@381490"
},
"player": {
"parse": 0,
"url": "https://tfw40grhdgmt1gc41hcttghzdnp3u.ourdvsssvip.com:20443/ws-302.bwcgee.cn/605e22ac542671f1808b5017f0e90402/d4bcd7a2946b4805937d7f53260f0103-0fad76925ba35d93c1e343ddeaeec8b2-ld.mp4?key=14267b7073139051f59a51ac79f9c84c&time=1779513297495&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=ffe85f3cd6d54c55a9013653aee05810&hevc=false&seasonId=56961&wsiphost=ipdbme&wsrid_tag=6a10ff91_PS-CTU-01lP718_9176-28559-s1t1779498897593&x-mamba-business-label=13679&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
"valid": false,
"reachable": false,
"status_code": 403,
"final_url": "https://tfw40grhdgmt1gc41hcttghzdnp3u.ourdvsssvip.com:20443/ws-302.bwcgee.cn/605e22ac542671f1808b5017f0e90402/d4bcd7a2946b4805937d7f53260f0103-0fad76925ba35d93c1e343ddeaeec8b2-ld.mp4?key=14267b7073139051f59a51ac79f9c84c&time=1779513297495&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=ffe85f3cd6d54c55a9013653aee05810&hevc=false&seasonId=56961&wsiphost=ipdbme&wsrid_tag=6a10ff91_PS-CTU-01lP718_9176-28559-s1t1779498897593&x-mamba-business-label=13679&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
"reason": "HTTP 403"
}
},
{
"spider": "优酷",
"file": "优酷.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 19.448,
"init": 0.001,
"home": 0.001,
"category": 302.906,
"detail": 644.916,
"player": 0.005,
"url_check": 287.24,
"total": 1255.552
},
"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": 12.583,
"init": 0.001,
"home": 0.001,
"category": 996.549,
"detail": 1490.329,
"player": 0.012,
"url_check": 702.189,
"total": 3202.227
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "series",
"vod_id": "movie/punisher-one-last-kill",
"flag": "备胎1号 (1080P)",
"play_id": "https://v10.baofeng10.com/video/chengfazhezuihouyiji/ef838eefdd1e/index.m3u8"
},
"player": {
"parse": 0,
"url": "https://v10.baofeng10.com/video/chengfazhezuihouyiji/ef838eefdd1e/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v10.baofeng10.com/video/chengfazhezuihouyiji/ef838eefdd1e/index.m3u8",
"reason": null
}
},
{
"spider": "修罗",
"file": "修罗.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 14.207,
"init": 0.001,
"home": 0.001,
"category": 1757.177,
"detail": 1072.118,
"player": 2340.67,
"url_check": 1768.923,
"total": 6954.931
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "movie",
"vod_id": "dongzuo/26912",
"flag": "修罗直连",
"play_id": "play/26912-0"
},
"player": {
"parse": 0,
"url": "https://v.xlys.ltd.ua/obj/7E484A4750A745366360B049BEB21D6FCEEE74623D9CB0F7E92BF399459D4AAE",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://lf26-imcloud-file-sign.bytetos.com/ad-penny-bucket/oQOPI7CqAgAQ3AtwAENcfAHCdmfDDF3rvDX9dR?x-expires=1779506103&x-signature=PLjmmfXwIA5Rp8pZkbMUru63qXw%3D",
"reason": null
}
},
{
"spider": "凡客TV",
"file": "凡客TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.229,
"init": 0.001,
"home": 0.001,
"category": 1119.093,
"detail": 1320.155,
"player": 2095.732,
"url_check": 2967.829,
"total": 7511.83
},
"counts": {
"classes": 8,
"category_videos": 32,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "b78fa493c7cb604f",
"flag": "高速线路",
"play_id": "{\"movie_id\":\"b78fa493c7cb604f\",\"link_id\":\"79b60d63bb68111716650ea3d5c40714\",\"line_id\":\"line1\",\"line_name\":\"高速线路\",\"episode_name\":\"1080p\",\"type\":\"switch\",\"page\":\"https://fktv.me/movie/detail/b78fa493c7cb604f\"}"
},
"player": {
"parse": 0,
"url": "https://fktv.me/ysapi/m3u8/p/95b999418eef09a772f74abf614c7d16.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fktv.me/ysapi/m3u8/p/95b999418eef09a772f74abf614c7d16.m3u8",
"reason": null
}
},
{
"spider": "剧圈圈",
"file": "剧圈圈.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.361,
"init": 0.001,
"home": 0.001,
"category": 4598.761,
"detail": 6603.627,
"player": 24302.553,
"url_check": 5350.169,
"total": 40865.708
},
"counts": {
"classes": 5,
"category_videos": 16,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "dianying",
"vod_id": "2045",
"flag": "BF备用",
"play_id": "play/2045-2-1"
},
"player": {
"parse": 1,
"url": "https://www.jqqzx.cc/play/2045-2-1.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.jqqzx.one/play/2045-2-1.html",
"reason": null
}
},
{
"spider": "剧迷",
"file": "剧迷.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.516,
"init": 0.0,
"home": 0.0,
"category": 622.956,
"detail": 889.484,
"player": 885.365,
"url_check": 1526.41,
"total": 3930.655
},
"counts": {
"classes": 6,
"category_videos": 149,
"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": 8.986,
"init": 0.001,
"home": 3262.628,
"category": 299.429,
"detail": 840.209,
"player": 0.003,
"url_check": 183.429,
"total": 4595.438
},
"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": 9.821,
"init": 356.255,
"home": 0.012,
"category": 191.319,
"detail": 201.479,
"player": 0.009,
"url_check": 184.526,
"total": 944.62
},
"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/53153ad27a69"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/53153ad27a69",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/53153ad27a69",
"reason": null
}
},
{
"spider": "听书",
"file": "听书.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.488,
"init": 83.591,
"home": 0.001,
"category": 208.679,
"detail": 2761.728,
"player": 386.335,
"url_check": 171.852,
"total": 3624.756
},
"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=a54daac3d1c747181457e31b6153c01e&buy_key=FM&token=3559&timestamp=1779498901&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=a54daac3d1c747181457e31b6153c01e&buy_key=FM&token=3559&timestamp=1779498901&duration=453",
"reason": null
}
},
{
"spider": "听友FM",
"file": "听友FM.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 16.129,
"init": 0.0,
"home": 964.959,
"category": 737.373,
"detail": 1190.99,
"player": 1113.744,
"url_check": 211.349,
"total": 4236.511
},
"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=1779495632&sign=7f669eaa9b139f2e019611c3e9d626c2",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1779495632&sign=7f669eaa9b139f2e019611c3e9d626c2",
"reason": null
}
},
{
"spider": "咕咕动漫",
"file": "咕咕动漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.152,
"init": 0.004,
"home": 715.305,
"category": 613.69,
"detail": 591.637,
"player": 1520.766,
"url_check": 185.696,
"total": 3638.958
},
"counts": {
"classes": 3,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "6",
"vod_id": "5008",
"flag": "咕咕新线(国内高速)",
"play_id": "parse_api=a2796a09189261bcaf3cc4542d7c5ac2&url=kvApklo/7X7wWX6M52G/WoRciWRDPehuZEGi/K/2EPKtTxXbI6VKpVtKugn52YTs&token=|女神“异世界转生想成为什么”我“勇者的肋骨”|1"
},
"player": {
"parse": 0,
"url": "https://p9-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/d67e7b43597942eb8f2a89a1bdbda527~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810602901&x-signature=Q0cRmYFHfunXbGhN%2FG%2BtKjVlJYc%3D",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://p9-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/d67e7b43597942eb8f2a89a1bdbda527~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1810602901&x-signature=Q0cRmYFHfunXbGhN%2FG%2BtKjVlJYc%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": 24.453,
"init": 0.001,
"home": 0.001,
"category": 10019.404,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10047.957
},
"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": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 8.62,
"init": 0.0,
"home": 0.001,
"category": 1050.312,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 2227.028
},
"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": 15.534,
"init": 0.001,
"home": 0.001,
"category": 513.858,
"detail": 402.816,
"player": 0.006,
"url_check": 1332.305,
"total": 2265.114
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "9478",
"flag": "百度#多多",
"play_id": "https://pan.baidu.com/s/149rqImWkO5VGz9f6Et_0Rg?pwd=yyds"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/149rqImWkO5VGz9f6Et_0Rg?pwd=yyds",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=49rqImWkO5VGz9f6Et_0Rg&pwd=yyds",
"reason": null
}
},
{
"spider": "如意资源",
"file": "如意资源.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.926,
"init": 0.001,
"home": 0.006,
"category": 1559.832,
"detail": 798.992,
"player": 0.012,
"url_check": 2047.03,
"total": 4411.155
},
"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": 22.826,
"init": 469.865,
"home": 1004.768,
"category": 490.865,
"detail": 597.497,
"player": 0.0,
"url_check": 0.0,
"total": 2588.717
},
"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": 6.551,
"init": 0.001,
"home": 0.001,
"category": 902.279,
"detail": 722.242,
"player": 1193.537,
"url_check": 350.16,
"total": 3176.245
},
"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=wXyJsm6BctwLW7/pyI/OUTbfZ9g%3D&Expires=1779498969&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=wXyJsm6BctwLW7/pyI/OUTbfZ9g%3D&Expires=1779498969&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.535,
"init": 0.014,
"home": 264.643,
"category": 301.467,
"detail": 1003.747,
"player": 0.009,
"url_check": 149.725,
"total": 1725.172
},
"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=1779498901&sign=186c3bfe3b5315274fde6de68a05ef0f"
},
"player": {
"parse": 0,
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779498901&sign=186c3bfe3b5315274fde6de68a05ef0f",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1779498901&sign=186c3bfe3b5315274fde6de68a05ef0f",
"reason": null
}
},
{
"spider": "新韩剧网",
"file": "新韩剧网.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.433,
"init": 0.001,
"home": 0.001,
"category": 1779.71,
"detail": 710.405,
"player": 710.78,
"url_check": 1862.899,
"total": 5073.632
},
"counts": {
"classes": 5,
"category_videos": 16,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "3613",
"flag": "在线云播",
"play_id": "3613_1_1"
},
"player": {
"parse": 0,
"url": "https://player.yzzyvip-35.com/20260331/3348_333cb763/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://player.yzzyvip-35.com/20260331/3348_333cb763/index.m3u8",
"reason": null
}
},
{
"spider": "星星短剧",
"file": "星星短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.802,
"init": 0.001,
"home": 0.001,
"category": 487.003,
"detail": 688.519,
"player": 0.008,
"url_check": 167.804,
"total": 1348.142
},
"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": 22.107,
"init": 0.001,
"home": 0.001,
"category": 766.108,
"detail": 565.071,
"player": 0.018,
"url_check": 277.243,
"total": 1631.649
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "25",
"vod_id": "7974",
"flag": "115#木偶",
"play_id": "https://115cdn.com/s/swfug7836dh?password=u3c9"
},
"player": {
"parse": 0,
"url": "https://115cdn.com/s/swfug7836dh?password=u3c9",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://115cdn.com/s/swfug7836dh?password=u3c9",
"reason": null
}
},
{
"spider": "樱花动漫",
"file": "樱花动漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.998,
"init": 0.001,
"home": 0.001,
"category": 2021.442,
"detail": 1442.554,
"player": 1483.7,
"url_check": 1161.543,
"total": 6122.214
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "guoman",
"vod_id": "18849",
"flag": "高清",
"play_id": "/play/18849-1-1/"
},
"player": {
"parse": 0,
"url": "https://bfikuncdn.com/20260410/5P3Q2KyO/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://bfikuncdn.com/20260410/5P3Q2KyO/index.m3u8",
"reason": null
}
},
{
"spider": "橘子TV",
"file": "橘子TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.246,
"init": 911.745,
"home": 878.716,
"category": 881.869,
"detail": 1095.02,
"player": 2669.753,
"url_check": 1093.089,
"total": 7537.182
},
"counts": {
"classes": 8,
"category_videos": 18,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "50",
"vod_id": "387153",
"flag": "一起看APP",
"play_id": "24909683"
},
"player": {
"parse": 0,
"url": "https://usaydd.up8r6jjh.com/m3u87/share/6974425/7170239/20260417/114416/1080/index.m3u8?sign=6bdc250b389e20b30cb61db11bc44934&t=1779498907",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://usaydd.up8r6jjh.com/m3u87/share/6974425/7170239/20260417/114416/1080/index.m3u8?sign=6bdc250b389e20b30cb61db11bc44934&t=1779498907",
"reason": null
}
},
{
"spider": "欧歌",
"file": "欧歌.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 17.32,
"init": 0.001,
"home": 0.001,
"category": 593.26,
"detail": 467.349,
"player": 0.006,
"url_check": 1028.787,
"total": 2107.189
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "30094",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/1EgE8sD6jgDrvHzLiFyXnPw?pwd=8888"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1EgE8sD6jgDrvHzLiFyXnPw?pwd=8888",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=EgE8sD6jgDrvHzLiFyXnPw&pwd=8888",
"reason": null
}
},
{
"spider": "沐辞4K",
"file": "沐辞4K.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.076,
"init": 184.982,
"home": 206.217,
"category": 152.627,
"detail": 200.317,
"player": 118.146,
"url_check": 165.127,
"total": 1038.908
},
"counts": {
"classes": 7,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "395659",
"flag": "🔥蓝光🔥",
"play_id": "YYNB-f097563d3900ae04c1297da0a5f05dd8@@@YYNB"
},
"player": {
"parse": 0,
"url": "https://fffan.wki8.com/hls/57f54f661e7e2bace61e0938de7e0abc.m3u8?token=96e8a366842c2941af3930ea760bb533&time=1779498902&YYNB.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fffan.wki8.com/hls/57f54f661e7e2bace61e0938de7e0abc.m3u8?token=96e8a366842c2941af3930ea760bb533&time=1779498902&YYNB.m3u8",
"reason": null
}
},
{
"spider": "河马短剧",
"file": "河马短剧.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 14.831,
"init": 0.001,
"home": 631.792,
"category": 381.979,
"detail": 1279.861,
"player": 0.045,
"url_check": 99.467,
"total": 2409.567
},
"counts": {
"classes": 10,
"category_videos": 10,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "462",
"vod_id": "41000197050",
"flag": "河马剧场",
"play_id": "https://dzzt-video.cbread.cn/4df345902aa3cd20736dfd20d7da6644/6a123170/58/0x5/05x0/050x7/05079100014/612888685_1/612888685.720p.narrowv3.mp4"
},
"player": {
"parse": 0,
"url": "https://dzzt-video.cbread.cn/4df345902aa3cd20736dfd20d7da6644/6a123170/58/0x5/05x0/050x7/05079100014/612888685_1/612888685.720p.narrowv3.mp4",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://dzzt-video.cbread.cn/4df345902aa3cd20736dfd20d7da6644/6a123170/58/0x5/05x0/050x7/05079100014/612888685_1/612888685.720p.narrowv3.mp4",
"reason": null
}
},
{
"spider": "清沅4K",
"file": "清沅4K.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 16.556,
"init": 346.941,
"home": 946.408,
"category": 390.404,
"detail": 397.116,
"player": 3275.331,
"url_check": 327.103,
"total": 5701.331
},
"counts": {
"classes": 7,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "31449",
"flag": "blbl",
"play_id": "https://www.bilibili.com/bangumi/play/ep3890490?theme=movie@@@bilibili"
},
"player": {
"parse": 0,
"url": "https://api.hls.one:4433/Cache/bilibili/03ff70b5eb7f3b7a86ac89c25847ace8.mp4?vkey=643761645641454a56465a54565142554251554e58465a53416738495667494856675253416c45424267494d5651466343416c545144736f6469686a",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://upos-cs-upcdnbda2.bilivideo.com/upgcxcode/58/16/38471601658/38471601658-1-192.mp4?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEuENvNC8aNEVEtEvE9IMvXBvE2ENvNCImNEVEIj0Y2J_aug859IB_&nbs=1&oi=2532504633&mid=592006653&platform=android_bilithings&gen=playurlv3&os=bcache&og=ali&uipk=5&trid=00006496a33cd511485b8a40aad303bfc64p&deadline=1779501499&upsig=e4d35193069d8cbcfbc4638c5728994e&uparams=e,nbs,oi,mid,platform,gen,os,og,uipk,trid,deadline&cdnid=89719&bvc=vod&nettype=0&bw=748019&lrs=100&agrr=1&buvid=&build=2071507&dl=0&f=p_0_0&allo_id=275976-29-1&qn_dyeid=&orderid=0,1",
"reason": null
}
},
{
"spider": "滴答影视",
"file": "滴答影视.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.795,
"init": 0.001,
"home": 0.001,
"category": 678.89,
"detail": 450.642,
"player": 0.004,
"url_check": 1181.354,
"total": 2319.266
},
"counts": {
"classes": 5,
"category_videos": 48,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "3054",
"flag": "百度",
"play_id": "https://pan.baidu.com/s/136sMkxsE9j8t9SbA2VXqfg?pwd=v7hh"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/136sMkxsE9j8t9SbA2VXqfg?pwd=v7hh",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=36sMkxsE9j8t9SbA2VXqfg&pwd=v7hh",
"reason": null
}
},
{
"spider": "潮流APP",
"file": "潮流APP.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 15.932,
"init": 0.003,
"home": 121.42,
"category": 121.427,
"detail": 165.66,
"player": 299.754,
"url_check": 111.175,
"total": 835.975
},
"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://43.248.100.143:6888//api/?key=tviKuMb3MlqCW1I6gE&url=NBY-XMYAES506d105d64032dd243d9eaee78f9c4d46ae43e86c28ffa39239c9f3f1e5354e5ade3635b72dd0f3d736ec207aa64bcf0|84f621bd4bfac2f2072ee495d829a1c8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://43.248.100.143:6888//api/?key=tviKuMb3MlqCW1I6gE&url=NBY-XMYAES506d105d64032dd243d9eaee78f9c4d46ae43e86c28ffa39239c9f3f1e5354e5ade3635b72dd0f3d736ec207aa64bcf0%7C84f621bd4bfac2f2072ee495d829a1c8",
"reason": null
}
},
{
"spider": "爱奇艺",
"file": "爱奇艺.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 14.197,
"init": 0.018,
"home": 3550.581,
"category": 784.501,
"detail": 237.223,
"player": 0.002,
"url_check": 266.142,
"total": 4856.112
},
"counts": {
"classes": 11,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "pcw:1",
"vod_id": "pcw:1$3493933623185100",
"flag": "爱奇艺",
"play_id": "http://www.iqiyi.com/v_xkicyw128w.html"
},
"player": {
"parse": 1,
"url": "http://www.iqiyi.com/v_xkicyw128w.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.iqiyi.com/v_xkicyw128w.html",
"reason": null
}
},
{
"spider": "独播库",
"file": "独播库.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.781,
"init": 0.001,
"home": 0.001,
"category": 417.7,
"detail": 721.718,
"player": 491.159,
"url_check": 903.186,
"total": 2543.654
},
"counts": {
"classes": 6,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "index",
"vod_id": "143545",
"flag": "独播库",
"play_id": "143545-1-1"
},
"player": {
"parse": 0,
"url": "https://vid.dbokutv.com/20260418/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsHcTcyo5xOy6ejR6raQcHwBJ0nBJ0oHJatCpWqCovjS34/chunklist.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://vid.dbokutv.com/20260418/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsHcTcyo5xOy6ejR6raQcHwBJ0nBJ0oHJatCpWqCovjS34/chunklist.m3u8",
"reason": null
}
},
{
"spider": "猫猫4K",
"file": "猫猫4K.txt",
"success": false,
"failed_stage": "player",
"error": "playerContent 未返回播放地址",
"traceback": null,
"timings_ms": {
"module_load": 7.018,
"init": 284.205,
"home": 851.735,
"category": 144.141,
"detail": 197.924,
"player": 466.333,
"url_check": 0.0,
"total": 3858.181
},
"counts": {
"classes": 5,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "4127",
"flag": "火猫极速A",
"play_id": "https://www.iqiyi.com/v_28s2g6gswsc.html@@@qiyi"
},
"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": 5.876,
"init": 0.0,
"home": 0.0,
"category": 431.053,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 759.851
},
"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": "all domains failed",
"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: all domains failed\n",
"timings_ms": {
"module_load": 37.311,
"init": 0.001,
"home": 2.873,
"category": 1138.053,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 1180.642
},
"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": 5.702,
"init": 0.001,
"home": 0.049,
"category": 892.822,
"detail": 1059.81,
"player": 942.795,
"url_check": 108.767,
"total": 3011.589
},
"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/fff597a1dd1f70eee2772020069b5d4d/20260523091506/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/fff597a1dd1f70eee2772020069b5d4d/20260523091506/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": 4.22,
"init": 0.001,
"home": 537.972,
"category": 243.265,
"detail": 562.719,
"player": 237.736,
"url_check": 76.678,
"total": 1663.168
},
"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-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-hna",
"reason": null
}
},
{
"spider": "盘Ta",
"file": "盘Ta.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.473,
"init": 0.001,
"home": 416.456,
"category": 455.558,
"detail": 286.503,
"player": 0.017,
"url_check": 189.946,
"total": 1358.611
},
"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": 10.673,
"init": 0.001,
"home": 0.001,
"category": 556.026,
"detail": 421.997,
"player": 498.987,
"url_check": 1211.153,
"total": 2700.331
},
"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": 18.124,
"init": 0.023,
"home": 0.001,
"category": 2284.468,
"detail": 515.315,
"player": 0.002,
"url_check": 1252.456,
"total": 4070.941
},
"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": 31.258,
"init": 697.18,
"home": 0.395,
"category": 521.21,
"detail": 322.12,
"player": 0.003,
"url_check": 106.547,
"total": 1680.256
},
"counts": {
"classes": 11,
"category_videos": 76,
"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": 26.907,
"init": 0.001,
"home": 0.0,
"category": 628.886,
"detail": 672.278,
"player": 0.013,
"url_check": 175.386,
"total": 1504.64
},
"counts": {
"classes": 2,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "https://sm3.cc/?id=51932",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/7648522a59aa"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/7648522a59aa",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/7648522a59aa",
"reason": null
}
},
{
"spider": "糯米",
"file": "糯米.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.456,
"init": 0.001,
"home": 497.533,
"category": 1787.629,
"detail": 166.19,
"player": 330.329,
"url_check": 293.096,
"total": 3085.421
},
"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": 2.746,
"init": 0.001,
"home": 473.364,
"category": 388.243,
"detail": 0.005,
"player": 1118.363,
"url_check": 945.774,
"total": 2931.532
},
"counts": {
"classes": 62,
"category_videos": 100,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "/discover/toplist?id=19723756",
"vod_id": "502043537@第三人称@冯沁苑(买辣椒也用券)👉MP3",
"flag": "网易云音乐",
"play_id": "502043537"
},
"player": {
"parse": 0,
"url": "https://iot202.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260523094007/e8a52d58b40f3e90de27f62bec2bdb8b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/28481671223/d0d6/0d8b/d9ca/b73e0502440829c8891a251280b4b5d6.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://iot202.music.126.net/Yml6PWlvdCZjaGFubmVsPW5ldGVhc2Umc2NlbmU9YW5kcmNhcg/20260523094007/e8a52d58b40f3e90de27f62bec2bdb8b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/28481671223/d0d6/0d8b/d9ca/b73e0502440829c8891a251280b4b5d6.mp3",
"reason": null
}
},
{
"spider": "耐视点播",
"file": "耐视点播.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 12.144,
"init": 0.001,
"home": 0.001,
"category": 2486.172,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 5150.589
},
"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": 23.485,
"init": 0.001,
"home": 862.505,
"category": 264.986,
"detail": 1771.024,
"player": 0.006,
"url_check": 268.405,
"total": 3191.745
},
"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": 13.752,
"init": 0.001,
"home": 0.001,
"category": 961.574,
"detail": 776.523,
"player": 0.01,
"url_check": 981.15,
"total": 2733.575
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "20483",
"flag": "百度#至臻",
"play_id": "https://pan.baidu.com/s/1BezdJHDf9ivOWQCIcX2FkA?pwd=37ab"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1BezdJHDf9ivOWQCIcX2FkA?pwd=37ab",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=BezdJHDf9ivOWQCIcX2FkA&pwd=37ab",
"reason": null
}
},
{
"spider": "茶杯狐",
"file": "茶杯狐.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.834,
"init": 0.001,
"home": 948.243,
"category": 810.386,
"detail": 548.704,
"player": 1176.133,
"url_check": 1344.897,
"total": 9630.712
},
"counts": {
"classes": 4,
"category_videos": 35,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "detail/video/121168",
"flag": "YZ有广",
"play_id": "play/121168-2-1"
},
"player": {
"parse": 0,
"url": "https://cdn.yzzyvip-29.com/20260522/24099_dc7e93f3/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cdn.yzzyvip-29.com/20260522/24099_dc7e93f3/index.m3u8",
"reason": null
}
},
{
"spider": "虎斑",
"file": "虎斑.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 47.117,
"init": 0.001,
"home": 0.001,
"category": 3203.055,
"detail": 5931.752,
"player": 0.028,
"url_check": 181.42,
"total": 9364.309
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "1",
"vod_id": "456799",
"flag": "夸克#虎斑",
"play_id": "https://pan.quark.cn/s/f9d1def6af3a"
},
"player": {
"parse": 0,
"url": "https://pan.quark.cn/s/f9d1def6af3a",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.quark.cn/s/f9d1def6af3a",
"reason": null
}
},
{
"spider": "蜡笔",
"file": "蜡笔.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 50.298,
"init": 0.001,
"home": 0.001,
"category": 1003.744,
"detail": 652.158,
"player": 0.009,
"url_check": 888.551,
"total": 2595.748
},
"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": 12.182,
"init": 0.001,
"home": 0.001,
"category": 870.76,
"detail": 591.041,
"player": 582.401,
"url_check": 1442.191,
"total": 3499.661
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "1",
"vod_id": "414878",
"flag": "蓝光专线4",
"play_id": "play/414878-0-0"
},
"player": {
"parse": 0,
"url": "https://play.phimgood.com/20260515/26831_01659324/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://play.phimgood.com/20260515/26831_01659324/index.m3u8",
"reason": null
}
},
{
"spider": "视界",
"file": "视界.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.889,
"init": 0.001,
"home": 768.397,
"category": 577.281,
"detail": 600.136,
"player": 864.097,
"url_check": 642.052,
"total": 3463.842
},
"counts": {
"classes": 6,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "20",
"vod_id": "135287",
"flag": "备用源(有广勿信)",
"play_id": "https://svip.ffzyplay.com/?url=https://vip.ffzy-online3.com/20260523/44624_b3d5cd16/index.m3u8|大叔再出招|1"
},
"player": {
"parse": 0,
"url": "https://svip.ffzyplay.com/?url=https://vip.ffzy-online3.com/20260523/44624_b3d5cd16/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://svip.ffzyplay.com/?url=https://vip.ffzy-online3.com/20260523/44624_b3d5cd16/index.m3u8",
"reason": null
}
},
{
"spider": "路漫漫",
"file": "路漫漫.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.9,
"init": 0.001,
"home": 0.001,
"category": 1394.862,
"detail": 689.612,
"player": 1848.539,
"url_check": 676.299,
"total": 4618.91
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "6",
"vod_id": "detail/7992.html",
"flag": "播放节点列表X 聚合线路",
"play_id": "play/7992_1_1.html"
},
"player": {
"parse": 1,
"url": "https://www.lmm85.com/play/7992_1_1.html",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.lmm85.com/play/7992_1_1.html",
"reason": null
}
},
{
"spider": "酷我听书",
"file": "酷我听书.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 10.15,
"init": 0.001,
"home": 403.022,
"category": 125.62,
"detail": 3729.287,
"player": 149.772,
"url_check": 47.143,
"total": 4466.212
},
"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/df4733d1ef1f93da9a2f36de8a3924b4/6a10ffa0/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/df4733d1ef1f93da9a2f36de8a3924b4/6a10ffa0/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": 24.15,
"init": 513.433,
"home": 296.479,
"category": 318.219,
"detail": 359.6,
"player": 348.538,
"url_check": 57.003,
"total": 1918.74
},
"counts": {
"classes": 12,
"category_videos": 15,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "recommend",
"vod_id": "255229251",
"flag": "酷狗音乐",
"play_id": "255229251"
},
"player": {
"parse": 0,
"url": "http://fsdg360.tx.kugou.com/202605230915/addad4490be84ceb10ec61e558a616c7/v3/045a92c05533b7d8787b4426dda131ae/yp/p_0_1910560/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx255229251_qu128_s2332608951.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://fsdg360.tx.kugou.com/202605230915/addad4490be84ceb10ec61e558a616c7/v3/045a92c05533b7d8787b4426dda131ae/yp/p_0_1910560/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx255229251_qu128_s2332608951.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": 17.558,
"init": 0.001,
"home": 929.85,
"category": 266.581,
"detail": 241.94,
"player": 250.835,
"url_check": 577.054,
"total": 2284.912
},
"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=1779498910-6c55bb9207054717b0a561a9242bf776-0-c49aa3c0b922183ad432d384f7010e46",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1779498910-6c55bb9207054717b0a561a9242bf776-0-c49aa3c0b922183ad432d384f7010e46",
"reason": null
}
},
{
"spider": "闪电",
"file": "闪电.txt",
"success": false,
"failed_stage": "category",
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 13.639,
"init": 0.001,
"home": 0.001,
"category": 1072.222,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 2093.624
},
"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": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='feikuai.in', port=443): Max retries exceeded with url: /vodshow/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='feikuai.in', port=443) at 0x74ab60780050>, 'Connection to feikuai.in 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='feikuai.in', port=443) at 0x74ab60780050>, 'Connection to feikuai.in 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='feikuai.in', port=443): Max retries exceeded with url: /vodshow/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='feikuai.in', port=443) at 0x74ab60780050>, 'Connection to feikuai.in 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/飞快TV.txt\", line 206, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/飞快TV.txt\", line 71, in _request_html\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='feikuai.in', port=443): Max retries exceeded with url: /vodshow/1--------1---.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='feikuai.in', port=443) at 0x74ab60780050>, 'Connection to feikuai.in timed out. (connect timeout=10)'))\n",
"timings_ms": {
"module_load": 3.698,
"init": 0.0,
"home": 0.001,
"category": 10013.977,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10025.071
},
"counts": {
"classes": 4,
"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": "魔方APP",
"file": "魔方APP.txt",
"success": false,
"failed_stage": "home",
"error": "分类列表为空",
"traceback": null,
"timings_ms": {
"module_load": 4.87,
"init": 0.001,
"home": 572.594,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 577.695
},
"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": false,
"failed_stage": "url_check",
"error": "HTTP 404",
"traceback": null,
"timings_ms": {
"module_load": 3.777,
"init": 0.001,
"home": 0.001,
"category": 686.448,
"detail": 394.022,
"player": 0.056,
"url_check": 783.681,
"total": 3463.976
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "155698",
"flag": "LZ源",
"play_id": "eyJ1cmwiOiJodHRwczovL3YubHpjZG4yOC5jb20vMjAyNTA5MjMvMjMyNl9hOWJmMjM0YS9pbmRleC5tM3U4IiwicGFyc2VfYXBpIjoiaHR0cHM6Ly9kZWwubXQzMjAuY29tL2x6ZmYucGhwP3VybD0iLCJoZWFkZXJzIjp7fSwidXNlcl9hZ2VudCI6IiJ9"
},
"player": {
"parse": 0,
"url": "https://v.lzcdn28.com/20250923/2326_a9bf234a/index.m3u8",
"valid": false,
"reachable": false,
"status_code": 404,
"final_url": "https://v.lzcdn28.com/20250923/2326_a9bf234a/index.m3u8",
"reason": "HTTP 404"
}
},
{
"spider": "黑猫APP",
"file": "黑猫APP.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPConnectionPool(host='app1-0-0.87333.cc', port=80): Max retries exceeded with url: /api.php/getappapi.index/initV119 (Caused by ConnectTimeoutError(<HTTPConnection(host='app1-0-0.87333.cc', port=80) at 0x74ab6077e140>, 'Connection to app1-0-0.87333.cc 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 493, in _make_request\n conn.request(\n ~~~~~~~~~~~~^\n method,\n ^^^^^^^\n ...<6 lines>...\n enforce_content_length=enforce_content_length,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 500, in request\n self.endheaders()\n ~~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 1353, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 1113, in _send_output\n self.send(msg)\n ~~~~~~~~~^^^^^\nurllib3.exceptions.ConnectTimeoutError: (<HTTPConnection(host='app1-0-0.87333.cc', port=80) at 0x74ab6077e140>, 'Connection to app1-0-0.87333.cc 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: HTTPConnectionPool(host='app1-0-0.87333.cc', port=80): Max retries exceeded with url: /api.php/getappapi.index/initV119 (Caused by ConnectTimeoutError(<HTTPConnection(host='app1-0-0.87333.cc', port=80) at 0x74ab6077e140>, 'Connection to app1-0-0.87333.cc 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 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.ConnectTimeout: HTTPConnectionPool(host='app1-0-0.87333.cc', port=80): Max retries exceeded with url: /api.php/getappapi.index/initV119 (Caused by ConnectTimeoutError(<HTTPConnection(host='app1-0-0.87333.cc', port=80) at 0x74ab6077e140>, 'Connection to app1-0-0.87333.cc timed out. (connect timeout=10)'))\n",
"timings_ms": {
"module_load": 7.272,
"init": 0.001,
"home": 10010.988,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10025.018
},
"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
}
}
]
}