mirror of
https://github.com/hanxi/xiaomusic.git
synced 2026-03-18 08:43:17 +08:00
fix: 修复异常未加载插件无法禁用bug (#666)
* 更新版本标识 * 修复开放接口部分音源链接不能直接播放bug * 修复异常未加载插件无法禁用bug * 更新版本标识
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
"""获取网络音乐时长
|
||||
|
||||
6
xiaomusic/static/onlineSearch/config.js
vendored
Normal file
6
xiaomusic/static/onlineSearch/config.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// config.js
|
||||
window.appConfig = {
|
||||
// TODO 版本号
|
||||
version: "1.0.4",
|
||||
// 其他配置项可继续添加
|
||||
};
|
||||
30
xiaomusic/static/onlineSearch/index.html
vendored
30
xiaomusic/static/onlineSearch/index.html
vendored
@@ -4,6 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no">
|
||||
<title>在线音乐搜索</title>
|
||||
<!-- ... 公共配置 ... -->
|
||||
<script src="./config.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
@@ -21,12 +23,27 @@
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.version-info {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 20px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
/* 调整 header 内容的 padding,避免与版本信息重叠 */
|
||||
.header {
|
||||
background: #31c27c;
|
||||
color: white;
|
||||
padding: 20px;
|
||||
padding: 20px 20px 20px 60px; /* 左边增加留白 */
|
||||
text-align: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.search-section {
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid #eee;
|
||||
@@ -731,6 +748,9 @@
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>在线音乐搜索</h1>
|
||||
<div class="version-info">
|
||||
<span id="versionSpan"></span>
|
||||
</div>
|
||||
<p>通过 MusicFree音源插件、开放音乐接口 搜索在线音乐</p>
|
||||
<!-- 顶部居中按钮 -->
|
||||
<div class="header-buttons">
|
||||
@@ -851,6 +871,14 @@
|
||||
});
|
||||
// 页面加载时执行
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// 获取版本号
|
||||
if (window.appConfig && window.appConfig.version) {
|
||||
const versionSpan = document.getElementById('versionSpan');
|
||||
if (versionSpan) {
|
||||
versionSpan.textContent = `v${window.appConfig.version}`;
|
||||
}
|
||||
}
|
||||
//加载插件
|
||||
loadPlugins();
|
||||
// 绑定搜索按钮事件
|
||||
document.getElementById('searchBtn').addEventListener('click', searchMusic);
|
||||
|
||||
35
xiaomusic/static/onlineSearch/setting.html
vendored
35
xiaomusic/static/onlineSearch/setting.html
vendored
@@ -4,6 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>在线搜索配置</title>
|
||||
<!-- ... 公共配置 ... -->
|
||||
<script src="./config.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
@@ -21,12 +23,27 @@
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.version-info {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 20px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
/* 调整 header 内容的 padding,避免与版本信息重叠 */
|
||||
.header {
|
||||
background: #31c27c;
|
||||
color: white;
|
||||
padding: 20px;
|
||||
padding: 20px 20px 20px 60px; /* 左边增加留白 */
|
||||
text-align: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.loading {
|
||||
text-align: center;
|
||||
padding: 40px;
|
||||
@@ -267,6 +284,9 @@
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>插件&接口设置</h1>
|
||||
<div class="version-info">
|
||||
<span id="versionSpan"></span>
|
||||
</div>
|
||||
<p>管理您的插件和在线接口</p>
|
||||
<!-- 顶部居中按钮 -->
|
||||
<div class="header-buttons">
|
||||
@@ -325,9 +345,20 @@
|
||||
<script>
|
||||
// 页面加载时获取插件列表
|
||||
window.onload = function() {
|
||||
};
|
||||
// 页面加载时执行
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// 获取版本号
|
||||
if (window.appConfig && window.appConfig.version) {
|
||||
const versionSpan = document.getElementById('versionSpan');
|
||||
if (versionSpan) {
|
||||
versionSpan.textContent = `v${window.appConfig.version}`;
|
||||
}
|
||||
}
|
||||
//加载插件
|
||||
loadPlugins();
|
||||
loadOpenApiConfig();
|
||||
};
|
||||
});
|
||||
/*============================开放接口函数=================================*/
|
||||
// 加载 OpenAPI 配置
|
||||
async function loadOpenApiConfig() {
|
||||
|
||||
Reference in New Issue
Block a user