This commit is contained in:
Harold
2026-05-13 15:56:49 +08:00
parent b8a21ca66e
commit 41cfb24abd
5 changed files with 811 additions and 811 deletions
+637 -637
View File
@@ -1,7 +1,7 @@
{
"generated_at": "2026-05-13T15:39:43+08:00",
"generated_at": "2026-05-13T15:55:59+08:00",
"max_workers": 16,
"total_duration_ms": 41817.712,
"total_duration_ms": 50089.319,
"summary": {
"total": 71,
"success": 59,
@@ -12,9 +12,9 @@
"init": 0,
"home": 1,
"category": 1,
"detail": 0,
"detail": 1,
"player": 1,
"url_check": 4,
"url_check": 3,
"unexpected": 5
}
},
@@ -27,14 +27,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 210.586,
"module_load": 195.3,
"init": 0.001,
"home": 0.002,
"category": 2020.781,
"detail": 1488.039,
"player": 0.004,
"url_check": 228.076,
"total": 3949.219
"home": 0.003,
"category": 1962.854,
"detail": 1227.704,
"player": 0.005,
"url_check": 252.821,
"total": 3655.52
},
"counts": {
"classes": 5,
@@ -66,20 +66,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 114.855,
"module_load": 195.397,
"init": 0.002,
"home": 0.001,
"category": 2014.243,
"detail": 1222.757,
"player": 0.002,
"url_check": 0.054,
"total": 3352.418
"category": 2432.458,
"detail": 1429.613,
"player": 0.003,
"url_check": 0.076,
"total": 4101.285
},
"counts": {
"classes": 12,
"category_videos": 18,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "dianshiju/guoju",
@@ -105,14 +105,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 203.684,
"module_load": 196.054,
"init": 0.001,
"home": 2499.706,
"category": 1294.995,
"detail": 1319.924,
"player": 1265.071,
"url_check": 332.458,
"total": 6924.094
"home": 1618.17,
"category": 1287.402,
"detail": 1256.22,
"player": 1699.478,
"url_check": 313.608,
"total": 6412.791
},
"counts": {
"classes": 6,
@@ -132,7 +132,7 @@
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://lv-sycdn.kuwo.cn/90bcebe26786a6fc773f5559a66f1a02/6a042ac6/resource/1307392909/trackmedia/C200000W91kQ0efKLA.m4a?from=vip",
"final_url": "https://lv-sycdn.kuwo.cn/ee48ed0b47468ed12fd2c8319b6e59c2/6a042e95/resource/1307392909/trackmedia/C200000W91kQ0efKLA.m4a?from=vip",
"reason": null
}
},
@@ -144,14 +144,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 242.545,
"module_load": 238.197,
"init": 0.001,
"home": 0.0,
"category": 1446.698,
"detail": 1409.903,
"player": 0.014,
"url_check": 810.386,
"total": 3910.092
"home": 0.001,
"category": 2349.816,
"detail": 1212.539,
"player": 0.009,
"url_check": 697.388,
"total": 4499.387
},
"counts": {
"classes": 2,
@@ -183,14 +183,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 164.801,
"init": 0.009,
"home": 0.003,
"category": 538.912,
"detail": 502.844,
"player": 368.435,
"url_check": 75.557,
"total": 1657.198
"module_load": 197.311,
"init": 0.015,
"home": 0.007,
"category": 601.143,
"detail": 508.409,
"player": 367.061,
"url_check": 67.102,
"total": 1784.237
},
"counts": {
"classes": 6,
@@ -206,11 +206,11 @@
},
"player": {
"parse": 0,
"url": "https://isure.stream.qqmusic.qq.com/F000003Iu5fo0mXVj2.flac?guid=e972ec7ee4e862c9596b6421e37fc1b7&vkey=A680A543C760CE3581CD1BA1BFF9E0F9994D6B37B586693D2FEFB94DA7A334ECA9095692EBB15D077B92D0161E9A4A0789D3D3F26289DAF0__v2b9ab6c8&uin=1152921504846230218&fromtag=119114&redirect=1",
"url": "https://isure.stream.qqmusic.qq.com/F000003Iu5fo0mXVj2.flac?guid=07a6ed25231dbd6eae583d9f30bf2c9b&vkey=2E911C2A201A724AB1A1BD54F1A6F04A33502486729C22216F859BB158CF01224F25BE46CBD567BA23EF329BE2FDF547ABB6A76F5013E35C__v2b94c723&uin=1152921504846230218&fromtag=119114&redirect=1",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://isure.stream.qqmusic.qq.com/F000003Iu5fo0mXVj2.flac?guid=e972ec7ee4e862c9596b6421e37fc1b7&vkey=A680A543C760CE3581CD1BA1BFF9E0F9994D6B37B586693D2FEFB94DA7A334ECA9095692EBB15D077B92D0161E9A4A0789D3D3F26289DAF0__v2b9ab6c8&uin=1152921504846230218&fromtag=119114&redirect=1",
"final_url": "https://isure.stream.qqmusic.qq.com/F000003Iu5fo0mXVj2.flac?guid=07a6ed25231dbd6eae583d9f30bf2c9b&vkey=2E911C2A201A724AB1A1BD54F1A6F04A33502486729C22216F859BB158CF01224F25BE46CBD567BA23EF329BE2FDF547ABB6A76F5013E35C__v2b94c723&uin=1152921504846230218&fromtag=119114&redirect=1",
"reason": null
}
},
@@ -222,34 +222,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 131.129,
"module_load": 197.798,
"init": 0.001,
"home": 0.001,
"category": 2164.058,
"detail": 995.291,
"home": 0.002,
"category": 1486.709,
"detail": 767.914,
"player": 0.005,
"url_check": 340.712,
"total": 3665.769
"url_check": 241.177,
"total": 2737.691
},
"counts": {
"classes": 6,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "index",
"vod_id": "714893288",
"flag": "UC",
"play_id": "https://drive.uc.cn/s/7afd104a3d294?public=1"
"vod_id": "714893349",
"flag": "夸克",
"play_id": "https://pan.quark.cn/s/ef57107cd16e||7"
},
"player": {
"parse": 0,
"url": "https://drive.uc.cn/s/7afd104a3d294?public=1",
"url": "https://pan.quark.cn/s/ef57107cd16e||7",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://drive.uc.cn/s/7afd104a3d294?public=1",
"final_url": "https://pan.quark.cn/s/ef57107cd16e%7C%7C7",
"reason": null
}
},
@@ -261,18 +261,18 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 168.322,
"module_load": 196.777,
"init": 0.001,
"home": 0.001,
"category": 2876.247,
"detail": 1921.434,
"player": 1635.223,
"url_check": 1383.371,
"total": 7989.136
"category": 2375.646,
"detail": 1704.09,
"player": 1922.4,
"url_check": 1857.686,
"total": 8101.199
},
"counts": {
"classes": 7,
"category_videos": 217,
"category_videos": 219,
"detail_videos": 1,
"episodes": 1
},
@@ -300,20 +300,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 124.224,
"init": 0.004,
"module_load": 193.764,
"init": 0.01,
"home": 0.001,
"category": 3052.975,
"detail": 1230.612,
"player": 0.002,
"url_check": 222.214,
"total": 4631.703
"category": 1486.463,
"detail": 1498.036,
"player": 0.003,
"url_check": 230.004,
"total": 3454.108
},
"counts": {
"classes": 5,
"category_videos": 42,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -339,25 +339,25 @@
"error": "playerContent 未返回播放地址",
"traceback": null,
"timings_ms": {
"module_load": 204.291,
"module_load": 193.134,
"init": 0.001,
"home": 2134.181,
"category": 1741.735,
"detail": 2873.841,
"player": 0.023,
"home": 2495.234,
"category": 1889.216,
"detail": 2753.514,
"player": 0.003,
"url_check": 0.0,
"total": 11525.489
"total": 11618.472
},
"counts": {
"classes": 5,
"category_videos": 25,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "37032135",
"flag": "quark#1",
"flag": "quark#2",
"play_id": "quark"
},
"player": {
@@ -373,39 +373,39 @@
{
"spider": "世纪音乐",
"file": "世纪音乐.txt",
"success": true,
"failed_stage": null,
"error": null,
"success": false,
"failed_stage": "detail",
"error": "详情缺少播放源或播放列表",
"traceback": null,
"timings_ms": {
"module_load": 175.732,
"module_load": 190.978,
"init": 0.001,
"home": 265.692,
"category": 173.929,
"detail": 175.061,
"player": 0.007,
"url_check": 548.032,
"total": 1339.098
"home": 233.706,
"category": 0.008,
"detail": 135.915,
"player": 0.0,
"url_check": 0.0,
"total": 700.275
},
"counts": {
"classes": 5,
"category_videos": 28,
"category_videos": 3,
"detail_videos": 1,
"episodes": 1
"episodes": 0
},
"samples": {
"tid": "home",
"vod_id": "song:hwtdtnkmet",
"flag": "世纪音乐",
"play_id": "music:hwtdtnkmet"
"tid": "rank_list",
"vod_id": "rank:rise",
"flag": null,
"play_id": null
},
"player": {
"parse": 0,
"url": "https://www.4c44.com/data/down.php?ac=music&id=hwtdtnkmet",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://m701.music.126.net/20260513160444/f104984c1e672cf0b85980f80867bba0/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/26773661370/7b0d/7964/1eef/ce1382fdf47c606f2d6302dd0afd3924.mp3?vuutv=iR1Tu/DWH8NxeYgc40w/lryiLMvvfvneq1XOKbZOwWroTqhifcxNzAzXv4hsIcaq02kQu/mmL4gk8SiZv5e/JjKlC7I13MHAyQNtsR//Hi0=",
"parse": null,
"url": "",
"valid": false,
"reachable": null,
"status_code": null,
"final_url": "",
"reason": null
}
},
@@ -417,14 +417,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 209.98,
"init": 0.001,
"module_load": 208.709,
"init": 0.003,
"home": 0.001,
"category": 1114.881,
"detail": 994.938,
"player": 2386.058,
"url_check": 1359.779,
"total": 6066.358
"category": 1123.47,
"detail": 1031.365,
"player": 2019.249,
"url_check": 1393.969,
"total": 5806.232
},
"counts": {
"classes": 14,
@@ -456,14 +456,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 190.153,
"module_load": 191.491,
"init": 0.001,
"home": 844.605,
"category": 960.063,
"detail": 3814.681,
"home": 1020.347,
"category": 1335.235,
"detail": 3743.724,
"player": 0.031,
"url_check": 2415.399,
"total": 18333.407
"url_check": 4656.085,
"total": 23906.756
},
"counts": {
"classes": 7,
@@ -483,7 +483,7 @@
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://d1jdnmkc1n5cn4.cloudfront.net/hls_overseas/11772e16cc79ca759a267fb5ea4253824545052d.m3u8",
"final_url": "https://d1jdnmkc1n5cn4.cloudfront.net/hls_overseas/39c1b9cbbb66c060fb43edf1c63293dae63c23af.m3u8",
"reason": null
}
},
@@ -493,16 +493,16 @@
"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 680, 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 405, 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",
"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": 192.727,
"module_load": 193.153,
"init": 0.001,
"home": 0.0,
"category": 10029.069,
"home": 0.001,
"category": 10031.26,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10226.407
"total": 10268.376
},
"counts": {
"classes": 5,
@@ -534,20 +534,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 133.983,
"init": 0.004,
"home": 0.002,
"category": 2654.329,
"detail": 1020.195,
"player": 0.004,
"url_check": 1541.639,
"total": 5385.512
"module_load": 192.785,
"init": 0.001,
"home": 0.001,
"category": 3936.107,
"detail": 1062.977,
"player": 0.008,
"url_check": 1427.847,
"total": 6661.737
},
"counts": {
"classes": 4,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -573,20 +573,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 131.395,
"module_load": 188.836,
"init": 0.001,
"home": 0.002,
"category": 2189.544,
"detail": 1558.768,
"player": 0.007,
"url_check": 1171.214,
"total": 5087.01
"home": 0.001,
"category": 1702.171,
"detail": 2082.836,
"player": 0.02,
"url_check": 1101.827,
"total": 5122.108
},
"counts": {
"classes": 4,
"category_videos": 10,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "movie/list_2",
@@ -612,14 +612,14 @@
"error": "HTTP 403",
"traceback": null,
"timings_ms": {
"module_load": 194.645,
"module_load": 195.189,
"init": 0.001,
"home": 273.929,
"category": 281.596,
"detail": 270.071,
"player": 350.995,
"url_check": 176.273,
"total": 2691.845
"home": 302.112,
"category": 302.626,
"detail": 274.782,
"player": 350.411,
"url_check": 202.652,
"total": 2873.764
},
"counts": {
"classes": 4,
@@ -635,11 +635,11 @@
},
"player": {
"parse": 0,
"url": "https://tfvu1gr3demttga51hctt8rzdkpy.ourdvsssvip.com:20443/ws-302.bwcgee.cn/d03d598a130371f188926733a68f0402/cc6df813bad94a13bce4851918016715-2498cc62f9f8dad4c656ed2c1c108944-ld.mp4?key=6a97dc0c0d76877214421551f7aa8cab&time=1778672386308&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=6fbb327bcdf34241a9024aedbd2b8991&hevc=false&seasonId=56609&wsiphost=ipdbme&wsrid_tag=6a042ac2_PS-CTU-01y7n22_41853-45140-s1t1778657986389&x-mamba-business-label=13551&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
"url": "https://tfvu1gr3dymt1ge31hcj3gezdrcy.ourdvsssvip.com:20443/ws-302.bwcgee.cn/d03d598a130371f188926733a68f0402/cc6df813bad94a13bce4851918016715-2498cc62f9f8dad4c656ed2c1c108944-ld.mp4?key=ee2c2d505dbbc9ec9cf41de47bb808af&time=1778673361845&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=de49c068f5a143f0863bd6ffc4554ef3&hevc=false&seasonId=56609&wsiphost=ipdbme&wsrid_tag=6a042e91_PS-CTU-01y7n22_39778-23764-s1t1778658961935&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://tfvu1gr3demttga51hctt8rzdkpy.ourdvsssvip.com:20443/ws-302.bwcgee.cn/d03d598a130371f188926733a68f0402/cc6df813bad94a13bce4851918016715-2498cc62f9f8dad4c656ed2c1c108944-ld.mp4?key=6a97dc0c0d76877214421551f7aa8cab&time=1778672386308&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=6fbb327bcdf34241a9024aedbd2b8991&hevc=false&seasonId=56609&wsiphost=ipdbme&wsrid_tag=6a042ac2_PS-CTU-01y7n22_41853-45140-s1t1778657986389&x-mamba-business-label=13551&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
"final_url": "https://tfvu1gr3dymt1ge31hcj3gezdrcy.ourdvsssvip.com:20443/ws-302.bwcgee.cn/d03d598a130371f188926733a68f0402/cc6df813bad94a13bce4851918016715-2498cc62f9f8dad4c656ed2c1c108944-ld.mp4?key=ee2c2d505dbbc9ec9cf41de47bb808af&time=1778673361845&clientType=web_pc&clientVersion=1.0.0&parseUsage=PLAY&uid=0&rk=de49c068f5a143f0863bd6ffc4554ef3&hevc=false&seasonId=56609&wsiphost=ipdbme&wsrid_tag=6a042e91_PS-CTU-01y7n22_39778-23764-s1t1778658961935&x-mamba-business-label=13423&redirect_cnt=0&ip_type=0&wshc=C&requery=0",
"reason": "HTTP 403"
}
},
@@ -651,14 +651,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.628,
"module_load": 13.074,
"init": 0.001,
"home": 0.001,
"category": 315.065,
"detail": 637.586,
"player": 0.002,
"url_check": 286.355,
"total": 1248.043
"category": 311.63,
"detail": 603.41,
"player": 0.004,
"url_check": 262.667,
"total": 1191.225
},
"counts": {
"classes": 6,
@@ -690,20 +690,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.458,
"module_load": 5.068,
"init": 0.001,
"home": 0.001,
"category": 1412.438,
"detail": 2728.376,
"category": 1554.047,
"detail": 1875.878,
"player": 0.01,
"url_check": 148.394,
"total": 4294.194
"url_check": 181.418,
"total": 3616.783
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "series",
@@ -725,66 +725,27 @@
"spider": "修罗",
"file": "修罗.txt",
"success": false,
"failed_stage": "url_check",
"error": "HTTPSConnectionPool(host='www.bde4.cc', port=443): Max retries exceeded with url: /510ED26DE4746A134A040FA9D3887C0C43FE6008AE1653283692892AB53C46E1FB4F9324C5397440F318FB7B0CEC8C5BFA89FD391A0645F0285AB8B70B632A6D.m3u8 (Caused by SSLError(SSLError(1, '[SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1081)')))",
"traceback": null,
"timings_ms": {
"module_load": 6.464,
"init": 0.001,
"home": 0.001,
"category": 1774.484,
"detail": 1465.353,
"player": 5482.801,
"url_check": 1746.765,
"total": 19245.485
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
},
"samples": {
"tid": "tv",
"vod_id": "hanju/26880",
"flag": "修罗直连",
"play_id": "play/26880-0"
},
"player": {
"parse": 0,
"url": "https://www.bde4.cc/510ED26DE4746A134A040FA9D3887C0C43FE6008AE1653283692892AB53C46E1FB4F9324C5397440F318FB7B0CEC8C5BFA89FD391A0645F0285AB8B70B632A6D.m3u8#maliva",
"valid": false,
"reachable": false,
"status_code": null,
"final_url": "https://www.bde4.cc/510ED26DE4746A134A040FA9D3887C0C43FE6008AE1653283692892AB53C46E1FB4F9324C5397440F318FB7B0CEC8C5BFA89FD391A0645F0285AB8B70B632A6D.m3u8#maliva",
"reason": "HTTPSConnectionPool(host='www.bde4.cc', port=443): Max retries exceeded with url: /510ED26DE4746A134A040FA9D3887C0C43FE6008AE1653283692892AB53C46E1FB4F9324C5397440F318FB7B0CEC8C5BFA89FD391A0645F0285AB8B70B632A6D.m3u8 (Caused by SSLError(SSLError(1, '[SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1081)')))"
}
},
{
"spider": "凡客TV",
"file": "凡客TV.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='fktv.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 534, in _make_request\n response = conn.getresponse()\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 571, in getresponse\n httplib_response = super().getresponse()\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 1450, in getresponse\n response.begin()\n ~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 336, in begin\n version, status, reason = self._read_status()\n ~~~~~~~~~~~~~~~~~^^\n File \"/home/harold/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/lib/python3.14/http/client.py\", line 297, in _read_status\n line = str(self.fp.readline(_MAXLINE + 1), \"iso-8859-1\")\n ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\nTimeoutError: The read operation timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 490, in increment\n raise reraise(type(error), error, _stacktrace)\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/util.py\", line 39, in reraise\n raise value\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\nurllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='fktv.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 680, 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 405, 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 157, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/凡客TV.txt\", line 68, in _request_html\nrequests.exceptions.ReadTimeout: HTTPSConnectionPool(host='fktv.me', port=443): Read timed out. (read timeout=10)\n",
"error": "HTTPSConnectionPool(host='v.xlys.ltd.ua', port=443): Max retries exceeded with url: /s/all/1?type=0 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='v.xlys.ltd.ua', port=443): Max retries exceeded with url: /s/all/1?type=0 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 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 145, in categoryContent\n File \"/home/harold/workspace/atv-spiders/py/base/spider.py\", line 145, in fetch\n rsp = requests.get(url, params=params, cookies=cookies, headers=headers, timeout=timeout, verify=verify,\n stream=stream, allow_redirects=allow_redirects)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='v.xlys.ltd.ua', port=443): Max retries exceeded with url: /s/all/1?type=0 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 4.294,
"module_load": 6.439,
"init": 0.001,
"home": 0.001,
"category": 10524.172,
"category": 3545.131,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 10530.053
"total": 3554.564
},
"counts": {
"classes": 8,
"classes": 4,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "1",
"tid": "movie",
"vod_id": null,
"flag": null,
"play_id": null
@@ -799,6 +760,45 @@
"reason": null
}
},
{
"spider": "凡客TV",
"file": "凡客TV.txt",
"success": true,
"failed_stage": null,
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.595,
"init": 0.0,
"home": 0.0,
"category": 1762.368,
"detail": 3291.304,
"player": 3114.156,
"url_check": 3022.685,
"total": 11195.454
},
"counts": {
"classes": 8,
"category_videos": 32,
"detail_videos": 1,
"episodes": 2
},
"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": 0,
"url": "https://fktv.me/ysapi/m3u8/p/0374ce7a2cf1600db26a182a79afed37.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://fktv.me/ysapi/m3u8/p/0374ce7a2cf1600db26a182a79afed37.m3u8",
"reason": null
}
},
{
"spider": "剧圈圈",
"file": "剧圈圈.txt",
@@ -807,20 +807,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.138,
"init": 0.001,
"module_load": 5.573,
"init": 0.0,
"home": 0.0,
"category": 5875.682,
"detail": 4732.787,
"player": 25095.135,
"url_check": 2754.653,
"total": 38463.955
"category": 10866.698,
"detail": 9863.832,
"player": 19397.424,
"url_check": 5937.101,
"total": 46071.234
},
"counts": {
"classes": 5,
"category_videos": 16,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "dianying",
@@ -846,20 +846,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.644,
"init": 0.007,
"home": 0.0,
"category": 1180.366,
"detail": 1437.29,
"player": 1623.368,
"url_check": 1831.572,
"total": 6078.292
"module_load": 5.868,
"init": 0.001,
"home": 0.001,
"category": 1112.16,
"detail": 1516.943,
"player": 1338.982,
"url_check": 1962.34,
"total": 5936.892
},
"counts": {
"classes": 6,
"category_videos": 150,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -885,14 +885,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.426,
"module_load": 4.118,
"init": 0.0,
"home": 3221.99,
"category": 299.253,
"detail": 832.541,
"home": 3205.526,
"category": 297.855,
"detail": 795.45,
"player": 0.002,
"url_check": 73.257,
"total": 4432.323
"url_check": 198.377,
"total": 4501.736
},
"counts": {
"classes": 11,
@@ -924,20 +924,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.216,
"init": 350.035,
"module_load": 4.824,
"init": 353.266,
"home": 0.004,
"category": 211.224,
"detail": 176.078,
"player": 0.003,
"url_check": 225.741,
"total": 967.158
"category": 201.85,
"detail": 186.792,
"player": 0.002,
"url_check": 239.075,
"total": 986.473
},
"counts": {
"classes": 7,
"category_videos": 15,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "ju",
@@ -963,14 +963,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.649,
"init": 84.613,
"module_load": 3.934,
"init": 82.766,
"home": 0.001,
"category": 193.89,
"detail": 506.64,
"player": 295.762,
"url_check": 180.869,
"total": 1265.958
"category": 192.03,
"detail": 479.948,
"player": 334.591,
"url_check": 112.003,
"total": 1205.913
},
"counts": {
"classes": 11,
@@ -986,11 +986,11 @@
},
"player": {
"parse": 0,
"url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=be590b59ebfd30051465f34c4b76a4d5&buy_key=FM&token=2833&timestamp=1778657989&duration=453",
"url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=7ca0ab9df5256b6117c608761786a86d&buy_key=FM&token=1422&timestamp=1778658964&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=be590b59ebfd30051465f34c4b76a4d5&buy_key=FM&token=2833&timestamp=1778657989&duration=453",
"final_url": "http://audiopay.cos.tx.xmcdn.com/download/1.0.0/storages/b817-audiopay/16/AA/GKwRIaIGGaRGADgE-gEx_hMS-aacv2-48K.m4a?sign=7ca0ab9df5256b6117c608761786a86d&buy_key=FM&token=1422&timestamp=1778658964&duration=453",
"reason": null
}
},
@@ -1002,14 +1002,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.547,
"init": 0.001,
"home": 1571.97,
"category": 1478.899,
"detail": 2943.78,
"player": 2523.145,
"url_check": 163.394,
"total": 8692.275
"module_load": 6.895,
"init": 0.0,
"home": 2792.107,
"category": 1860.648,
"detail": 2316.131,
"player": 2608.303,
"url_check": 171.544,
"total": 9756.673
},
"counts": {
"classes": 8,
@@ -1041,14 +1041,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.518,
"module_load": 7.25,
"init": 0.005,
"home": 1698.255,
"category": 1241.794,
"detail": 1315.193,
"player": 3132.989,
"url_check": 112.961,
"total": 7510.269
"home": 1438.651,
"category": 2305.593,
"detail": 1089.266,
"player": 3493.742,
"url_check": 104.68,
"total": 8439.948
},
"counts": {
"classes": 3,
@@ -1064,11 +1064,11 @@
},
"player": {
"parse": 0,
"url": "https://p26-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/c87332e45fc54a998855db93afefd79b~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1809761995&x-signature=OOGxIO65Jw45EI%2Fe%2BIZxY9xtR4s%3D",
"url": "https://p26-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/c87332e45fc54a998855db93afefd79b~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1809762972&x-signature=o7ssihI0fg4URBasC5gQDz0w5Vk%3D",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://p26-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/c87332e45fc54a998855db93afefd79b~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1809761995&x-signature=OOGxIO65Jw45EI%2Fe%2BIZxY9xtR4s%3D",
"final_url": "https://p26-bot-workflow-sign.byteimg.com/tos-cn-i-mdko3gqilj/c87332e45fc54a998855db93afefd79b~tplv-mdko3gqilj-image.image?rk3s=81d4c505&x-expires=1809762972&x-signature=o7ssihI0fg4URBasC5gQDz0w5Vk%3D",
"reason": null
}
},
@@ -1078,16 +1078,16 @@
"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 680, 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 405, 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.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",
"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 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.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": 3.783,
"init": 0.0,
"home": 0.0,
"category": 990.825,
"module_load": 4.317,
"init": 0.001,
"home": 0.001,
"category": 992.576,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 996.699
"total": 1000.949
},
"counts": {
"classes": 5,
@@ -1119,14 +1119,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.584,
"module_load": 6.64,
"init": 0.001,
"home": 0.001,
"category": 1312.527,
"detail": 2757.9,
"player": 1384.372,
"url_check": 298.13,
"total": 5761.078
"category": 880.17,
"detail": 1744.459,
"player": 1267.759,
"url_check": 249.427,
"total": 4149.015
},
"counts": {
"classes": 6,
@@ -1158,20 +1158,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.412,
"init": 0.0,
"home": 0.0,
"category": 1462.07,
"detail": 1141.689,
"player": 0.003,
"url_check": 2175.203,
"total": 4783.945
"module_load": 10.325,
"init": 0.001,
"home": 0.002,
"category": 2485.666,
"detail": 2068.18,
"player": 0.007,
"url_check": 1282.291,
"total": 5847.091
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1197,20 +1197,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.497,
"module_load": 3.938,
"init": 0.001,
"home": 0.007,
"category": 2318.163,
"detail": 2429.192,
"player": 0.009,
"url_check": 1482.274,
"total": 6235.425
"category": 2967.476,
"detail": 1018.303,
"player": 0.007,
"url_check": 1869.088,
"total": 5860.073
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1236,20 +1236,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.112,
"init": 0.0,
"module_load": 7.64,
"init": 0.001,
"home": 0.001,
"category": 1320.712,
"detail": 2109.485,
"player": 1867.764,
"url_check": 381.528,
"total": 5685.241
"category": 1528.18,
"detail": 1082.63,
"player": 1702.142,
"url_check": 319.996,
"total": 4640.994
},
"counts": {
"classes": 4,
"category_videos": 24,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1259,11 +1259,11 @@
},
"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=20260513T073955Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260513%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=dc59721722300678d08b3d9e21d058af88b7b686ebf221946bf71dcd4194091f",
"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=20260513T075609Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260513%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=10a35bf043b278f1109d8545beba72d8aa1f7af189041c7f96197028b9e198c2",
"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=20260513T073955Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260513%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=dc59721722300678d08b3d9e21d058af88b7b686ebf221946bf71dcd4194091f",
"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=20260513T075609Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AH4RWOMWLEL7ROYSF2S5%2F20260513%2Fcidc-rp-2006%2Fs3%2Faws4_request&t=2&u=1261698636582652615&ot=family&oi=1263000283947275586&f=FibTFWRt8ncqZsYDWQP5LF5BI3oB5_LXK&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=10a35bf043b278f1109d8545beba72d8aa1f7af189041c7f96197028b9e198c2",
"reason": null
}
},
@@ -1275,34 +1275,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.291,
"init": 0.025,
"home": 217.648,
"category": 288.145,
"detail": 1090.758,
"player": 0.001,
"url_check": 427.779,
"total": 2028.145
"module_load": 3.763,
"init": 0.017,
"home": 249.373,
"category": 282.302,
"detail": 303.577,
"player": 0.003,
"url_check": 274.798,
"total": 1115.059
},
"counts": {
"classes": 30,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "都市",
"vod_id": "110000044555935694",
"flag": "1080P",
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778657991&sign=23cb3b499a9ea78413751955203963d6"
"play_id": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778658966&sign=401eb2dd4a6074cb8135f08f5fe3a014"
},
"player": {
"parse": 0,
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778657991&sign=23cb3b499a9ea78413751955203963d6",
"url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778658966&sign=401eb2dd4a6074cb8135f08f5fe3a014",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778657991&sign=23cb3b499a9ea78413751955203963d6",
"final_url": "https://tv-video.cdn.drama.9ddm.com/22/A0/22A0BFFF46651CC23355B115F6307653.mp4?timestamp=1778658966&sign=401eb2dd4a6074cb8135f08f5fe3a014",
"reason": null
}
},
@@ -1314,14 +1314,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.96,
"init": 0.0,
"home": 0.0,
"category": 2037.309,
"detail": 1885.628,
"player": 858.275,
"url_check": 1657.381,
"total": 6443.381
"module_load": 6.268,
"init": 0.001,
"home": 0.001,
"category": 849.102,
"detail": 1194.539,
"player": 1854.909,
"url_check": 1493.521,
"total": 5398.942
},
"counts": {
"classes": 5,
@@ -1353,14 +1353,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.43,
"init": 0.0,
"home": 0.0,
"category": 469.515,
"detail": 773.907,
"player": 0.003,
"url_check": 118.887,
"total": 1366.262
"module_load": 3.838,
"init": 0.001,
"home": 0.001,
"category": 496.54,
"detail": 781.788,
"player": 0.005,
"url_check": 167.536,
"total": 1450.145
},
"counts": {
"classes": 5,
@@ -1392,14 +1392,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.12,
"module_load": 6.826,
"init": 0.001,
"home": 0.0,
"category": 1449.892,
"detail": 976.665,
"home": 0.001,
"category": 1370.185,
"detail": 1414.446,
"player": 0.007,
"url_check": 293.566,
"total": 2724.674
"url_check": 273.372,
"total": 3065.315
},
"counts": {
"classes": 7,
@@ -1431,34 +1431,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.46,
"module_load": 4.269,
"init": 0.001,
"home": 0.001,
"category": 3100.89,
"detail": 2208.242,
"player": 2386.582,
"url_check": 1733.238,
"total": 22201.522
"category": 2441.621,
"detail": 3277.579,
"player": 4835.983,
"url_check": 2658.62,
"total": 18224.888
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "riman",
"vod_id": "/detail/18824/",
"flag": "高清",
"play_id": "/play/18824-1-1/"
"tid": "guoman",
"vod_id": "/detail/18721/",
"flag": "ikun",
"play_id": "/play/18721-2-1/"
},
"player": {
"parse": 0,
"url": "https://cdn.vvvip-plays33.cc/20260408/11535_86d5cf1c/index.m3u8",
"url": "https://player.yzzyvip-35.com/20260412/4499_5e51eeda/index.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://cdn.vvvip-plays33.cc/20260408/11535_86d5cf1c/index.m3u8",
"final_url": "https://player.yzzyvip-35.com/20260412/4499_5e51eeda/index.m3u8",
"reason": null
}
},
@@ -1470,14 +1470,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.666,
"init": 3413.535,
"home": 1845.768,
"category": 1769.888,
"detail": 1625.051,
"player": 8802.659,
"url_check": 1322.706,
"total": 18788.102
"module_load": 5.087,
"init": 4021.453,
"home": 1338.27,
"category": 1783.266,
"detail": 2435.528,
"player": 10622.449,
"url_check": 3387.685,
"total": 23594.338
},
"counts": {
"classes": 8,
@@ -1493,11 +1493,11 @@
},
"player": {
"parse": 0,
"url": "https://usaydd.5gwcft9h.com/m3u87/share/6937197/7133173/20260414/171420/1080/index.m3u8?sign=32bd02c2e574569036c0cf4c09e0811e&t=1778658007",
"url": "https://usaydd.5gwcft9h.com/m3u87/share/6937197/7133173/20260414/171420/1080/index.m3u8?sign=1aa35006f6682d042e4256e4d3d47479&t=1778658984",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://usaydd.5gwcft9h.com/m3u87/share/6937197/7133173/20260414/171420/1080/index.m3u8?sign=32bd02c2e574569036c0cf4c09e0811e&t=1778658007",
"final_url": "https://usaydd.5gwcft9h.com/m3u87/share/6937197/7133173/20260414/171420/1080/index.m3u8?sign=1aa35006f6682d042e4256e4d3d47479&t=1778658984",
"reason": null
}
},
@@ -1509,20 +1509,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.18,
"module_load": 3.899,
"init": 0.001,
"home": 0.001,
"category": 1074.249,
"detail": 763.176,
"player": 0.007,
"url_check": 1258.732,
"total": 3108.053
"category": 961.726,
"detail": 731.602,
"player": 0.005,
"url_check": 1257.994,
"total": 2955.582
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1548,14 +1548,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.344,
"module_load": 5.648,
"init": 0.0,
"home": 388.828,
"category": 680.163,
"detail": 1079.121,
"player": 0.073,
"url_check": 151.171,
"total": 2307.024
"home": 588.051,
"category": 672.7,
"detail": 1465.829,
"player": 0.02,
"url_check": 65.202,
"total": 13499.686
},
"counts": {
"classes": 10,
@@ -1564,18 +1564,18 @@
"episodes": 1
},
"samples": {
"tid": "462",
"vod_id": "/drama/41000186435@@听见胎宝心声后,我逆袭了",
"tid": "1102",
"vod_id": "/drama/41000178001@@忘川煞主,黎扶问天",
"flag": "河马剧场",
"play_id": "https://dzzt-video.cbread.cn/c19afa5d10d6a73a77324e76acf3017c/6a0564e0/58/5x3/53x4/534x6/53468100014/612428785_1/612428785.720p.narrowv3.mp4"
"play_id": "https://dzzt-video.cbread.cn/b40b446b37f11a11935c37cb9426bae7/6a052ca0/59/1x0/10x0/100x8/10087100014/612118395_1/612118395.720p.narrowv3.mp4"
},
"player": {
"parse": 0,
"url": "https://dzzt-video.cbread.cn/c19afa5d10d6a73a77324e76acf3017c/6a0564e0/58/5x3/53x4/534x6/53468100014/612428785_1/612428785.720p.narrowv3.mp4",
"url": "https://dzzt-video.cbread.cn/b40b446b37f11a11935c37cb9426bae7/6a052ca0/59/1x0/10x0/100x8/10087100014/612118395_1/612118395.720p.narrowv3.mp4",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://dzzt-video.cbread.cn/c19afa5d10d6a73a77324e76acf3017c/6a0564e0/58/5x3/53x4/534x6/53468100014/612428785_1/612428785.720p.narrowv3.mp4",
"final_url": "https://dzzt-video.cbread.cn/b40b446b37f11a11935c37cb9426bae7/6a052ca0/59/1x0/10x0/100x8/10087100014/612118395_1/612118395.720p.narrowv3.mp4",
"reason": null
}
},
@@ -1584,27 +1584,27 @@
"file": "滴答影视.txt",
"success": false,
"failed_stage": "unexpected",
"error": "HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /detail/3033.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.didahd.pro', port=443) at 0x7c59fdc27b10>, 'Connection to www.didahd.pro timed out. (connect timeout=10)'))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 204, in _new_conn\n sock = connection.create_connection(\n (self._dns_host, self.port),\n ...<2 lines>...\n socket_options=self.socket_options,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\n ~~~~~~~~~~~~^^^^\nTimeoutError: timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 759, in connect\n self.sock = sock = self._new_conn()\n ~~~~~~~~~~~~~~^^\nurllib3.exceptions.ConnectTimeoutError: (<HTTPSConnection(host='www.didahd.pro', port=443) at 0x7c59fdc27b10>, 'Connection to www.didahd.pro timed out. (connect timeout=10)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /detail/3033.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.didahd.pro', port=443) at 0x7c59fdc27b10>, 'Connection to www.didahd.pro 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 680, 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 421, in _validate_from_tid\n detail_result = _run_timed(result[\"timings_ms\"], \"detail\", spider.detailContent, clock, [vod_id])\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 291, in _run_timed\n return func(*args, **kwargs)\n File \"/home/harold/workspace/tvbox-resources/py/滴答影视.txt\", line 335, in detailContent\n File \"/home/harold/workspace/tvbox-resources/py/滴答影视.txt\", line 138, in _request_html\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /detail/3033.html (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.didahd.pro', port=443) at 0x7c59fdc27b10>, 'Connection to www.didahd.pro timed out. (connect timeout=10)'))\n",
"error": "HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /show/1--time------1--- (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))",
"traceback": "Traceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 464, in _make_request\n self._validate_conn(conn)\n ~~~~~~~~~~~~~~~~~~~^^^^^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 1093, in _validate_conn\n conn.connect()\n ~~~~~~~~~~~~^^\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 796, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n sock=sock,\n ...<14 lines>...\n assert_fingerprint=self.assert_fingerprint,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connection.py\", line 975, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n sock=sock,\n ...<8 lines>...\n tls_in_tls=tls_in_tls,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py\", line 483, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\nssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 787, in urlopen\n response = self._make_request(\n conn,\n ...<10 lines>...\n **response_kw,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 488, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/requests/adapters.py\", line 645, in send\n resp = conn.urlopen(\n method=request.method,\n ...<9 lines>...\n chunked=chunked,\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/connectionpool.py\", line 841, in urlopen\n retries = retries.increment(\n method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]\n )\n File \"/home/harold/workspace/atv-spiders/py/.venv/lib/python3.14/site-packages/urllib3/util/retry.py\", line 535, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /show/1--time------1--- (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/home/harold/workspace/atv-spiders/py/validate_spiders.py\", line 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 181, in categoryContent\n File \"/home/harold/workspace/tvbox-resources/py/滴答影视.txt\", line 138, in _request_html\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='www.didahd.pro', port=443): Max retries exceeded with url: /show/1--time------1--- (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1081)')))\n",
"timings_ms": {
"module_load": 13.971,
"module_load": 8.067,
"init": 0.001,
"home": 0.001,
"category": 1088.304,
"detail": 10012.328,
"category": 4137.085,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 11116.58
"total": 4147.514
},
"counts": {
"classes": 5,
"category_videos": 48,
"category_videos": 0,
"detail_videos": 0,
"episodes": 0
},
"samples": {
"tid": "1",
"vod_id": "detail/3033",
"vod_id": null,
"flag": null,
"play_id": null
},
@@ -1626,20 +1626,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.84,
"module_load": 3.978,
"init": 0.002,
"home": 122.762,
"category": 125.114,
"detail": 155.48,
"player": 290.252,
"url_check": 100.619,
"total": 798.499
"home": 117.346,
"category": 114.231,
"detail": 173.748,
"player": 310.25,
"url_check": 92.331,
"total": 812.299
},
"counts": {
"classes": 10,
"category_videos": 12,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "10",
@@ -1649,11 +1649,11 @@
},
"player": {
"parse": 0,
"url": "http://43.248.100.143:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778657996216&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
"url": "http://210.16.164.82:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778658993416&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://43.248.100.143:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778657996216&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
"final_url": "http://210.16.164.82:9090/nby/m3u8/getM3u8?name=jx.91by.top&time=1778658993416&url=NBY-e84585334a25c5b49078dfac81549a0b.m3u8",
"reason": null
}
},
@@ -1665,18 +1665,18 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 12.144,
"init": 0.019,
"home": 4934.668,
"category": 478.219,
"detail": 183.204,
"player": 0.002,
"url_check": 153.186,
"total": 5762.326
"module_load": 11.465,
"init": 0.02,
"home": 3329.636,
"category": 896.983,
"detail": 210.558,
"player": 0.001,
"url_check": 169.771,
"total": 4619.477
},
"counts": {
"classes": 11,
"category_videos": 60,
"category_videos": 48,
"detail_videos": 1,
"episodes": 1
},
@@ -1704,14 +1704,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 11.12,
"module_load": 4.547,
"init": 0.001,
"home": 0.001,
"category": 937.818,
"detail": 946.865,
"player": 1388.893,
"url_check": 1144.876,
"total": 4430.201
"category": 1948.451,
"detail": 980.356,
"player": 961.365,
"url_check": 843.833,
"total": 4739.016
},
"counts": {
"classes": 6,
@@ -1743,20 +1743,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.991,
"init": 0.0,
"home": 0.001,
"category": 1219.094,
"detail": 894.986,
"player": 0.006,
"url_check": 1372.511,
"total": 3491.179
"module_load": 3.608,
"init": 0.001,
"home": 0.0,
"category": 804.312,
"detail": 1167.576,
"player": 0.014,
"url_check": 1210.04,
"total": 3186.598
},
"counts": {
"classes": 8,
"category_videos": 70,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1782,20 +1782,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.049,
"module_load": 6.646,
"init": 0.001,
"home": 0.05,
"category": 1137.28,
"detail": 1590.285,
"home": 0.106,
"category": 1250.858,
"detail": 943.979,
"player": 0.002,
"url_check": 1853.049,
"total": 4589.242
"url_check": 1007.201,
"total": 3209.328
},
"counts": {
"classes": 10,
"category_videos": 70,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "site_wanou",
@@ -1821,20 +1821,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.333,
"module_load": 5.187,
"init": 0.001,
"home": 0.021,
"category": 1265.742,
"detail": 2433.164,
"player": 982.047,
"url_check": 82.776,
"total": 4770.185
"home": 0.018,
"category": 1107.126,
"detail": 2482.353,
"player": 864.856,
"url_check": 190.435,
"total": 4650.85
},
"counts": {
"classes": 5,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -1844,11 +1844,11 @@
},
"player": {
"parse": 0,
"url": "https://vd.hxcztech.com/2b564078504dbf878e100611f8b6a6ff/20260513154001/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"url": "https://vd.hxcztech.com/6feb7f0ed75309b03d284b2f2ea5a2be/20260513155614/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/2b564078504dbf878e100611f8b6a6ff/20260513154001/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"final_url": "https://vd.hxcztech.com/6feb7f0ed75309b03d284b2f2ea5a2be/20260513155614/decry/vd/20260311/MjYwZjE1YTRkO/172631/1998_1080/aac/h264/hls/decrypt/index.m3u8",
"reason": null
}
},
@@ -1860,14 +1860,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.382,
"init": 0.001,
"home": 445.761,
"category": 275.183,
"detail": 546.971,
"player": 320.296,
"url_check": 76.235,
"total": 1668.31
"module_load": 3.441,
"init": 0.0,
"home": 411.304,
"category": 273.306,
"detail": 874.975,
"player": 268.847,
"url_check": 71.79,
"total": 1904.101
},
"counts": {
"classes": 29,
@@ -1883,11 +1883,11 @@
},
"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-hnb",
"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-hnb",
"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
}
},
@@ -1899,14 +1899,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.388,
"module_load": 4.097,
"init": 0.001,
"home": 351.792,
"category": 276.441,
"detail": 296.247,
"player": 0.019,
"url_check": 179.204,
"total": 1108.684
"home": 349.552,
"category": 357.067,
"detail": 297.081,
"player": 0.04,
"url_check": 188.087,
"total": 1196.478
},
"counts": {
"classes": 8,
@@ -1938,20 +1938,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.262,
"module_load": 5.607,
"init": 0.001,
"home": 0.0,
"category": 1259.556,
"detail": 877.537,
"player": 2668.565,
"url_check": 1548.694,
"total": 6360.178
"home": 0.001,
"category": 744.649,
"detail": 847.916,
"player": 816.857,
"url_check": 1236.232,
"total": 3651.917
},
"counts": {
"classes": 4,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "/",
@@ -1977,14 +1977,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 17.8,
"init": 691.549,
"home": 0.095,
"category": 789.213,
"detail": 372.348,
"player": 0.004,
"url_check": 85.993,
"total": 1957.706
"module_load": 24.031,
"init": 695.079,
"home": 0.107,
"category": 477.253,
"detail": 346.129,
"player": 0.002,
"url_check": 84.514,
"total": 1627.819
},
"counts": {
"classes": 11,
@@ -2016,14 +2016,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.457,
"module_load": 3.666,
"init": 0.001,
"home": 0.0,
"category": 1500.604,
"detail": 1283.427,
"home": 0.001,
"category": 1626.572,
"detail": 882.804,
"player": 0.005,
"url_check": 226.741,
"total": 3015.052
"url_check": 254.924,
"total": 2768.412
},
"counts": {
"classes": 2,
@@ -2055,14 +2055,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 9.875,
"module_load": 5.355,
"init": 0.001,
"home": 523.526,
"category": 706.213,
"detail": 175.596,
"player": 302.982,
"url_check": 359.829,
"total": 2078.59
"home": 463.077,
"category": 856.365,
"detail": 159.361,
"player": 330.051,
"url_check": 327.713,
"total": 2142.94
},
"counts": {
"classes": 7,
@@ -2092,16 +2092,16 @@
"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 680, 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 446, 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 291, 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",
"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 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 467, 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 291, 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": 2.887,
"module_load": 3.726,
"init": 0.001,
"home": 422.182,
"category": 433.116,
"detail": 0.005,
"player": 198.018,
"home": 414.176,
"category": 400.569,
"detail": 0.006,
"player": 189.333,
"url_check": 0.0,
"total": 1058.159
"total": 1010.282
},
"counts": {
"classes": 62,
@@ -2133,14 +2133,14 @@
"error": "分类视频列表为空",
"traceback": null,
"timings_ms": {
"module_load": 9.117,
"module_load": 4.174,
"init": 0.001,
"home": 0.0,
"category": 4007.706,
"home": 0.001,
"category": 4670.677,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 7165.539
"total": 6885.346
},
"counts": {
"classes": 6,
@@ -2172,14 +2172,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.362,
"module_load": 5.327,
"init": 0.001,
"home": 128.695,
"category": 314.516,
"detail": 684.667,
"player": 0.003,
"url_check": 238.794,
"total": 1372.8
"home": 241.758,
"category": 249.507,
"detail": 742.709,
"player": 0.002,
"url_check": 361.72,
"total": 1601.597
},
"counts": {
"classes": 7,
@@ -2211,14 +2211,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.057,
"init": 0.0,
"module_load": 3.612,
"init": 0.001,
"home": 0.0,
"category": 1763.908,
"detail": 2158.491,
"category": 1478.213,
"detail": 2003.834,
"player": 0.013,
"url_check": 221.306,
"total": 4148.9
"url_check": 213.685,
"total": 3699.82
},
"counts": {
"classes": 7,
@@ -2250,34 +2250,34 @@
"error": "HTTP 404",
"traceback": null,
"timings_ms": {
"module_load": 6.527,
"init": 0.001,
"home": 2852.997,
"category": 1842.688,
"detail": 1318.657,
"player": 3780.588,
"url_check": 1136.986,
"total": 20611.525
"module_load": 5.353,
"init": 0.0,
"home": 1385.749,
"category": 2475.981,
"detail": 2179.274,
"player": 4392.349,
"url_check": 2114.613,
"total": 34891.424
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "detail/video/120767",
"flag": "BF有广8",
"play_id": "play/120767-1-1"
"vod_id": "detail/video/120765",
"flag": "LZ有广6",
"play_id": "play/120765-2-1"
},
"player": {
"parse": 0,
"url": "https://v10.baofeng10.com/video/youlingzhijia/ebb5c0437b6f/index.m3u8",
"url": "https://v.lzcdn27.com/20260429/9522_1d6c5be7/index.m3u8",
"valid": false,
"reachable": false,
"status_code": 404,
"final_url": "https://v10.baofeng10.com/video/youlingzhijia/ebb5c0437b6f/index.m3u8",
"final_url": "https://v.lzcdn27.com/20260429/9522_1d6c5be7/index.m3u8",
"reason": "HTTP 404"
}
},
@@ -2289,20 +2289,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 5.545,
"module_load": 6.268,
"init": 0.001,
"home": 0.001,
"category": 2559.1,
"detail": 2904.53,
"player": 0.009,
"url_check": 2118.861,
"total": 7588.857
"category": 2394.683,
"detail": 2905.775,
"player": 0.018,
"url_check": 1258.964,
"total": 6566.261
},
"counts": {
"classes": 6,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -2328,20 +2328,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.297,
"module_load": 5.793,
"init": 0.001,
"home": 0.001,
"category": 1254.309,
"detail": 1896.143,
"player": 0.007,
"url_check": 1630.503,
"total": 4785.846
"category": 1741.846,
"detail": 1988.629,
"player": 0.003,
"url_check": 1225.265,
"total": 4962.002
},
"counts": {
"classes": 7,
"category_videos": 72,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "29",
@@ -2367,20 +2367,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.947,
"module_load": 4.926,
"init": 0.001,
"home": 0.001,
"category": 2249.772,
"detail": 1958.291,
"player": 1855.382,
"url_check": 3011.162,
"total": 9080.118
"category": 3112.303,
"detail": 1912.65,
"player": 1850.944,
"url_check": 2827.346,
"total": 9709.155
},
"counts": {
"classes": 4,
"category_videos": 36,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "1",
@@ -2406,14 +2406,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 18.759,
"module_load": 10.119,
"init": 0.001,
"home": 3083.798,
"category": 1404.871,
"detail": 2483.464,
"player": 1201.353,
"url_check": 1015.183,
"total": 9208.202
"home": 3359.907,
"category": 2851.078,
"detail": 2468.366,
"player": 2232.035,
"url_check": 2542.056,
"total": 13464.212
},
"counts": {
"classes": 6,
@@ -2445,34 +2445,34 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.229,
"module_load": 6.528,
"init": 0.001,
"home": 0.001,
"category": 1491.675,
"detail": 1134.593,
"player": 2307.905,
"url_check": 1028.137,
"total": 15021.26
"category": 1555.821,
"detail": 2457.675,
"player": 5529.653,
"url_check": 1826.559,
"total": 17037.702
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "7",
"vod_id": "detail/5770.html",
"flag": "播放节点列表X box聚合 聚合线路",
"play_id": "play/5770_1_1.html"
"tid": "6",
"vod_id": "detail/8037.html",
"flag": "dev云播",
"play_id": "play/8037_2_1.html"
},
"player": {
"parse": 1,
"url": "https://www.lmm85.com/play/5770_1_1.html",
"parse": 0,
"url": "https://v16.toutiao50.com/7fb917023e86868a461f3ef26698bc9a/6a057f90/video/tos/alisg/tos-alisg-ve-0051c001-sg/owL5ueUTlAndDIFpIKiDnbICgDKeI4DFGeGAQG/",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://www.lmm85.com/play/5770_1_1.html",
"final_url": "https://v16.toutiao50.com/7fb917023e86868a461f3ef26698bc9a/6a057f90/video/tos/alisg/tos-alisg-ve-0051c001-sg/owL5ueUTlAndDIFpIKiDnbICgDKeI4DFGeGAQG/",
"reason": null
}
},
@@ -2484,14 +2484,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 8.968,
"init": 0.001,
"home": 404.19,
"category": 94.669,
"detail": 3584.664,
"player": 155.34,
"url_check": 76.152,
"total": 4325.053
"module_load": 4.852,
"init": 0.0,
"home": 406.325,
"category": 96.2,
"detail": 3574.616,
"player": 136.93,
"url_check": 110.186,
"total": 4330.112
},
"counts": {
"classes": 4,
@@ -2507,11 +2507,11 @@
},
"player": {
"parse": 0,
"url": "http://lv.sycdn.kuwo.cn/34a094f0667b4fe3aa7bd19db4505721/6a042ad5/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"url": "http://lv.sycdn.kuwo.cn/565841b66f5e4aeeec594ccbccaaca04/6a042ea4/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://lv.sycdn.kuwo.cn/34a094f0667b4fe3aa7bd19db4505721/6a042ad5/resource/30106/trackmedia/long/M500002ZiI9a1sctnS.mp3?bitrate$128&format$mp3&source$kwplayerhd_ar_4.3.0.8_tianbao_T1A_qirui.apk&type$convert_url_with_sign&user$&loginUid$",
"final_url": "http://lv.sycdn.kuwo.cn/565841b66f5e4aeeec594ccbccaaca04/6a042ea4/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
}
},
@@ -2523,14 +2523,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 7.978,
"init": 531.455,
"home": 345.297,
"category": 281.727,
"detail": 331.296,
"player": 392.389,
"url_check": 137.881,
"total": 2029.567
"module_load": 9.515,
"init": 508.349,
"home": 308.196,
"category": 296.91,
"detail": 298.166,
"player": 375.127,
"url_check": 54.977,
"total": 1852.47
},
"counts": {
"classes": 12,
@@ -2540,17 +2540,17 @@
},
"samples": {
"tid": "recommend",
"vod_id": "584399626",
"vod_id": "683696681",
"flag": "酷狗音乐",
"play_id": "584399626"
"play_id": "683696681"
},
"player": {
"parse": 0,
"url": "http://fsdg360.tx.kugou.com/202605131540/f0f74f9e8968eea2bcfe8770f8f7bdf5/v3/65b21ce18e93fc9750217ce8793e456a/yp/p_0_960159/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx584399626_qu128_s3134496769.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"url": "http://fsdg360.tx.kugou.com/202605131556/d08d4b9f24d490998fe2282d70194228/v3/514042531c765ea943c645e3dc9e18ef/yp/p_0_960163/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx683696681_qu128_s375673881.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "http://fsdg360.tx.kugou.com/202605131540/f0f74f9e8968eea2bcfe8770f8f7bdf5/v3/65b21ce18e93fc9750217ce8793e456a/yp/p_0_960159/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx584399626_qu128_s3134496769.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"final_url": "http://fsdg360.tx.kugou.com/202605131556/d08d4b9f24d490998fe2282d70194228/v3/514042531c765ea943c645e3dc9e18ef/yp/p_0_960163/ap1013_us0_mic85f71c379c462618de1399950957c33_pi6101_mx683696681_qu128_s375673881.mp3?ft=car_203559_10049&fts=b05bb02d44717442054bac7624ed9a29&ext=.mp3",
"reason": null
}
},
@@ -2562,14 +2562,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.159,
"module_load": 3.909,
"init": 0.001,
"home": 695.139,
"category": 243.556,
"detail": 240.201,
"player": 240.95,
"url_check": 553.055,
"total": 1977.644
"home": 1247.186,
"category": 361.922,
"detail": 270.98,
"player": 263.88,
"url_check": 1104.61,
"total": 3253.04
},
"counts": {
"classes": 4,
@@ -2585,11 +2585,11 @@
},
"player": {
"parse": 0,
"url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1778658004-34554755c4a74eaca3af03288dacae1d-0-7464c1adbdbe22678ea66b32c8c587cb",
"url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1778658978-8c8ae46f0efd47f9ba5653d96d56a965-0-d83ea16de07021efc76cc2879f7229dc",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1778658004-34554755c4a74eaca3af03288dacae1d-0-7464c1adbdbe22678ea66b32c8c587cb",
"final_url": "https://ppvod011.blbtgg.com/splitOut/20260318/1267932/V20260318194542050871267932/index.m3u8?auth_key=1778658978-8c8ae46f0efd47f9ba5653d96d56a965-0-d83ea16de07021efc76cc2879f7229dc",
"reason": null
}
},
@@ -2601,14 +2601,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 6.052,
"module_load": 3.722,
"init": 0.001,
"home": 0.001,
"category": 6610.37,
"detail": 5797.254,
"player": 0.004,
"url_check": 1092.647,
"total": 13507.213
"category": 6687.027,
"detail": 7726.549,
"player": 0.013,
"url_check": 213.658,
"total": 14631.47
},
"counts": {
"classes": 5,
@@ -2618,17 +2618,17 @@
},
"samples": {
"tid": "1",
"vod_id": "/index.php/vod/detail/id/185903.html",
"flag": "百度#闪电",
"play_id": "https://pan.baidu.com/s/1hxalL4JYwZ5Td9Hc-V4qpw?pwd=6688"
"vod_id": "/index.php/vod/detail/id/185906.html",
"flag": "夸克#闪电",
"play_id": "https://pan.quark.cn/s/8aaa2a68473f"
},
"player": {
"parse": 0,
"url": "https://pan.baidu.com/s/1hxalL4JYwZ5Td9Hc-V4qpw?pwd=6688",
"url": "https://pan.quark.cn/s/8aaa2a68473f",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://pan.baidu.com/share/init?surl=hxalL4JYwZ5Td9Hc-V4qpw&pwd=6688",
"final_url": "https://pan.quark.cn/s/8aaa2a68473f",
"reason": null
}
},
@@ -2640,14 +2640,14 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 3.739,
"module_load": 3.728,
"init": 0.0,
"home": 0.0,
"category": 4212.798,
"detail": 3550.682,
"player": 4129.971,
"url_check": 1226.956,
"total": 13125.165
"category": 5572.069,
"detail": 5668.501,
"player": 5586.602,
"url_check": 2241.232,
"total": 19072.632
},
"counts": {
"classes": 4,
@@ -2679,14 +2679,14 @@
"error": "分类列表为空",
"traceback": null,
"timings_ms": {
"module_load": 10.465,
"init": 0.002,
"home": 2203.473,
"module_load": 4.852,
"init": 0.001,
"home": 3180.88,
"category": 0.0,
"detail": 0.0,
"player": 0.0,
"url_check": 0.0,
"total": 2214.214
"total": 3185.885
},
"counts": {
"classes": 0,
@@ -2715,38 +2715,38 @@
"file": "麦田影院.txt",
"success": false,
"failed_stage": "url_check",
"error": "不支持的地址协议: empty",
"error": "HTTP 404",
"traceback": null,
"timings_ms": {
"module_load": 7.683,
"module_load": 4.843,
"init": 0.001,
"home": 0.0,
"category": 690.536,
"detail": 1707.705,
"player": 0.058,
"url_check": 0.155,
"total": 5953.563
"home": 0.001,
"category": 1673.415,
"detail": 1772.154,
"player": 0.021,
"url_check": 2629.461,
"total": 12872.745
},
"counts": {
"classes": 6,
"category_videos": 20,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "2",
"vod_id": "155698",
"flag": "NB源",
"play_id": "eyJ1cmwiOiJOQlktWE1ZQUVTNzg3ZTYyNWU2YWVhZjE5NWJlNTkwZDI3NDFlMjFjYzdmOTAxNjA4N2M3YjgwYjFhMTU1NjcxMmUzZDdlYmExMWMxN2I1ODYwYjJlYThhYTAwYjNjYjc3YzA3Y2QwZmFlfGUwM2Q1N2MxMzUzNDM1MDcxYTU3ZDI2MDI2NDM5YmVmIiwicGFyc2VfYXBpIjoiaHR0cHM6Ly9hcGkubmJ5anNvbi50b3A6Nzc4OC9hcGkvP2tleT13czlMejFFdHFmVTA5QXpaS2wmdXJsPSIsImhlYWRlcnMiOnt9LCJ1c2VyX2FnZW50IjoiIn0="
"flag": "LZ源",
"play_id": "eyJ1cmwiOiJodHRwczovL3YubHpjZG4yOC5jb20vMjAyNTA5MjMvMjMyNl9hOWJmMjM0YS9pbmRleC5tM3U4IiwicGFyc2VfYXBpIjoiaHR0cHM6Ly9kZWwubXQzMjAuY29tL2x6ZmYucGhwP3VybD0iLCJoZWFkZXJzIjp7fSwidXNlcl9hZ2VudCI6IiJ9"
},
"player": {
"parse": 0,
"url": "NBY-XMYAES787e625e6aeaf195be590d2741e21cc7f9016087c7b80b1a1556712e3d7eba11c17b5860b2ea8aa00b3cb77c07cd0fae|e03d57c1353435071a57d26026439bef",
"url": "https://v.lzcdn28.com/20250923/2326_a9bf234a/index.m3u8",
"valid": false,
"reachable": false,
"status_code": null,
"final_url": "NBY-XMYAES787e625e6aeaf195be590d2741e21cc7f9016087c7b80b1a1556712e3d7eba11c17b5860b2ea8aa00b3cb77c07cd0fae|e03d57c1353435071a57d26026439bef",
"reason": "不支持的地址协议: empty"
"status_code": 404,
"final_url": "https://v.lzcdn28.com/20250923/2326_a9bf234a/index.m3u8",
"reason": "HTTP 404"
}
},
{
@@ -2757,20 +2757,20 @@
"error": null,
"traceback": null,
"timings_ms": {
"module_load": 4.923,
"init": 0.001,
"home": 2219.437,
"category": 1021.911,
"detail": 900.056,
"player": 857.225,
"url_check": 449.398,
"total": 9031.154
"module_load": 6.076,
"init": 0.002,
"home": 2289.01,
"category": 2007.951,
"detail": 1876.385,
"player": 2025.645,
"url_check": 424.04,
"total": 22431.227
},
"counts": {
"classes": 5,
"category_videos": 30,
"detail_videos": 1,
"episodes": 1
"episodes": 2
},
"samples": {
"tid": "2",
@@ -2780,11 +2780,11 @@
},
"player": {
"parse": 0,
"url": "https://v3-cold1.douyinvod.com/2f1e0e52d118173b1c9ec4a809957844/6a047faf/video/tos/cn/tos-cn-v-5f73e7/osQcEbBAgpo1HIulqOIoBBF3aaACDofiBgeqD1/",
"url": "https://v3-cold1.douyinvod.com/bf20fa06b4a7e8c55831946d1a15d0a9/6a048bf1/video/tos/cn/tos-cn-v-5f73e7/osQcEbBAgpo1HIulqOIoBBF3aaACDofiBgeqD1/",
"valid": true,
"reachable": true,
"status_code": 200,
"final_url": "https://v3-cold1.douyinvod.com/2f1e0e52d118173b1c9ec4a809957844/6a047faf/video/tos/cn/tos-cn-v-5f73e7/osQcEbBAgpo1HIulqOIoBBF3aaACDofiBgeqD1/",
"final_url": "https://v3-cold1.douyinvod.com/bf20fa06b4a7e8c55831946d1a15d0a9/6a048bf1/video/tos/cn/tos-cn-v-5f73e7/osQcEbBAgpo1HIulqOIoBBF3aaACDofiBgeqD1/",
"reason": null
}
}