diff --git a/app/templates/index.html b/app/templates/index.html index 19e27cd..6e32220 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -267,7 +267,7 @@
- +
@@ -462,16 +462,13 @@ } return task; }); - // 添加emby预设 - if (!response.data.hasOwnProperty('emby')) { - response.data.emby = { ...this.emby }; - } // 获取所有任务父目录 response.data.tasklist.forEach(item => { parentDir = this.getParentDirectory(item.savepath) if (!this.taskDirs.includes(parentDir)) this.taskDirs.push(parentDir); }); + this.newTask.addition = response.data.task_plugins_config; this.formData = response.data; }) .catch(error => { diff --git a/quark_auto_save.py b/quark_auto_save.py index 26fc86e..c0f270b 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -715,7 +715,8 @@ class Quark: def load_plugins(plugins_config, plugins_dir="plugins"): - plugins = {} + plugins_available = {} + task_plugins_config = {} all_modules = [ f.replace(".py", "") for f in os.listdir(plugins_dir) if f.endswith(".py") ] @@ -737,14 +738,18 @@ def load_plugins(plugins_config, plugins_dir="plugins"): ServerClass = getattr(module, module_name.capitalize()) # 检查配置中是否存在该模块的配置 if module_name in plugins_config: - server_config = plugins_config[module_name] - plugins[module_name] = ServerClass(**server_config) + plugin = ServerClass(**plugins_config[module_name]) + plugins_available[module_name] = plugin else: - plugins_config[module_name] = ServerClass().default_config + plugin = ServerClass() + plugins_config[module_name] = plugin.default_config + # 检查插件是否支持单独任务配置 + if hasattr(plugin, "default_task_config"): + task_plugins_config[module_name] = plugin.default_task_config except (ImportError, AttributeError) as e: print(f"载入模块 {module_name} 失败: {e}") print() - return plugins + return plugins_available, task_plugins_config def verify_account(account): @@ -804,7 +809,9 @@ def do_sign(account): def do_save(account, tasklist=[]): - plugins = load_plugins(CONFIG_DATA.get("plugins", {})) + plugins, CONFIG_DATA["task_plugins_config"] = load_plugins( + CONFIG_DATA.get("plugins", {}) + ) print(f"转存账号: {account.nickname}") # 获取全部保存目录fid account.update_savepath_fid(tasklist) @@ -842,15 +849,27 @@ def do_save(account, tasklist=[]): print() is_new_tree = account.do_save_task(task) is_rename = account.do_rename_task(task) + + # 补充任务的插件配置 + def merge_dicts(a, b): + result = a.copy() + for key, value in b.items(): + if ( + key in result + and isinstance(result[key], dict) + and isinstance(value, dict) + ): + result[key] = merge_dicts(result[key], value) + elif key not in result: + result[key] = value + return result + + task["addition"] = merge_dicts( + task.get("addition", {}), CONFIG_DATA["task_plugins_config"] + ) # 调用插件 print(f"🧩 调用插件") for plugin_name, plugin in plugins.items(): - if hasattr(plugin, "default_task_config") and not task.get( - "addition", {} - ).get(plugin_name): - task.setdefault("addition", {})[ - plugin_name - ] = plugin.default_task_config if plugin.is_active and (is_new_tree or is_rename): task = plugin.run(task, account=account, tree=is_new_tree) or task print() diff --git a/quark_config.json b/quark_config.json index 85222d5..78d8c5a 100644 --- a/quark_config.json +++ b/quark_config.json @@ -20,7 +20,6 @@ "pattern": "$TV", "replace": "", "enddate": "2099-01-30", - "media_id": "", "update_subdir": "4k|1080p" }, {