2714 lines
96 KiB
JSON
2714 lines
96 KiB
JSON
{
|
|
"generated_at": "2026-05-12T17:25:06+08:00",
|
|
"max_workers": 16,
|
|
"total_duration_ms": 64859.535,
|
|
"summary": {
|
|
"total": 69,
|
|
"success": 52,
|
|
"failed": 17,
|
|
"success_rate": 0.7536,
|
|
"stage_failures": {
|
|
"module_load": 0,
|
|
"init": 0,
|
|
"home": 1,
|
|
"category": 4,
|
|
"detail": 2,
|
|
"player": 0,
|
|
"url_check": 4,
|
|
"unexpected": 6
|
|
}
|
|
},
|
|
"results": [
|
|
{
|
|
"spider": "4K指南",
|
|
"file": "4K指南.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 117.365,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 3776.056,
|
|
"detail": 2188.199,
|
|
"player": 0.01,
|
|
"url_check": 215.721,
|
|
"total": 6298.498
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 50,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "zuixin",
|
|
"vod_id": "20095",
|
|
"flag": "夸克网盘",
|
|
"play_id": "push://https://pan.quark.cn/s/092d2789d138"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/092d2789d138",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/092d2789d138",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "AAZ音乐",
|
|
"file": "AAZ音乐.txt",
|
|
"success": false,
|
|
"failed_stage": "url_check",
|
|
"error": "HTTP 403",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 117.11,
|
|
"init": 0.001,
|
|
"home": 3492.788,
|
|
"category": 3343.909,
|
|
"detail": 2239.926,
|
|
"player": 2229.325,
|
|
"url_check": 1371.994,
|
|
"total": 22011.07
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 60,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "top",
|
|
"vod_id": "song:2255756c2486474612e29c8b96fbaa4c",
|
|
"flag": "AAZ音乐",
|
|
"play_id": "song:2255756c2486474612e29c8b96fbaa4c"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://s.5bb3.com/m4a/2f2a482106b62b53a9ac06ae0bc42c32.m4a",
|
|
"valid": false,
|
|
"reachable": false,
|
|
"status_code": 403,
|
|
"final_url": "https://er-sycdn.kuwo.cn/556d7d97c4ea21438b8d6e619fe5f349/6a02f208/resource/30106/trackmedia/C200001mfA5V0TRfL7.m4a?from=vip",
|
|
"reason": "HTTP 403"
|
|
}
|
|
},
|
|
{
|
|
"spider": "PPnix",
|
|
"file": "PPnix.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 240.752,
|
|
"init": 0.0,
|
|
"home": 0.0,
|
|
"category": 2320.457,
|
|
"detail": 2253.054,
|
|
"player": 0.011,
|
|
"url_check": 1719.596,
|
|
"total": 6534.97
|
|
},
|
|
"counts": {
|
|
"classes": 2,
|
|
"category_videos": 24,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "movie/8140.html",
|
|
"flag": "PPnix",
|
|
"play_id": "8140|1080P"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://www.ppnix.com/info/m3u8/8140/1080P.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://www.ppnix.com/info/m3u8/8140/1080P.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "QQ音乐",
|
|
"file": "QQ音乐.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 172.537,
|
|
"init": 0.008,
|
|
"home": 0.002,
|
|
"category": 526.979,
|
|
"detail": 660.231,
|
|
"player": 364.023,
|
|
"url_check": 109.029,
|
|
"total": 1834.079
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "playlist",
|
|
"vod_id": "playlist:9271247911",
|
|
"flag": "QQ音乐",
|
|
"play_id": "qqmusic:0014qLXa1JrJ11:618693022|偏向 (摇滚版) - 孟维来"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://isure.stream.qqmusic.qq.com/F0000014qLXa1JrJ11.flac?guid=7e53dca2a27677410f711201fdffc64f&vkey=79A4AF0A194662E2482D1B455B1F2E03FAF23DAFF81D367AD3851D473065FBF1DFA58F4DAD9AAE5F34D0ED6A52B03326EB404DBA427FBDE3__v2b9aadcd&uin=1152921504846230218&fromtag=119114&redirect=1",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://isure.stream.qqmusic.qq.com/F0000014qLXa1JrJ11.flac?guid=7e53dca2a27677410f711201fdffc64f&vkey=79A4AF0A194662E2482D1B455B1F2E03FAF23DAFF81D367AD3851D473065FBF1DFA58F4DAD9AAE5F34D0ED6A52B03326EB404DBA427FBDE3__v2b9aadcd&uin=1152921504846230218&fromtag=119114&redirect=1",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "libvio",
|
|
"file": "libvio.txt",
|
|
"success": false,
|
|
"failed_stage": "category",
|
|
"error": "分类视频列表为空",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 192.556,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 1823.507,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 3889.496
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 0,
|
|
"detail_videos": 0,
|
|
"episodes": 0
|
|
},
|
|
"samples": {
|
|
"tid": "movie",
|
|
"vod_id": null,
|
|
"flag": null,
|
|
"play_id": null
|
|
},
|
|
"player": {
|
|
"parse": null,
|
|
"url": "",
|
|
"valid": false,
|
|
"reachable": null,
|
|
"status_code": null,
|
|
"final_url": "",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "youknow",
|
|
"file": "youknow.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 113.131,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 5436.541,
|
|
"detail": 2969.841,
|
|
"player": 2963.909,
|
|
"url_check": 1843.667,
|
|
"total": 13328.883
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 216,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "index",
|
|
"vod_id": "203668",
|
|
"flag": "YouKnowTV",
|
|
"play_id": "eyJ2b2RfaWQiOiIyMDM2NjgiLCJlcGlzb2RlX2luZGV4IjoxLCJ0aXRsZSI6IuesrDAx6ZuGIiwiY2FuZGlkYXRlcyI6W3sic291cmNlIjoi57q_6LevMSIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM2NjgtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMiIsInNvdXJjZV9pZCI6IjEiLCJlcGlzb2RlX3VybCI6Imh0dHBzOi8vd3d3LnlvdWtub3cudHYvcC8yMDM2NjgtMS0xLyJ9LHsic291cmNlIjoi57q_6LevMjIiLCJzb3VyY2VfaWQiOiIyIiwiZXBpc29kZV91cmwiOiJodHRwczovL3d3dy55b3Vrbm93LnR2L3AvMjAzNjY4LTItMS8ifSx7InNvdXJjZSI6Iue6v-i3rzIzIiwic291cmNlX2lkIjoiMiIsImVwaXNvZGVfdXJsIjoiaHR0cHM6Ly93d3cueW91a25vdy50di9wLzIwMzY2OC0yLTEvIn1dfQ"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://vip.dytt-tvs.com/20260504/18941_6de7c6c7/index.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://cnvod.jimxtc.com/20260504/18941_6de7c6c7/index.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "不太灵",
|
|
"file": "不太灵.txt",
|
|
"success": false,
|
|
"failed_stage": "detail",
|
|
"error": "详情缺少播放源或播放列表",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 118.747,
|
|
"init": 0.0,
|
|
"home": 4172.201,
|
|
"category": 2273.894,
|
|
"detail": 2510.05,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 13265.812
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 25,
|
|
"detail_videos": 1,
|
|
"episodes": 0
|
|
},
|
|
"samples": {
|
|
"tid": "2",
|
|
"vod_id": "36069280",
|
|
"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": 197.018,
|
|
"init": 0.001,
|
|
"home": 198.552,
|
|
"category": 0.004,
|
|
"detail": 131.038,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 657.146
|
|
},
|
|
"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": 178.26,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2200.04,
|
|
"detail": 2087.025,
|
|
"player": 4274.042,
|
|
"url_check": 2313.539,
|
|
"total": 11055.495
|
|
},
|
|
"counts": {
|
|
"classes": 14,
|
|
"category_videos": 24,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "zgjun",
|
|
"vod_id": "/play/ch45apamw",
|
|
"flag": "两个BT",
|
|
"play_id": "eyJwaWQiOiIvcGxheS9jaDQ1YXBhbXciLCJzaWQiOiIvcGxheS9jaDQ1YXBhbXciLCJuYW1lIjoiMSJ9"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://zijieapi.douyinbyte.com/m3u8/3cb3acf52e75d732149a3d473dfa8a8e.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://zijieapi.douyinbyte.com/m3u8/3cb3acf52e75d732149a3d473dfa8a8e.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "乌云影视",
|
|
"file": "乌云影视.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 176.392,
|
|
"init": 0.001,
|
|
"home": 2377.189,
|
|
"category": 2272.003,
|
|
"detail": 5635.745,
|
|
"player": 0.031,
|
|
"url_check": 4009.037,
|
|
"total": 14473.776
|
|
},
|
|
"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/5ab5d472ce40e18cdd5837e2e66a2a88985bcafa.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 644, 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 404, 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 290, 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": 180.814,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 10055.225,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 10239.94
|
|
},
|
|
"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": 202.48,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 3657.506,
|
|
"detail": 1887.749,
|
|
"player": 0.003,
|
|
"url_check": 1146.171,
|
|
"total": 6894.969
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/12361.html",
|
|
"flag": "百度#二小",
|
|
"play_id": "https://pan.baidu.com/s/170zLzoHZ_Cr677FnLppGAA?pwd=4y9j"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/170zLzoHZ_Cr677FnLppGAA?pwd=4y9j",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=70zLzoHZ_Cr677FnLppGAA&pwd=4y9j",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "人人电影",
|
|
"file": "人人电影.txt",
|
|
"success": false,
|
|
"failed_stage": "category",
|
|
"error": "分类视频列表为空",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 198.156,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2148.215,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 6395.048
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 0,
|
|
"detail_videos": 0,
|
|
"episodes": 0
|
|
},
|
|
"samples": {
|
|
"tid": "dianshiju/list_6",
|
|
"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 403",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 125.047,
|
|
"init": 0.001,
|
|
"home": 326.065,
|
|
"category": 268.889,
|
|
"detail": 267.205,
|
|
"player": 358.413,
|
|
"url_check": 280.277,
|
|
"total": 2756.692
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "MOVIE",
|
|
"vod_id": "51705",
|
|
"flag": "人人专线",
|
|
"play_id": "51705@346828"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://tfvt1gr3dymt1ge31hcj3gezdrpa.ourdvsssvip.com:20443/ws-302.bwcgee.cn/307ba6dcef6871ef85774531959c0402/67389eb6001c4a1e9b1f2f7ca2a82dc1-1b1785a818fc693827ab9628d26d600b-ld.mp4?key=d68b1022dc995a2a037c101795ee9769&time=1778592308765&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=23641efb7e8d4a82abfdeaaeff806444&hevc=false&seasonId=51705&wsiphost=ipdbme&wsrid_tag=6a02f1f4_PS-CTU-01y7n22_17039-19427-s1t1778577908846&x-mamba-business-label=13423&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
|
|
"valid": false,
|
|
"reachable": false,
|
|
"status_code": 403,
|
|
"final_url": "https://tfvt1gr3dymt1ge31hcj3gezdrpa.ourdvsssvip.com:20443/ws-302.bwcgee.cn/307ba6dcef6871ef85774531959c0402/67389eb6001c4a1e9b1f2f7ca2a82dc1-1b1785a818fc693827ab9628d26d600b-ld.mp4?key=d68b1022dc995a2a037c101795ee9769&time=1778592308765&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=23641efb7e8d4a82abfdeaaeff806444&hevc=false&seasonId=51705&wsiphost=ipdbme&wsrid_tag=6a02f1f4_PS-CTU-01y7n22_17039-19427-s1t1778577908846&x-mamba-business-label=13423&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": 135.922,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 360.93,
|
|
"detail": 603.14,
|
|
"player": 0.002,
|
|
"url_check": 294.303,
|
|
"total": 1395.291
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 23,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "电视剧",
|
|
"vod_id": "show:dccc1a382ea3456eaa77",
|
|
"flag": "优酷",
|
|
"play_id": "https://v.youku.com/v_show/id_XNjUxODQ1MzE1Ng==.html"
|
|
},
|
|
"player": {
|
|
"parse": 1,
|
|
"url": "https://v.youku.com/v_show/id_XNjUxODQ1MzE1Ng==.html",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://v.youku.com/v_show/id_XNjUxODQ1MzE1Ng==.html",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "低端影视",
|
|
"file": "低端影视.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 182.423,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 2457.479,
|
|
"detail": 2972.229,
|
|
"player": 0.008,
|
|
"url_check": 234.431,
|
|
"total": 5848.101
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 24,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "series",
|
|
"vod_id": "movie/h24-24-h-de-la-vie-d-une-femme",
|
|
"flag": "quark",
|
|
"play_id": "https://pan.quark.cn/s/bb5588471842"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/bb5588471842",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/bb5588471842",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "修罗",
|
|
"file": "修罗.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 10.01,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2160.552,
|
|
"detail": 2541.406,
|
|
"player": 4639.94,
|
|
"url_check": 1770.367,
|
|
"total": 25155.896
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 24,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "tv",
|
|
"vod_id": "guoju/26874",
|
|
"flag": "修罗直连",
|
|
"play_id": "guoju/play/26874-0"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://v16m-default.akamaized.net/9cdf18b2dd4ad589579d6c41467602aa/862bc9d9/video/tos/alisg/tos-alisg-v-26190a-sg/osERzcA0Kf5u6i4Y2dHBowAgqWAPYjAAkEAmim/",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://v16m-default.akamaized.net/9cdf18b2dd4ad589579d6c41467602aa/862bc9d9/video/tos/alisg/tos-alisg-v-26190a-sg/osERzcA0Kf5u6i4Y2dHBowAgqWAPYjAAkEAmim/",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "凡客TV",
|
|
"file": "凡客TV.txt",
|
|
"success": false,
|
|
"failed_stage": "unexpected",
|
|
"error": "HTTPSConnectionPool(host='fktv.me', port=443): Max retries exceeded with url: /movie/detail/b759a032caab0687 (Caused by ConnectTimeoutError(<HTTPSConnection(host='fktv.me', port=443) at 0x7b5b759b8b90>, 'Connection to fktv.me 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='fktv.me', port=443) at 0x7b5b759b8b90>, 'Connection to fktv.me 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='fktv.me', port=443): Max retries exceeded with url: /movie/detail/b759a032caab0687 (Caused by ConnectTimeoutError(<HTTPSConnection(host='fktv.me', port=443) at 0x7b5b759b8b90>, 'Connection to fktv.me 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 644, 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 445, in _validate_from_tid\n player_result = _run_timed(result[\"timings_ms\"], \"player\", spider.playerContent, clock, play[\"flag\"], play[\"play_id\"], [])\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 290, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/凡客TV.txt\", line 356, in playerContent\n File \"/home/harold/workspace/tvbox-resources/py/凡客TV.txt\", line 86, in _request_json\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='fktv.me', port=443): Max retries exceeded with url: /movie/detail/b759a032caab0687 (Caused by ConnectTimeoutError(<HTTPSConnection(host='fktv.me', port=443) at 0x7b5b759b8b90>, 'Connection to fktv.me timed out. (connect timeout=10)'))\n",
|
|
"timings_ms": {
|
|
"module_load": 4.571,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 2499.696,
|
|
"detail": 3074.321,
|
|
"player": 12567.97,
|
|
"url_check": 0.0,
|
|
"total": 18148.285
|
|
},
|
|
"counts": {
|
|
"classes": 8,
|
|
"category_videos": 32,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "b759a032caab0687",
|
|
"flag": "高速线路",
|
|
"play_id": "{\"movie_id\":\"b759a032caab0687\",\"link_id\":\"ee2850af60c6cb015c2589a05c922a37\",\"line_id\":\"line1\",\"line_name\":\"高速线路\",\"episode_name\":\"1080p\",\"type\":\"switch\",\"page\":\"https://fktv.me/movie/detail/b759a032caab0687\"}"
|
|
},
|
|
"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.695,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 4020.517,
|
|
"detail": 3573.74,
|
|
"player": 13672.844,
|
|
"url_check": 3456.778,
|
|
"total": 24730.241
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 16,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "dianying",
|
|
"vod_id": "vod/44943",
|
|
"flag": "BF备用",
|
|
"play_id": "play/44943-3-1"
|
|
},
|
|
"player": {
|
|
"parse": 1,
|
|
"url": "https://www.jqqzx.cc/play/44943-3-1.html",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://www.jqqzx.one/play/44943-3-1.html",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "剧迷",
|
|
"file": "剧迷.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 9.116,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2123.09,
|
|
"detail": 2730.877,
|
|
"player": 5376.805,
|
|
"url_check": 2165.597,
|
|
"total": 22369.348
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 218,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "2",
|
|
"vod_id": "442645",
|
|
"flag": "騰訊线路 ᴴᴰ",
|
|
"play_id": "442645-6-1"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://img.ruyijx.com/m3u8/96AtpOOB47enbG.m3u8?XpHVi4f1D9EGJpMm6c",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://img.ruyijx.com/m3u8/96AtpOOB47enbG.m3u8?XpHVi4f1D9EGJpMm6c",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "博看听书",
|
|
"file": "博看听书.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 6.878,
|
|
"init": 0.001,
|
|
"home": 3187.731,
|
|
"category": 276.653,
|
|
"detail": 801.149,
|
|
"player": 0.004,
|
|
"url_check": 290.501,
|
|
"total": 4563.399
|
|
},
|
|
"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": 14.873,
|
|
"init": 406.921,
|
|
"home": 0.015,
|
|
"category": 208.723,
|
|
"detail": 188.75,
|
|
"player": 0.005,
|
|
"url_check": 206.649,
|
|
"total": 1028.362
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 15,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "ju",
|
|
"vod_id": "/ju/10438.html",
|
|
"flag": "夸克",
|
|
"play_id": "https://pan.quark.cn/s/0955c2284f45"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/0955c2284f45",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/0955c2284f45",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "听书",
|
|
"file": "听书.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.006,
|
|
"init": 81.873,
|
|
"home": 0.001,
|
|
"category": 190.844,
|
|
"detail": 488.34,
|
|
"player": 312.731,
|
|
"url_check": 95.213,
|
|
"total": 1174.743
|
|
},
|
|
"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=98fd9c6809c48502f7aba3f3768d7459&buy_key=FM&token=6658×tamp=1778577913&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=98fd9c6809c48502f7aba3f3768d7459&buy_key=FM&token=6658×tamp=1778577913&duration=453",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "听友FM",
|
|
"file": "听友FM.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 18.376,
|
|
"init": 0.002,
|
|
"home": 3107.791,
|
|
"category": 2883.801,
|
|
"detail": 3263.351,
|
|
"player": 4305.966,
|
|
"url_check": 186.649,
|
|
"total": 13767.216
|
|
},
|
|
"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=1778577669&sign=dba6b6151c61ddeebc47967c7e121bfc",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://file.hgeuz.cn/stream/eJwANwDI_wJVZgVKIIrU0ECux-GJ1PSt38ahythCqsH-r9TAQ4rj5F94rOjbQKjk063xyIX2z3hfeGcIHF4BAAD__5DtISY.?ts=1778577669&sign=dba6b6151c61ddeebc47967c7e121bfc",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "四万影视",
|
|
"file": "四万影视.txt",
|
|
"success": false,
|
|
"failed_stage": "unexpected",
|
|
"error": "HTTPSConnectionPool(host='40000.me', port=443): Max retries exceeded with url: /api/maccms?ac=detail&t=20&pg=1&by=time (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1081)')))",
|
|
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='40000.me', port=443): Max retries exceeded with url: /api/maccms?ac=detail&t=20&pg=1&by=time (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 644, 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 404, 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 290, 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.SSLError: HTTPSConnectionPool(host='40000.me', port=443): Max retries exceeded with url: /api/maccms?ac=detail&t=20&pg=1&by=time (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1081)')))\n",
|
|
"timings_ms": {
|
|
"module_load": 12.5,
|
|
"init": 0.002,
|
|
"home": 0.002,
|
|
"category": 1893.626,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 1908.774
|
|
},
|
|
"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": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 14.043,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 1885.574,
|
|
"detail": 3984.949,
|
|
"player": 2255.749,
|
|
"url_check": 252.768,
|
|
"total": 8393.895
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 12,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "voddetail/4601.html",
|
|
"flag": "zxzj",
|
|
"play_id": "vodplay/4601-1-1.html"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://media-sxty-fy-corp.sx3oss.ctyunxs.cn/CORPCLOUD/f076ccf5-a095-45a2-b086-cbf66f4aa40d.mp4?response-content-disposition=attachment%3Bfilename%3D%22%E9%93%81%E8%A1%80%E6%88%98%E5%A3%AB%E6%9D%80%E6%88%AE%E4%B9%8B%E5%9C%B02025HD1080P.mp4%22%3Bfilename*%3DUTF-8%27%27%25E9%2593%2581%25E8%25A1%2580%25E6%2588%2598%25E5%25A3%25AB%25E6%259D%2580%25E6%2588%25AE%25E4%25B9%258B%25E5%259C%25B02025HD1080P.mp4&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=CORP&x-amz-CLIENTTYPEIN=UNKNOWN&Signature=kr2NtOhidU8XxeECKVBjuLaQR0k%3D&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&Expires=1778583898&x-amz-limitrate=102400&response-content-type=video/mp4&x-amz-FSIZE=2183471772&x-amz-UID=10000004591358&x-amz-UFID=31374317010337932",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://media-sxty-fy-corp.sx3oss.ctyunxs.cn/CORPCLOUD/f076ccf5-a095-45a2-b086-cbf66f4aa40d.mp4?response-content-disposition=attachment%3Bfilename%3D%22%E9%93%81%E8%A1%80%E6%88%98%E5%A3%AB%E6%9D%80%E6%88%AE%E4%B9%8B%E5%9C%B02025HD1080P.mp4%22%3Bfilename*%3DUTF-8%27%27%25E9%2593%2581%25E8%25A1%2580%25E6%2588%2598%25E5%25A3%25AB%25E6%259D%2580%25E6%2588%25AE%25E4%25B9%258B%25E5%259C%25B02025HD1080P.mp4&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-CLOUDTYPEIN=CORP&x-amz-CLIENTTYPEIN=UNKNOWN&Signature=kr2NtOhidU8XxeECKVBjuLaQR0k%3D&AWSAccessKeyId=0Lg7dAq3ZfHvePP8DKEU&Expires=1778583898&x-amz-limitrate=102400&response-content-type=video/mp4&x-amz-FSIZE=2183471772&x-amz-UID=10000004591358&x-amz-UFID=31374317010337932",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "多多",
|
|
"file": "多多.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 4.887,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 12925.29,
|
|
"detail": 1221.515,
|
|
"player": 0.003,
|
|
"url_check": 1088.39,
|
|
"total": 15240.529
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/9447.html",
|
|
"flag": "百度#多多",
|
|
"play_id": "https://pan.baidu.com/s/1tCpt9UMVoL9OxQyvpKUYZA?pwd=yyds"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1tCpt9UMVoL9OxQyvpKUYZA?pwd=yyds",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=tCpt9UMVoL9OxQyvpKUYZA&pwd=yyds",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "奕搜",
|
|
"file": "奕搜.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.679,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2813.77,
|
|
"detail": 2458.131,
|
|
"player": 0.004,
|
|
"url_check": 216.638,
|
|
"total": 5495.465
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 10,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "dy",
|
|
"vod_id": "/dy/29706.html",
|
|
"flag": "夸克",
|
|
"play_id": "https://pan.quark.cn/s/e5345bdd71f6"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/e5345bdd71f6",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/e5345bdd71f6",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "如意资源",
|
|
"file": "如意资源.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 4.009,
|
|
"init": 0.0,
|
|
"home": 0.005,
|
|
"category": 5507.44,
|
|
"detail": 2291.89,
|
|
"player": 0.012,
|
|
"url_check": 2618.435,
|
|
"total": 10423.075
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 20,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "77018",
|
|
"flag": "rym3u8",
|
|
"play_id": "https://svip.ryiplay18.com/20260512/6346_e524dfd0/index.m3u8"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://svip.ryiplay18.com/20260512/6346_e524dfd0/index.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://svip.ryiplay18.com/20260512/6346_e524dfd0/index.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "布布影视",
|
|
"file": "布布影视.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.394,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2370.785,
|
|
"detail": 2247.513,
|
|
"player": 3084.835,
|
|
"url_check": 326.72,
|
|
"total": 8036.299
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 24,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "69765",
|
|
"flag": "JD蓝光(1)",
|
|
"play_id": "JD4K@1@JD-5f4f247d6dfbc0b5d5cb1efeaa2303790"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://c167-obsdaz-ykj-01.obs.dualstack.cidc-rp-2006.joint.cmecloud.cn/1810c8ff2a78456b9348fadfe7ab0fd0086?response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%274K.mp4&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260512T092522Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260512%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=ad2f924722f1e0604d776fdfa3c74fe3798199538eb00954a253cc29ba90c8b5",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://c167-obsdaz-ykj-01.obs.dualstack.cidc-rp-2006.joint.cmecloud.cn/1810c8ff2a78456b9348fadfe7ab0fd0086?response-content-disposition=attachment%3B%20filename%2A%3DUTF-8%27%274K.mp4&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260512T092522Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260512%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=ad2f924722f1e0604d776fdfa3c74fe3798199538eb00954a253cc29ba90c8b5",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "微观短剧",
|
|
"file": "微观短剧.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 9.774,
|
|
"init": 0.03,
|
|
"home": 206.693,
|
|
"category": 293.076,
|
|
"detail": 378.318,
|
|
"player": 0.002,
|
|
"url_check": 199.37,
|
|
"total": 1088.417
|
|
},
|
|
"counts": {
|
|
"classes": 30,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "都市",
|
|
"vod_id": "110000044555935694",
|
|
"flag": "1080P",
|
|
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778577917&sign=f3a3e33c192a87b3b8e4409edd17a427"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778577917&sign=f3a3e33c192a87b3b8e4409edd17a427",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778577917&sign=f3a3e33c192a87b3b8e4409edd17a427",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "新韩剧网",
|
|
"file": "新韩剧网.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 10.782,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 1854.08,
|
|
"detail": 1780.981,
|
|
"player": 1715.884,
|
|
"url_check": 2671.256,
|
|
"total": 8033.623
|
|
},
|
|
"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": 5.997,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 509.228,
|
|
"detail": 499.344,
|
|
"player": 0.005,
|
|
"url_check": 306.298,
|
|
"total": 1322.163
|
|
},
|
|
"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": 13.43,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2364.828,
|
|
"detail": 2146.415,
|
|
"player": 0.013,
|
|
"url_check": 266.306,
|
|
"total": 4791.613
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "25",
|
|
"vod_id": "/index.php/vod/detail/id/7873.html",
|
|
"flag": "115#木偶",
|
|
"play_id": "https://115cdn.com/s/swf0al236dh?password=y244"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://115cdn.com/s/swf0al236dh?password=y244",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://115cdn.com/s/swf0al236dh?password=y244",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "樱花动漫",
|
|
"file": "樱花动漫.txt",
|
|
"success": false,
|
|
"failed_stage": "url_check",
|
|
"error": "HTTP 403",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 14.056,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 3343.086,
|
|
"detail": 5137.216,
|
|
"player": 4185.739,
|
|
"url_check": 6348.501,
|
|
"total": 39778.815
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 36,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "riman",
|
|
"vod_id": "/detail/18812/",
|
|
"flag": "高清",
|
|
"play_id": "/play/18812-1-1/"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://vip.ffzy-plays.com/20260407/52135_b7adf8c9/index.m3u8",
|
|
"valid": false,
|
|
"reachable": false,
|
|
"status_code": 403,
|
|
"final_url": "https://vip.ffzy-plays.com/20260407/52135_b7adf8c9/index.m3u8",
|
|
"reason": "HTTP 403"
|
|
}
|
|
},
|
|
{
|
|
"spider": "橘子TV",
|
|
"file": "橘子TV.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 10.035,
|
|
"init": 4918.405,
|
|
"home": 2885.856,
|
|
"category": 5331.255,
|
|
"detail": 4372.354,
|
|
"player": 9427.743,
|
|
"url_check": 2349.531,
|
|
"total": 51589.291
|
|
},
|
|
"counts": {
|
|
"classes": 8,
|
|
"category_videos": 18,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "65",
|
|
"vod_id": "390318",
|
|
"flag": "一起看APP",
|
|
"play_id": "25035816"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://usaydd.xbavporn.com/m3u87/share/7094429/7289719/20260424/175032/1080/index.m3u8?sign=11f49a612837ffeb8f1e9b5d23fb988e&t=1778577965",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://usaydd.xbavporn.com/m3u87/share/7094429/7289719/20260424/175032/1080/index.m3u8?sign=11f49a612837ffeb8f1e9b5d23fb988e&t=1778577965",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "欧歌",
|
|
"file": "欧歌.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 10.301,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2619.611,
|
|
"detail": 1846.472,
|
|
"player": 0.006,
|
|
"url_check": 1151.36,
|
|
"total": 5628.673
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/29938.html",
|
|
"flag": "百度",
|
|
"play_id": "https://pan.baidu.com/s/1vcYSB0ydxgAzc-1Tvg63oA?pwd=8888"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1vcYSB0ydxgAzc-1Tvg63oA?pwd=8888",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=vcYSB0ydxgAzc-1Tvg63oA&pwd=8888",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "河马短剧",
|
|
"file": "河马短剧.txt",
|
|
"success": false,
|
|
"failed_stage": "unexpected",
|
|
"error": "'NoneType' object has no attribute 'text'",
|
|
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 644, 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 404, 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 290, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/河马短剧.txt\", line 171, in categoryContent\nAttributeError: 'NoneType' object has no attribute 'text'\n",
|
|
"timings_ms": {
|
|
"module_load": 21.677,
|
|
"init": 0.001,
|
|
"home": 10463.237,
|
|
"category": 10183.712,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 20669.521
|
|
},
|
|
"counts": {
|
|
"classes": 10,
|
|
"category_videos": 0,
|
|
"detail_videos": 0,
|
|
"episodes": 0
|
|
},
|
|
"samples": {
|
|
"tid": "462",
|
|
"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.436,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2172.513,
|
|
"detail": 1875.904,
|
|
"player": 0.005,
|
|
"url_check": 1062.91,
|
|
"total": 5116.331
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 48,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "detail/3033",
|
|
"flag": "百度",
|
|
"play_id": "https://pan.baidu.com/s/1D_ftrHBRkMlxRs_aLWExxQ?pwd=p4uw"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1D_ftrHBRkMlxRs_aLWExxQ?pwd=p4uw",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=D_ftrHBRkMlxRs_aLWExxQ&pwd=p4uw",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "潮流APP",
|
|
"file": "潮流APP.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 7.561,
|
|
"init": 0.003,
|
|
"home": 114.853,
|
|
"category": 119.985,
|
|
"detail": 177.778,
|
|
"player": 327.516,
|
|
"url_check": 82.119,
|
|
"total": 830.293
|
|
},
|
|
"counts": {
|
|
"classes": 10,
|
|
"category_videos": 12,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "10",
|
|
"vod_id": "75722",
|
|
"flag": "线路二 (点击换线)",
|
|
"play_id": "75722@@0@@0"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "http://210.16.164.53:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778577923596&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "http://210.16.164.53:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778577923596&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "爱奇艺",
|
|
"file": "爱奇艺.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 18.803,
|
|
"init": 0.023,
|
|
"home": 3793.868,
|
|
"category": 713.379,
|
|
"detail": 227.099,
|
|
"player": 0.001,
|
|
"url_check": 286.519,
|
|
"total": 5040.677
|
|
},
|
|
"counts": {
|
|
"classes": 11,
|
|
"category_videos": 48,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "pcw:1",
|
|
"vod_id": "pcw:1$3136167655271600",
|
|
"flag": "爱奇艺",
|
|
"play_id": "http://www.iqiyi.com/v_vd55wo89uk.html"
|
|
},
|
|
"player": {
|
|
"parse": 1,
|
|
"url": "http://www.iqiyi.com/v_vd55wo89uk.html",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://www.iqiyi.com/v_vd55wo89uk.html",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "独播库",
|
|
"file": "独播库.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 7.192,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 1852.277,
|
|
"detail": 1883.671,
|
|
"player": 2728.792,
|
|
"url_check": 1831.941,
|
|
"total": 8304.467
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 48,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "index",
|
|
"vod_id": "143516",
|
|
"flag": "独播库",
|
|
"play_id": "143516-1-1"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://vid.dbokutv.com/20260415/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsrsRsGlR7XgBN5vPtHcU7bwBJ0nBJ0mGJH5D44tC2vjS34/chunklist.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://vid.dbokutv.com/20260415/ppotb62-S71lT2yliZApDBSvkYzBsrmD3fpCJ4nBsrsRsGlR7XgBN5vPtHcU7bwBJ0nBJ0mGJH5D44tC2vjS34/chunklist.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "玩偶哥哥",
|
|
"file": "玩偶哥哥.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 3.724,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 1765.114,
|
|
"detail": 2284.862,
|
|
"player": 0.01,
|
|
"url_check": 225.285,
|
|
"total": 4279.806
|
|
},
|
|
"counts": {
|
|
"classes": 8,
|
|
"category_videos": 70,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/voddetail/109667.html",
|
|
"flag": "夸克#玩偶哥哥",
|
|
"play_id": "https://pan.quark.cn/s/e7bc66696dec"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/e7bc66696dec",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/e7bc66696dec",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "玩偶聚合",
|
|
"file": "玩偶聚合.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 14.196,
|
|
"init": 0.001,
|
|
"home": 0.06,
|
|
"category": 1871.899,
|
|
"detail": 2320.124,
|
|
"player": 0.003,
|
|
"url_check": 206.893,
|
|
"total": 4413.877
|
|
},
|
|
"counts": {
|
|
"classes": 10,
|
|
"category_videos": 70,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "site_wanou",
|
|
"vod_id": "site:wanou:/voddetail/109726.html",
|
|
"flag": "夸克#玩偶",
|
|
"play_id": "https://pan.quark.cn/s/24f7a693b75a"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/24f7a693b75a",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/24f7a693b75a",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "瓜子",
|
|
"file": "瓜子.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.101,
|
|
"init": 0.001,
|
|
"home": 0.014,
|
|
"category": 2309.091,
|
|
"detail": 3996.566,
|
|
"player": 1976.271,
|
|
"url_check": 180.594,
|
|
"total": 8468.515
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"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/3894ba7b1d1372dc0e6e704154729813/20260512172533/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://app.xn--55qx2ai23bz99b.cn/index.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "百度短剧",
|
|
"file": "百度短剧.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 3.905,
|
|
"init": 0.0,
|
|
"home": 501.606,
|
|
"category": 255.576,
|
|
"detail": 989.333,
|
|
"player": 254.706,
|
|
"url_check": 82.672,
|
|
"total": 2088.309
|
|
},
|
|
"counts": {
|
|
"classes": 29,
|
|
"category_videos": 9,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "3",
|
|
"vod_id": "9626395189336331475",
|
|
"flag": "百度短剧",
|
|
"play_id": "5228077877184398747|||9626395189336331475"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "http://vd3.bdstatic.com/mda-rh54j6is12ydd0q3/1080p/mv_cae264_backtrack_1080p_normal/1754453773225130912/mda-rh54j6is12ydd0q3.mp4?v_from_s=haokan-ui-video-hna",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "http://vd3.bdstatic.com/mda-rh54j6is12ydd0q3/1080p/mv_cae264_backtrack_1080p_normal/1754453773225130912/mda-rh54j6is12ydd0q3.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": 3.913,
|
|
"init": 0.001,
|
|
"home": 345.152,
|
|
"category": 271.459,
|
|
"detail": 275.507,
|
|
"player": 0.019,
|
|
"url_check": 179.202,
|
|
"total": 1075.819
|
|
},
|
|
"counts": {
|
|
"classes": 8,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "?tagId=39765285016165",
|
|
"vod_id": "thread?topicId=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.241,
|
|
"init": 0.0,
|
|
"home": 0.0,
|
|
"category": 1801.706,
|
|
"detail": 1952.232,
|
|
"player": 1865.058,
|
|
"url_check": 1072.126,
|
|
"total": 6697.152
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 20,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "/",
|
|
"vod_id": "/movies/134742/",
|
|
"flag": "百度1",
|
|
"play_id": "push://https://www.seedhub.cc/link_start/?redirect_to=pan_id_571535&movie_title=❤️❤️❤️【飞驰人生3】【4K 1080P】更新于 ✅ 今天"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1NiQJW0DJBw8FR_Y1_k8Yig?pwd=ojmk",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=NiQJW0DJBw8FR_Y1_k8Yig&pwd=ojmk",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "短剧优选",
|
|
"file": "短剧优选.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 19.978,
|
|
"init": 644.977,
|
|
"home": 0.352,
|
|
"category": 472.228,
|
|
"detail": 340.726,
|
|
"player": 0.004,
|
|
"url_check": 73.833,
|
|
"total": 1552.987
|
|
},
|
|
"counts": {
|
|
"classes": 11,
|
|
"category_videos": 72,
|
|
"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.679,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2256.679,
|
|
"detail": 1972.529,
|
|
"player": 0.01,
|
|
"url_check": 1044.012,
|
|
"total": 5277.428
|
|
},
|
|
"counts": {
|
|
"classes": 2,
|
|
"category_videos": 20,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "https://sm3.cc/?id=50035",
|
|
"flag": "百度",
|
|
"play_id": "https://pan.baidu.com/s/14I16GcD2cPUoCb1C0QZFeg?pwd=6666"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/14I16GcD2cPUoCb1C0QZFeg?pwd=6666",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=4I16GcD2cPUoCb1C0QZFeg&pwd=6666",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "糯米",
|
|
"file": "糯米.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.14,
|
|
"init": 0.0,
|
|
"home": 513.167,
|
|
"category": 713.49,
|
|
"detail": 183.864,
|
|
"player": 319.577,
|
|
"url_check": 369.365,
|
|
"total": 2105.435
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 81,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "/vod-type-id-1-pg-1.html",
|
|
"vod_id": "/vod-detail-id-90063.html",
|
|
"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": false,
|
|
"failed_stage": "category",
|
|
"error": "分类视频列表为空",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 3.934,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 196.245,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 453.701
|
|
},
|
|
"counts": {
|
|
"classes": 60,
|
|
"category_videos": 0,
|
|
"detail_videos": 0,
|
|
"episodes": 0
|
|
},
|
|
"samples": {
|
|
"tid": "霸总",
|
|
"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": "Expecting value: line 1 column 1 (char 0)",
|
|
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/models.py\", line 978, in json\n return complexjson.loads(self.text, **kwargs)\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/json/__init__.py\", line 352, in loads\n return _default_decoder.decode(s)\n ~~~~~~~~~~~~~~~~~~~~~~~^^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/json/decoder.py\", line 345, in decode\n obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/json/decoder.py\", line 363, in raw_decode\n raise JSONDecodeError(\"Expecting value\", s, err.value) from None\njson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\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 644, 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 445, in _validate_from_tid\n player_result = _run_timed(result[\"timings_ms\"], \"player\", spider.playerContent, clock, play[\"flag\"], play[\"play_id\"], [])\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 290, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/网易云音乐.txt\", line 124, in playerContent\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/models.py\", line 982, in json\n raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)\nrequests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
|
|
"timings_ms": {
|
|
"module_load": 3.1,
|
|
"init": 0.0,
|
|
"home": 434.987,
|
|
"category": 402.175,
|
|
"detail": 0.005,
|
|
"player": 208.763,
|
|
"url_check": 0.0,
|
|
"total": 1050.943
|
|
},
|
|
"counts": {
|
|
"classes": 62,
|
|
"category_videos": 100,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "/discover/toplist?id=19723756",
|
|
"vod_id": "3358416851@坠夏@曾舜晞👉MP3",
|
|
"flag": "网易云音乐",
|
|
"play_id": "3358416851"
|
|
},
|
|
"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": 4.805,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 5315.279,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 9368.584
|
|
},
|
|
"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": 9.509,
|
|
"init": 0.0,
|
|
"home": 121.684,
|
|
"category": 269.969,
|
|
"detail": 688.196,
|
|
"player": 0.002,
|
|
"url_check": 246.633,
|
|
"total": 1336.464
|
|
},
|
|
"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.319,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2197.908,
|
|
"detail": 1945.168,
|
|
"player": 0.013,
|
|
"url_check": 215.611,
|
|
"total": 4369.062
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/20396.html",
|
|
"flag": "夸克#至臻",
|
|
"play_id": "https://pan.quark.cn/s/e24e557f43b8"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.quark.cn/s/e24e557f43b8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.quark.cn/s/e24e557f43b8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "茶杯狐",
|
|
"file": "茶杯狐.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 8.228,
|
|
"init": 0.0,
|
|
"home": 2823.343,
|
|
"category": 4649.45,
|
|
"detail": 1313.255,
|
|
"player": 7887.056,
|
|
"url_check": 200.544,
|
|
"total": 31609.544
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 36,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "2",
|
|
"vod_id": "detail/video/102143",
|
|
"flag": "自营c36",
|
|
"play_id": "play/102143-1-1"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://fffan.wki8.com/hls/0e24fe16762a771256f4d8a556beba25.m3u8?token=c41d83d8c9aefa0f7ef954af04a43da3&time=1778577960&YYNB.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://fffan.wki8.com/hls/0e24fe16762a771256f4d8a556beba25.m3u8?token=c41d83d8c9aefa0f7ef954af04a43da3&time=1778577960&YYNB.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "虎斑",
|
|
"file": "虎斑.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.841,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2675.873,
|
|
"detail": 2902.07,
|
|
"player": 0.009,
|
|
"url_check": 1138.437,
|
|
"total": 6722.793
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/460085.html",
|
|
"flag": "百度#虎斑",
|
|
"play_id": "https://pan.baidu.com/s/1ihJuI7m_8IgZeXiWDk17ZQ?pwd=6574"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1ihJuI7m_8IgZeXiWDk17ZQ?pwd=6574",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=ihJuI7m_8IgZeXiWDk17ZQ&pwd=6574",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "蜡笔",
|
|
"file": "蜡笔.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 7.05,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 3601.86,
|
|
"detail": 2185.843,
|
|
"player": 0.005,
|
|
"url_check": 1197.512,
|
|
"total": 6992.878
|
|
},
|
|
"counts": {
|
|
"classes": 7,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "29",
|
|
"vod_id": "/index.php/vod/detail/id/11277.html",
|
|
"flag": "百度#蜡笔",
|
|
"play_id": "https://pan.baidu.com/s/1NiPgbk9_FIhSYfmGm-Cqxg?pwd=q5m6"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1NiPgbk9_FIhSYfmGm-Cqxg?pwd=q5m6",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=NiPgbk9_FIhSYfmGm-Cqxg&pwd=q5m6",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "袋鼠影视",
|
|
"file": "袋鼠影视.txt",
|
|
"success": false,
|
|
"failed_stage": "url_check",
|
|
"error": "HTTP 403",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 10.366,
|
|
"init": 0.001,
|
|
"home": 0.004,
|
|
"category": 3210.065,
|
|
"detail": 1910.699,
|
|
"player": 4023.488,
|
|
"url_check": 4967.021,
|
|
"total": 25257.382
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 36,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "2",
|
|
"vod_id": "movie/index389065",
|
|
"flag": "蓝光专线4",
|
|
"play_id": "play/389065-0-0"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://vip.dytt-see.com/20251115/5798_ba4002d8/index.m3u8",
|
|
"valid": false,
|
|
"reachable": false,
|
|
"status_code": 403,
|
|
"final_url": "https://vip.dytt-see.com/20251115/5798_ba4002d8/index.m3u8",
|
|
"reason": "HTTP 403"
|
|
}
|
|
},
|
|
{
|
|
"spider": "路漫漫",
|
|
"file": "路漫漫.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 12.82,
|
|
"init": 0.001,
|
|
"home": 0.001,
|
|
"category": 2743.187,
|
|
"detail": 1181.66,
|
|
"player": 6800.478,
|
|
"url_check": 196.004,
|
|
"total": 10935.564
|
|
},
|
|
"counts": {
|
|
"classes": 6,
|
|
"category_videos": 20,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "6",
|
|
"vod_id": "detail/8044.html",
|
|
"flag": "播放节点列表X dev云播 聚合线路",
|
|
"play_id": "play/8044_1_1.html"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://groupvideo.photo.qq.com/1071_0bc3iyaaaaaabiamwiqcxjvc6rqeabdaaaca.f0.mp4?dis_k=9a6df5a272ad2ed1894ded725947b018&dis_t=1778577344",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://groupvideo.photo.qq.com/1071_0bc3iyaaaaaabiamwiqcxjvc6rqeabdaaaca.f0.mp4?dis_k=9a6df5a272ad2ed1894ded725947b018&dis_t=1778577344",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "酷我听书",
|
|
"file": "酷我听书.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 5.503,
|
|
"init": 0.0,
|
|
"home": 384.3,
|
|
"category": 99.03,
|
|
"detail": 215.445,
|
|
"player": 157.899,
|
|
"url_check": 91.323,
|
|
"total": 5062.608
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 21,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "37",
|
|
"vod_id": "27097583",
|
|
"flag": "酷我听书",
|
|
"play_id": "free|213913912"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "http://cz.sycdn.kuwo.cn/59c3da993de73fa2076c5e2bb546a9f8/6a02f211/resource/m1/34/31/3390639861.wma?bitrate$128&format$wma&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://cz.sycdn.kuwo.cn/59c3da993de73fa2076c5e2bb546a9f8/6a02f211/resource/m1/34/31/3390639861.wma?bitrate$128&format$wma&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": 7.386,
|
|
"init": 506.941,
|
|
"home": 323.492,
|
|
"category": 291.89,
|
|
"detail": 331.768,
|
|
"player": 385.635,
|
|
"url_check": 62.419,
|
|
"total": 1910.931
|
|
},
|
|
"counts": {
|
|
"classes": 12,
|
|
"category_videos": 15,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "recommend",
|
|
"vod_id": "488147641",
|
|
"flag": "酷狗音乐",
|
|
"play_id": "488147641"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "http://fsdg360.tx.kugou.com/202605121725/e694492ea966173a4df180feb4ec9c6e/v3/0e872913445c032d9385da2d5fab4ce5/yp/p_0_960145/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx488147641_qu128_s2357815584.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "http://fsdg360.tx.kugou.com/202605121725/e694492ea966173a4df180feb4ec9c6e/v3/0e872913445c032d9385da2d5fab4ce5/yp/p_0_960145/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx488147641_qu128_s2357815584.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": 13.978,
|
|
"init": 0.001,
|
|
"home": 947.252,
|
|
"category": 313.392,
|
|
"detail": 2097.893,
|
|
"player": 369.371,
|
|
"url_check": 568.884,
|
|
"total": 4312.715
|
|
},
|
|
"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=1778577936-9b7391f467554c51a527b590c99ed90f-0-447be4dbaad51edaf515cc2846219b46",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1778577936-9b7391f467554c51a527b590c99ed90f-0-447be4dbaad51edaf515cc2846219b46",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "闪电",
|
|
"file": "闪电.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 3.95,
|
|
"init": 0.001,
|
|
"home": 0.0,
|
|
"category": 6025.668,
|
|
"detail": 6163.382,
|
|
"player": 0.004,
|
|
"url_check": 1195.886,
|
|
"total": 13389.668
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 72,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/index.php/vod/detail/id/185903.html",
|
|
"flag": "百度#闪电",
|
|
"play_id": "https://pan.baidu.com/s/1hxalL4JYwZ5Td9Hc-V4qpw?pwd=6688"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://pan.baidu.com/s/1hxalL4JYwZ5Td9Hc-V4qpw?pwd=6688",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://pan.baidu.com/share/init?surl=hxalL4JYwZ5Td9Hc-V4qpw&pwd=6688",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "飞快TV",
|
|
"file": "飞快TV.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 8.465,
|
|
"init": 0.002,
|
|
"home": 0.002,
|
|
"category": 7827.307,
|
|
"detail": 7346.001,
|
|
"player": 8370.054,
|
|
"url_check": 3570.678,
|
|
"total": 27123.159
|
|
},
|
|
"counts": {
|
|
"classes": 4,
|
|
"category_videos": 40,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "1",
|
|
"vod_id": "/voddetail/173787.html",
|
|
"flag": "高清35",
|
|
"play_id": "/vodplay/173787-6-1.html"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://cdn.vvvip-plays33.cc/20260413/11995_c7820797/index.m3u8",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://cdn.vvvip-plays33.cc/20260413/11995_c7820797/index.m3u8",
|
|
"reason": null
|
|
}
|
|
},
|
|
{
|
|
"spider": "魔方APP",
|
|
"file": "魔方APP.txt",
|
|
"success": false,
|
|
"failed_stage": "home",
|
|
"error": "分类列表为空",
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 6.978,
|
|
"init": 0.001,
|
|
"home": 4061.062,
|
|
"category": 0.0,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 4068.213
|
|
},
|
|
"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": "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 644, 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 404, 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 290, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/麦田影院.txt\", line 101, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/麦田影院.txt\", line 68, in _request_html\nrequests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))\n",
|
|
"timings_ms": {
|
|
"module_load": 3.623,
|
|
"init": 0.0,
|
|
"home": 0.001,
|
|
"category": 2624.044,
|
|
"detail": 0.0,
|
|
"player": 0.0,
|
|
"url_check": 0.0,
|
|
"total": 2631.992
|
|
},
|
|
"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": "黑猫APP",
|
|
"file": "黑猫APP.txt",
|
|
"success": true,
|
|
"failed_stage": null,
|
|
"error": null,
|
|
"traceback": null,
|
|
"timings_ms": {
|
|
"module_load": 4.601,
|
|
"init": 0.001,
|
|
"home": 3399.525,
|
|
"category": 1971.334,
|
|
"detail": 1860.873,
|
|
"player": 1860.064,
|
|
"url_check": 371.252,
|
|
"total": 16137.971
|
|
},
|
|
"counts": {
|
|
"classes": 5,
|
|
"category_videos": 30,
|
|
"detail_videos": 1,
|
|
"episodes": 1
|
|
},
|
|
"samples": {
|
|
"tid": "2",
|
|
"vod_id": "93639",
|
|
"flag": "🐈⬛高清线路",
|
|
"play_id": "高清线路1@@direct@@66ddeb0b0fe39924c19b86fc5dcce841,d39d2732e6a37c9076898eca10fe4a59,token+,1,1"
|
|
},
|
|
"player": {
|
|
"parse": 0,
|
|
"url": "https://v6-ktv.douyinvod.com/e3fe9213158026c05ed36aeba6933b1e/6a03528e/video/tos/cn/tos-cn-v-5f73e7/owICIeBAriXBO7GUqLcUe25esL219I1AapRXCR/",
|
|
"valid": true,
|
|
"reachable": true,
|
|
"status_code": 200,
|
|
"final_url": "https://v6-ktv.douyinvod.com/e3fe9213158026c05ed36aeba6933b1e/6a03528e/video/tos/cn/tos-cn-v-5f73e7/owICIeBAriXBO7GUqLcUe25esL219I1AapRXCR/",
|
|
"reason": null
|
|
}
|
|
}
|
|
]
|
|
} |