Compare commits

...

3 Commits

Author SHA1 Message Date
Cp0204
c297bb02d3 feat(plugins): 支持插件 task_after 方法,并可更新自身配置
Some checks are pending
Docker Publish / build-and-push (push) Waiting to run
2026-01-07 19:46:32 +08:00
Cp0204
f3a6d665cf refactor(plugins): 支持编译插件的加载 2026-01-07 19:44:56 +08:00
Cp0204
41201653f1 fix: 修复浏览目录时违规文件名变 X*** 2026-01-07 17:28:03 +08:00

View File

@ -96,20 +96,26 @@ class Config:
PLUGIN_FLAGS = os.environ.get("PLUGIN_FLAGS", "").split(",")
plugins_available = {}
task_plugins_config = {}
# 获取所有模块
py_ext = [".py", ".pyd"] if sys.platform == "win32" else [".py", ".so"]
all_modules = [
f.replace(".py", "") for f in os.listdir(plugins_dir) if f.endswith(".py")
f.replace(ext, "")
for f in os.listdir(plugins_dir)
for ext in py_ext
if f.endswith(ext)
]
# 调整模块优先级
priority_path = os.path.join(plugins_dir, "_priority.json")
try:
with open(priority_path, encoding="utf-8") as f:
priority_modules = json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
priority_modules = []
if priority_modules:
all_modules = [
module for module in priority_modules if module in all_modules
] + [module for module in all_modules if module not in priority_modules]
except (FileNotFoundError, json.JSONDecodeError):
priority_modules = []
# 加载模块
for module_name in all_modules:
if f"-{module_name}" in PLUGIN_FLAGS:
continue
@ -567,6 +573,8 @@ class Quark:
"_fetch_sub_dirs": "0",
"_sort": "file_type:asc,updated_at:desc",
"_fetch_full_path": kwargs.get("fetch_full_path", 0),
"fetch_all_file": 1, # 跟随Web端作用未知
"fetch_risk_file_name": 1, # 如无此参数,违规文件名会被变 ***
}
response = self._send_request("GET", url, params=querystring).json()
if response["code"] != 0:
@ -1107,6 +1115,7 @@ def do_save(account, tasklist=[]):
plugins, CONFIG_DATA["plugins"], task_plugins_config = Config.load_plugins(
CONFIG_DATA.get("plugins", {})
)
print()
print(f"转存账号: {account.nickname}")
# 获取全部保存目录fid
account.update_savepath_fid(tasklist)
@ -1174,6 +1183,13 @@ def do_save(account, tasklist=[]):
plugin.run(task, account=account, tree=is_new_tree) or task
)
print()
print(f"===============插件收尾===============")
for plugin_name, plugin in plugins.items():
if plugin.is_active and hasattr(plugin, "task_after"):
data = plugin.task_after()
if data.get("config"):
CONFIG_DATA["plugins"][plugin_name] = data["config"]
print()
def main():