From 6c40909155e8561de1fa5091bddcc8bb6ef98231 Mon Sep 17 00:00:00 2001 From: "Issues Docs [BOT]" Date: Mon, 25 May 2026 14:15:55 +0000 Subject: [PATCH] =?UTF-8?q?Auto-Generate=20docs=20=F0=9F=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/issues/811.md | 247 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) diff --git a/docs/issues/811.md b/docs/issues/811.md index 7ef3bf3..cc82c78 100644 --- a/docs/issues/811.md +++ b/docs/issues/811.md @@ -254,4 +254,251 @@ LXServer(1.8.1)端是正常的 --- +### 评论 16 - boluofan +> > Internal +> +> 大佬你好,我看到这个之后把lxserver 降级到了1.8.1,但是貌似1.8.1没有token设置,无法获取token,接口测试通过,但是拉取歌单一直报401错误,求助这个x-user-token该怎么填。最新版的lxserver 可以拉取到歌单,但是一直无法获取播放地址,已放弃最新版。![Screenshot_2026-05-23-09-15-00-667_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/936140a8-1610-4516-ba54-7b066e4e3a60) +> +> ![Screenshot_2026-05-23-08-57-27-299_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/5b73f726-c11d-4f3c-ade7-0266e5cabfa6) +> +> ![Screenshot_2026-05-23-09-24-20-760_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/a5344a98-804f-4565-ba3a-36356efbde51) +> +> ![Screenshot_2026-05-23-09-24-15-800_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/78ff4bc1-600e-4440-9b4a-96aa14f7a362) + +老版本比较早不支持配置token,也不能获取用户歌单。新版本拉取lxserver歌单后转换成xm歌单不能播放吗?在线搜索的歌曲呢? +--- + +### 评论 17 - zealler9560 +> > > Internal +> > +> > 大佬你好,我看到这个之后把lxserver 降级到了1.8.1,但是貌似1.8.1没有token设置,无法获取token,接口测试通过,但是拉取歌单一直报401错误,求助这个x-user-token该怎么填。最新版的lxserver 可以拉取到歌单,但是一直无法获取播放地址,已放弃最新版。![Screenshot_2026-05-23-09-15-00-667_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/936140a8-1610-4516-ba54-7b066e4e3a60) +> > +> > ![Screenshot_2026-05-23-08-57-27-299_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/5b73f726-c11d-4f3c-ade7-0266e5cabfa6) +> > +> > ![Screenshot_2026-05-23-09-24-20-760_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/a5344a98-804f-4565-ba3a-36356efbde51) +> > +> > ![Screenshot_2026-05-23-09-24-15-800_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/78ff4bc1-600e-4440-9b4a-96aa14f7a362) +> +> 老版本比较早不支持配置token,也不能获取用户歌单。新版本拉取lxserver歌单后转换成xm歌单不能播放吗?在线搜索的歌曲呢? + +![Screenshot_2026-05-23-12-07-52-339_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/aab76d8d-6452-4260-9d33-a4f3323720ee) + +大佬我用的0.5.5版本的xiaomusic,1.8.1版本的lxserver,上面不是说1.8.2版本以后有token限制吗,我特地从最新版降到了1.8.1,而且实测lxserver 1.8.2及最新版什么都能过,就是获取不到歌曲播放地址,放歌都是一秒多的静音。现在的问题是lxserver 1.8.1虽然接口测试通过,直接拉不到歌单,每次都是错误401不知道x-user-token 这个怎么设置。总结一下就是lxserver 接口用不了 +--- + +### 评论 18 - zealler9560 +> > > Internal +> > +> > 大佬你好,我看到这个之后把lxserver 降级到了1.8.1,但是貌似1.8.1没有token设置,无法获取token,接口测试通过,但是拉取歌单一直报401错误,求助这个x-user-token该怎么填。最新版的lxserver 可以拉取到歌单,但是一直无法获取播放地址,已放弃最新版。![Screenshot_2026-05-23-09-15-00-667_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/936140a8-1610-4516-ba54-7b066e4e3a60) +> > +> > ![Screenshot_2026-05-23-08-57-27-299_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/5b73f726-c11d-4f3c-ade7-0266e5cabfa6) +> > +> > ![Screenshot_2026-05-23-09-24-20-760_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/a5344a98-804f-4565-ba3a-36356efbde51) +> > +> > ![Screenshot_2026-05-23-09-24-15-800_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/78ff4bc1-600e-4440-9b4a-96aa14f7a362) +> +> 老版本比较早不支持配置token,也不能获取用户歌单。新版本拉取lxserver歌单后转换成xm歌单不能播放吗?在线搜索的歌曲呢? + +使用新版本lxserver 以后只有无法播放歌曲这一个问题 +# GitHub Issue 脱敏版草稿 + +## 问题描述 +XiaoMusic 播放 LXServer 在线歌单里的歌曲时,歌曲 URL 解析失败。表现为多次请求 LXServer `/api/music/url` 超时,部分情况下返回 `500 Internal Server Error`,随后 XiaoMusic 认为是死链并触发连续死链熔断。 + +## 环境 +- XiaoMusic: 0.5.5 +- LXServer: 1.9.3 +- 运行环境:Docker / OpenWrt / iStoreOS +- 播放来源:LXServer 在线歌单 / webPush +- 涉及接口: + - `http://[LAN_IP]:[LXSERVER_PORT]/api/music/url` + - `http://[XIAOMUSIC_HOST]:[PUBLIC_PORT]/proxy/music?token=[REDACTED]` + +## 关键日志摘录(已脱敏) + +```text +[2026-05-23 15:05:07] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:小兔子乖乖-贝乐虎儿歌, url:self:///api/proxy/plugin-url?data=[REDACTED] +[2026-05-23 15:05:07] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:[PUBLIC_PORT]/proxy/music?token=[REDACTED] +[2026-05-23 15:05:26] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url +[2026-05-23 15:05:47] [0.5.5] [WARNING] device_player.py:400: 探路超时或网络异常(插件解析失败): +[2026-05-23 15:05:47] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 1 + +[2026-05-23 15:06:08] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url +[2026-05-23 15:06:08] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 2 + +[2026-05-23 15:06:28] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url +[2026-05-23 15:06:28] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 3 + +[2026-05-23 15:06:48] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url +[2026-05-23 15:06:48] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 4 + +[2026-05-23 15:07:09] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url +[2026-05-23 15:07:09] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 5 +[2026-05-23 15:07:09] [0.5.5] [ERROR] device_player.py:408: 连续 5 次获取歌曲死链,触发第一层终极熔断! + +[2026-05-23 15:07:12] [0.5.5] [ERROR] js_plugin_manager.py:1228: HTTP Error at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url: 500 Internal Server Error +[2026-05-23 15:07:57] [0.5.5] [ERROR] js_plugin_manager.py:1228: HTTP Error at http://[LAN_IP]:[LXSERVER_PORT]/api/music/url: 500 Internal Server Error +``` + +## 观察 +1. XiaoMusic 能启动,能登录小米账号,能识别设备,也能读取本地/在线歌单。 +2. `/api/lxServer/userList` 在这份日志里返回 200,说明这次不是歌单列表 401 问题。 +3. 失败集中在播放时向 LXServer 请求 `/api/music/url`,出现超时和 500。 +4. 失败后代理回退到了 `static/silence.mp3`,所以实际播放可能是静音文件或跳过,之后连续死链计数增加并触发熔断。 + +## 期望 +希望开发者确认: +- `/api/music/url` 超时/500 时,XiaoMusic 是否可以输出更明确的 LXServer 返回体或错误原因; +- 对 LXServer URL 解析失败时,是否能区分“上游音乐源失败”和“XiaoMusic 代理失败”; +- 是否可以避免日志里输出完整 `music_list_json` / `plugin-url?data=`,这些内容过长且包含个人歌单信息。 + +--- + +### 评论 19 - zealler9560 +> > > Internal +> > +> > 大佬你好,我看到这个之后把lxserver 降级到了1.8.1,但是貌似1.8.1没有token设置,无法获取token,接口测试通过,但是拉取歌单一直报401错误,求助这个x-user-token该怎么填。最新版的lxserver 可以拉取到歌单,但是一直无法获取播放地址,已放弃最新版。![Screenshot_2026-05-23-09-15-00-667_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/936140a8-1610-4516-ba54-7b066e4e3a60) +> > +> > ![Screenshot_2026-05-23-08-57-27-299_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/5b73f726-c11d-4f3c-ade7-0266e5cabfa6) +> > +> > ![Screenshot_2026-05-23-09-24-20-760_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/a5344a98-804f-4565-ba3a-36356efbde51) +> > +> > ![Screenshot_2026-05-23-09-24-15-800_com.android.chrome.jpg](https://gproxy.hanxi.cc/proxy/user-attachments/assets/78ff4bc1-600e-4440-9b4a-96aa14f7a362) +> +> 老版本比较早不支持配置token,也不能获取用户歌单。新版本拉取lxserver歌单后转换成xm歌单不能播放吗?在线搜索的歌曲呢? + +# XiaoMusic / LXServer issue log - detailed redacted excerpt + +## Environment +- XiaoMusic: 0.5.5 +- LXServer: 1.8.1, inferred from user-provided context +- Runtime: OpenWrt/iStoreOS + Docker, inferred from user-provided context +- Sensitive fields have been redacted. + +## Problem summary +Online playlist can be listed/pulled, but playback fails while resolving the real music URL through LXServer. The repeated failing endpoint is: + +```text +http://[LAN_IP]:9526/api/music/url +``` + +Observed results: +- Multiple `Request timeout` events on `/api/music/url` +- Later `500 Internal Server Error` on `/api/music/url` +- XiaoMusic redirects failed tracks to `/static/silence.mp3` +- Consecutive dead-link counter reaches 5 and triggers final fuse/breaker + +## Redaction summary +- Account/phone, cookies, passwords, HTTP auth, WebSocket tokens, proxy tokens, Authorization values removed +- Xiaomi device identifiers, DID, device ID, serial, MAC, profile blobs, device name removed +- LAN/Docker/public IPs replaced with placeholders; ports preserved +- Music-list JSON, plugin-url base64 payload, song metadata, artwork URLs, and long playlist contents removed + +## Counts from original log +```json +{ + "source_size_bytes": 2137571, + "normalized_log_lines": 744, + "redacted_full_lines": 376, + "github_selected_lines": 145, + "request_timeout_count": 5, + "http_500_count": 2, + "dead_link_count_markers": 8, + "terminal_fuse_count": 1, + "api_music_url_count": 7, + "api_lxserver_userlist_200_count": 1 +} +``` + +## Selected redacted log +```text +[2026-05-23 15:04:31] [0.5.5] [INFO] xiaomusic.py:164: Startup OK. Config(account='[REDACTED_ACCOUNT]', password='[REDACTED_PASSWORD]', mi_did='[REDACTED_DID]', hostname='http://[LAN_IP]', port=8090, public_port=58090, search_prefix='bilisearch:', use_music_api=False, active_cmd='[REDACTED_ACTIVE_CMD_LIST]', music_list_json='[REDACTED_MUSIC_LIST_JSON]', devices='[REDACTED_DEVICE_LIST]', web_music_proxy=True, qrcode_timeout=120) +[2026-05-23 15:04:34] [0.5.5] [INFO] auth.py:151: 登录完成. [REDACTED_LOGIN_ACCOUNT] +[2026-05-23 15:04:34] [0.5.5] [INFO] auth.py:240: 选中的设备: [REDACTED_DEVICE_SELECTION] +[2026-05-23 15:05:07] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:07] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:07] [0.5.5] [INFO] playlist.py:40: playmusiclist [REDACTED_DID] listname:[REDACTED_PLAYLIST_NAME] musicname:[REDACTED_MUSIC_NAME] +[2026-05-23 15:05:26] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:26] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:26] [0.5.5] [INFO] device_player.py:381: 极速探路启动,触发后端代理解析: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:26] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:26] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:26] [0.5.5] [INFO] file.py:1142: [proxy:87ad8326] start is_radio=False url=self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:26] [0.5.5] [INFO] music_library.py:1281: 链接处理前 $ParseResult(scheme='self', netloc='', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') +[2026-05-23 15:05:26] [0.5.5] [INFO] file.py:1145: [proxy:87ad8326] expand_self_url parsed=ParseResult(scheme='http', netloc='[LAN_IP]:58090', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') final_url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:26] [0.5.5] [INFO] file.py:1219: [proxy:87ad8326] initial GET url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:05:26] [0.5.5] [INFO] playlist.py:40: playmusiclist [REDACTED_DID] listname:[REDACTED_PLAYLIST_NAME] musicname:[REDACTED_MUSIC_NAME] +[2026-05-23 15:05:46] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:46] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:46] [0.5.5] [INFO] device_player.py:381: 极速探路启动,触发后端代理解析: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:05:46] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:9526/api/music/url +[2026-05-23 15:05:47] [0.5.5] [INFO] music.py:138: plugin-url {[REDACTED_PLUGIN_MUSIC_METADATA]} +[2026-05-23 15:05:47] [0.5.5] [INFO] [DOCKER_GATEWAY]:50738 - "GET /api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] HTTP/1.1" 307 +[2026-05-23 15:05:47] [0.5.5] [WARNING] device_player.py:400: 探路超时或网络异常(插件解析失败): +[2026-05-23 15:05:47] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 1 +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1230: [proxy:87ad8326] redirect#1 status=307 from=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] to=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1246: [proxy:87ad8326] redirect target resolved=http://[LAN_IP]:58090/static/silence.mp3 netloc=[LAN_IP]:58090 headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1142: [proxy:c12018df] start is_radio=False url=self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:47] [0.5.5] [INFO] music_library.py:1281: 链接处理前 $ParseResult(scheme='self', netloc='', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1145: [proxy:c12018df] expand_self_url parsed=ParseResult(scheme='http', netloc='[LAN_IP]:58090', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') final_url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1219: [proxy:c12018df] initial GET url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:05:47] [0.5.5] [INFO] [DOCKER_GATEWAY]:50738 - "GET /static/silence.mp3 HTTP/1.1" 200 +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1267: [proxy:87ad8326] final response status=200 resp_url=http://[LAN_IP]:58090/static/silence.mp3 content_type=audio/mpeg content_length=8721 +[2026-05-23 15:05:47] [0.5.5] [INFO] file.py:1361: [proxy:87ad8326] stream finished total_bytes=12247 resp_url=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:05:47] [0.5.5] [INFO] device_player.py:319: 开始播放下一首 +[2026-05-23 15:06:08] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:08] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:08] [0.5.5] [INFO] device_player.py:381: 极速探路启动,触发后端代理解析: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:08] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:9526/api/music/url +[2026-05-23 15:06:08] [0.5.5] [INFO] music.py:138: plugin-url {[REDACTED_PLUGIN_MUSIC_METADATA]} +[2026-05-23 15:06:08] [0.5.5] [INFO] [DOCKER_GATEWAY]:40702 - "GET /api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] HTTP/1.1" 307 +[2026-05-23 15:06:08] [0.5.5] [WARNING] device_player.py:400: 探路超时或网络异常(插件解析失败): +[2026-05-23 15:06:08] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 2 +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1230: [proxy:c12018df] redirect#1 status=307 from=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] to=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1246: [proxy:c12018df] redirect target resolved=http://[LAN_IP]:58090/static/silence.mp3 netloc=[LAN_IP]:58090 headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1142: [proxy:63967b85] start is_radio=False url=self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:08] [0.5.5] [INFO] music_library.py:1281: 链接处理前 $ParseResult(scheme='self', netloc='', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]==', fragment='') +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1145: [proxy:63967b85] expand_self_url parsed=ParseResult(scheme='http', netloc='[LAN_IP]:58090', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]==', fragment='') final_url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1219: [proxy:63967b85] initial GET url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:06:08] [0.5.5] [INFO] [DOCKER_GATEWAY]:41740 - "GET /api/lxServer/load HTTP/1.1" 200 +[2026-05-23 15:06:08] [0.5.5] [INFO] [DOCKER_GATEWAY]:40702 - "GET /static/silence.mp3 HTTP/1.1" 200 +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1267: [proxy:c12018df] final response status=200 resp_url=http://[LAN_IP]:58090/static/silence.mp3 content_type=audio/mpeg content_length=8721 +[2026-05-23 15:06:08] [0.5.5] [INFO] file.py:1361: [proxy:c12018df] stream finished total_bytes=12247 resp_url=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:06:08] [0.5.5] [INFO] js_plugin_manager.py:1573: 同步LXServer歌单: http://[LAN_IP]:9526/api/user/list +[2026-05-23 15:06:08] [0.5.5] [INFO] device_player.py:319: 开始播放下一首 +[2026-05-23 15:06:28] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:28] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:28] [0.5.5] [INFO] device_player.py:381: 极速探路启动,触发后端代理解析: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:28] [0.5.5] [INFO] [DOCKER_GATEWAY]:41740 - "GET /api/lxServer/pullPlaylist HTTP/1.1" 200 +[2026-05-23 15:06:28] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:9526/api/music/url +[2026-05-23 15:06:28] [0.5.5] [INFO] music.py:138: plugin-url {[REDACTED_PLUGIN_MUSIC_METADATA]} +[2026-05-23 15:06:28] [0.5.5] [INFO] [DOCKER_GATEWAY]:57538 - "GET /api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] HTTP/1.1" 307 +[2026-05-23 15:06:28] [0.5.5] [WARNING] device_player.py:400: 探路超时或网络异常(插件解析失败): +[2026-05-23 15:06:28] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 3 +[2026-05-23 15:06:28] [0.5.5] [INFO] file.py:1230: [proxy:63967b85] redirect#1 status=307 from=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] to=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:06:28] [0.5.5] [INFO] file.py:1246: [proxy:63967b85] redirect target resolved=http://[LAN_IP]:58090/static/silence.mp3 netloc=[LAN_IP]:58090 headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:06:28] [0.5.5] [INFO] file.py:1142: [proxy:8929ff66] start is_radio=False url=self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:28] [0.5.5] [INFO] music_library.py:1281: 链接处理前 $ParseResult(scheme='self', netloc='', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') +[2026-05-23 15:06:28] [0.5.5] [INFO] file.py:1145: [proxy:8929ff66] expand_self_url parsed=ParseResult(scheme='http', netloc='[LAN_IP]:58090', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') final_url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:28] [0.5.5] [INFO] file.py:1219: [proxy:8929ff66] initial GET url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:06:29] [0.5.5] [INFO] device_player.py:319: 开始播放下一首 +[2026-05-23 15:06:48] [0.5.5] [INFO] music_library.py:1101: get_music_url web music. name:[REDACTED_MUSIC_NAME], url:self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:48] [0.5.5] [INFO] music_library.py:1211: Using token proxy url: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:48] [0.5.5] [INFO] device_player.py:381: 极速探路启动,触发后端代理解析: http://[LAN_IP]:58090/proxy/music?token=[REDACTED_TOKEN] +[2026-05-23 15:06:48] [0.5.5] [INFO] [DOCKER_GATEWAY]:57538 - "GET /static/silence.mp3 HTTP/1.1" 200 +[2026-05-23 15:06:48] [0.5.5] [WARNING] device_player.py:400: 探路超时或网络异常(插件解析失败): +[2026-05-23 15:06:48] [0.5.5] [WARNING] device_player.py:405: 当前连续死链次数: 4 +[2026-05-23 15:06:48] [0.5.5] [ERROR] js_plugin_manager.py:1231: Request timeout at http://[LAN_IP]:9526/api/music/url +[2026-05-23 15:06:48] [0.5.5] [INFO] music.py:138: plugin-url {[REDACTED_PLUGIN_MUSIC_METADATA]} +[2026-05-23 15:06:48] [0.5.5] [INFO] [DOCKER_GATEWAY]:39340 - "GET /api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] HTTP/1.1" 307 +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1267: [proxy:63967b85] final response status=200 resp_url=http://[LAN_IP]:58090/static/silence.mp3 content_type=audio/mpeg content_length=8721 +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1361: [proxy:63967b85] stream finished total_bytes=12247 resp_url=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1230: [proxy:8929ff66] redirect#1 status=307 from=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] to=http://[LAN_IP]:58090/static/silence.mp3 +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1246: [proxy:8929ff66] redirect target resolved=http://[LAN_IP]:58090/static/silence.mp3 netloc=[LAN_IP]:58090 headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWSER_HINT]', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '[REDACTED_PLATFORM_HINT]', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': '[REDACTED_USER_AGENT]', 'Authorization': '[REDACTED_AUTH]'} +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1142: [proxy:a553d902] start is_radio=False url=self:///api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:48] [0.5.5] [INFO] music_library.py:1281: 链接处理前 $ParseResult(scheme='self', netloc='', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1145: [proxy:a553d902] expand_self_url parsed=ParseResult(scheme='http', netloc='[LAN_IP]:58090', path='/api/proxy/plugin-url', params='', query='[REDACTED_LONG_TOKEN_OR_BASE64]=', fragment='') final_url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] +[2026-05-23 15:06:48] [0.5.5] [INFO] file.py:1219: [proxy:a553d902] initial GET url=http://[LAN_IP]:58090/api/proxy/plugin-url?data=[REDACTED_MUSIC_PAYLOAD] headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'priority': 'u=0, i', 'sec-ch-ua': '[REDACTED_BROWS +--- + [Issue 链接](https://github.com/hanxi/xiaomusic/issues/811)