From 9bdf78277ea1d107e36b2c7eb71b8bb3f180633f Mon Sep 17 00:00:00 2001 From: boluofan <40459801+boluofan@users.noreply.github.com> Date: Mon, 12 Jan 2026 09:05:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=9C=AA=E5=8A=A0=E8=BD=BD=E6=8F=92=E4=BB=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E7=A6=81=E7=94=A8bug=20(#666)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新版本标识 * 修复开放接口部分音源链接不能直接播放bug * 修复异常未加载插件无法禁用bug * 更新版本标识 --- xiaomusic/js_plugin_manager.py | 68 +++++++++++----------- xiaomusic/music_url.py | 6 +- xiaomusic/static/onlineSearch/config.js | 6 ++ xiaomusic/static/onlineSearch/index.html | 30 +++++++++- xiaomusic/static/onlineSearch/setting.html | 35 ++++++++++- 5 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 xiaomusic/static/onlineSearch/config.js diff --git a/xiaomusic/js_plugin_manager.py b/xiaomusic/js_plugin_manager.py index e6865c8..3a313d1 100644 --- a/xiaomusic/js_plugin_manager.py +++ b/xiaomusic/js_plugin_manager.py @@ -1020,48 +1020,48 @@ class JSPluginManager: # 禁用插件 def disable_plugin(self, plugin_name: str) -> bool: + # 读取、修改 插件配置json文件:① 将plugins_info属性中对于的插件状态改为禁用、2:将 enabled_plugins中对应插件移除 if plugin_name in self.plugins: self.plugins[plugin_name]["enabled"] = False - # 读取、修改 插件配置json文件:① 将plugins_info属性中对于的插件状态改为禁用、2:将 enabled_plugins中对应插件移除 - # 同步更新配置文件 - try: - # 使用自定义的配置文件路径 - config_file_path = self.plugins_config_path + # 同步更新配置文件 + try: + # 使用自定义的配置文件路径 + config_file_path = self.plugins_config_path - # 读取现有配置 - if os.path.exists(config_file_path): - with open(config_file_path, encoding="utf-8") as f: - config_data = json.load(f) + # 读取现有配置 + if os.path.exists(config_file_path): + with open(config_file_path, encoding="utf-8") as f: + config_data = json.load(f) - # 更新plugins_info中对应插件的状态 - for plugin_info in config_data.get("plugins_info", []): - if plugin_info.get("name") == plugin_name: - plugin_info["enabled"] = False + # 更新plugins_info中对应插件的状态 + for plugin_info in config_data.get("plugins_info", []): + if plugin_info.get("name") == plugin_name: + plugin_info["enabled"] = False - # 添加到enabled_plugins中(如果不存在) - if "enabled_plugins" not in config_data: - config_data["enabled_plugins"] = [] + # 添加到enabled_plugins中(如果不存在) + if "enabled_plugins" not in config_data: + config_data["enabled_plugins"] = [] - if plugin_name in config_data["enabled_plugins"]: - # 移除对应的插件名 - config_data["enabled_plugins"].remove(plugin_name) + if plugin_name in config_data["enabled_plugins"]: + # 移除对应的插件名 + config_data["enabled_plugins"].remove(plugin_name) - # 写回配置文件 - with open(config_file_path, "w", encoding="utf-8") as f: - json.dump(config_data, f, ensure_ascii=False, indent=2) - # 清空缓存: - self._invalidate_config_cache() - self.log.info( - f"Plugin config updated for enabled plugin {plugin_name}" - ) - # 更新插件引擎 - self.reload_plugins() - except Exception as e: - self.log.error( - f"Failed to update plugin config when enabling {plugin_name}: {e}" + # 写回配置文件 + with open(config_file_path, "w", encoding="utf-8") as f: + json.dump(config_data, f, ensure_ascii=False, indent=2) + # 清空缓存: + self._invalidate_config_cache() + self.log.info( + f"Plugin config updated for enabled plugin {plugin_name}" ) - return True - return False + # 更新插件引擎 + self.reload_plugins() + except Exception as e: + self.log.error( + f"Failed to update plugin config when enabling {plugin_name}: {e}" + ) + return False + return True # 卸载插件 def uninstall_plugin(self, plugin_name: str) -> bool: diff --git a/xiaomusic/music_url.py b/xiaomusic/music_url.py index 7754c5c..a160f32 100644 --- a/xiaomusic/music_url.py +++ b/xiaomusic/music_url.py @@ -193,8 +193,12 @@ class MusicUrlHandler: # 默认使用 未经过【网络歌曲代理】的连接,如不存在说明 未启用【网络歌曲代理】,使用proxy_url request_url = origin_url if origin_url else proxy_url source_url = await self.get_play_url(request_url) + out_url = source_url + # 开放接口中,部分音源的链接不是直接可播放的MP3链接(/**.mp3?guid=**&vkey=**&uin=**),还需要进一步提取 + if "?" in source_url and "&" in source_url: + out_url = self._get_proxy_url(source_url) sec = await self._get_online_music_duration(name, source_url) - return sec, source_url + return sec, out_url async def _get_web_music_duration(self, name, url, origin_url): """获取网络音乐时长 diff --git a/xiaomusic/static/onlineSearch/config.js b/xiaomusic/static/onlineSearch/config.js new file mode 100644 index 0000000..43f4328 --- /dev/null +++ b/xiaomusic/static/onlineSearch/config.js @@ -0,0 +1,6 @@ +// config.js +window.appConfig = { + // TODO 版本号 + version: "1.0.4", + // 其他配置项可继续添加 +}; diff --git a/xiaomusic/static/onlineSearch/index.html b/xiaomusic/static/onlineSearch/index.html index 67e28af..d834361 100644 --- a/xiaomusic/static/onlineSearch/index.html +++ b/xiaomusic/static/onlineSearch/index.html @@ -4,6 +4,8 @@ 在线音乐搜索 + +