From c22e8fe365ee2004d0d77f911ffd655b876302dd Mon Sep 17 00:00:00 2001 From: Allen Date: Mon, 6 May 2024 10:47:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/mergesiteswitch/__init__.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/mergesiteswitch/__init__.py b/plugins/mergesiteswitch/__init__.py index 96456d9..b28bac0 100644 --- a/plugins/mergesiteswitch/__init__.py +++ b/plugins/mergesiteswitch/__init__.py @@ -3,11 +3,12 @@ import os from typing import Any, List, Dict, Tuple from app.core.event import eventmanager, Event -from app.db.models.site import Site +from app.core.plugin import PluginManager from app.db.site_oper import SiteOper from app.db.systemconfig_oper import SystemConfigOper from app.log import logger from app.plugins import _PluginBase +from app.scheduler import Scheduler from app.schemas.types import SystemConfigKey, EventType @@ -687,6 +688,19 @@ class MergeSiteSwitch(_PluginBase): return None return config.get(config_key) + def __reload_plugin_config(self, plugin_id: str, config: dict = None): + """ + 重载插件配置 + """ + if not plugin_id: + return + if not config: + config = self.get_config(plugin_id) + # 重新生效插件 + PluginManager().init_plugin(plugin_id, config) + # 注册插件服务 + Scheduler().update_plugin_job(plugin_id) + def __set_plugin_config_value(self, plugin_id: str, config_key: str, config_value: Any) -> Any: """ 设置插件配置值 @@ -698,6 +712,7 @@ class MergeSiteSwitch(_PluginBase): config = {} config.update({config_key: config_value}) self.update_config(plugin_id=plugin_id, config=config) + self.__reload_plugin_config(plugin_id=plugin_id, config=config) def __get_signin_site_ids(self) -> List[int]: """ From e20ae58163e6d1f1ba23bd65a7972580ce9d3a30 Mon Sep 17 00:00:00 2001 From: Allen Date: Mon, 6 May 2024 11:22:00 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=9D=92=E8=9B=99?= =?UTF-8?q?=E8=BE=85=E7=A7=8D=E5=8A=A9=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/mergesiteswitch/__init__.py | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/plugins/mergesiteswitch/__init__.py b/plugins/mergesiteswitch/__init__.py index b28bac0..b925e28 100644 --- a/plugins/mergesiteswitch/__init__.py +++ b/plugins/mergesiteswitch/__init__.py @@ -47,6 +47,8 @@ class MergeSiteSwitch(_PluginBase): __plugin_id_iyuu_auto_seed: str = 'IYUUAutoSeed' # 站点刷流 __plugin_id_brush_flow: str = 'BrushFlow' + # 青蛙辅种助手 + __plugin_id_cross_seed: str = 'CrossSeed' # 配置相关 # 插件缺省配置 @@ -370,6 +372,43 @@ class MergeSiteSwitch(_PluginBase): }] }] }) + # 青蛙辅种助手 + if self.__plugin_id_cross_seed in installed_plugin_ids: + form_content.append({ + 'component': 'VRow', + 'content': [{ + 'component': 'VCol', + 'props': { + 'cols': 12, + 'xxl': 9, 'xl': 9, 'lg': 9, 'md': 9, 'sm': 8, 'xs': 12 + }, + 'content': [{ + 'component': 'VSelect', + 'props': { + 'model': 'cross_seed_sites', + 'label': '插件 / 青蛙辅种助手 / 辅种站点', + 'multiple': True, + 'chips': True, + 'items': site_options, + 'hint': '只有选中的站点才会在辅种中使用。' + } + }] + }, { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'xxl': 3, 'xl': 3, 'lg': 3, 'md': 3, 'sm': 4, 'xs': 12 + }, + 'content': [{ + 'component': 'VSwitch', + 'props': { + 'model': 'cross_seed_follow_enable_sites', + 'label': '跟随启用的站点', + 'hint': '与站点的启用状态保持一致,保存时会立即生效,并在后台监听站点状态变化实时生效。' + } + }] + }] + }) # 提示信息 form_content.append({ 'component': 'VRow', @@ -501,6 +540,12 @@ class MergeSiteSwitch(_PluginBase): """ return self.__check_follow_enable_sites(config_key='brush_flow_follow_enable_sites', plugin_id=self.__plugin_id_brush_flow, installed_plugin_ids=installed_plugin_ids) + def __check_cross_seed_follow_enable_sites(self, installed_plugin_ids: List[str] = None) -> bool: + """ + 判断青蛙辅种站点的跟随按钮是否打开 + """ + return self.__check_follow_enable_sites(config_key='cross_seed_follow_enable_sites', plugin_id=self.__plugin_id_cross_seed, installed_plugin_ids=installed_plugin_ids) + def __check_any_follow_enable_sites(self) -> bool: """ 判断是否开启任意跟随按钮 @@ -565,6 +610,10 @@ class MergeSiteSwitch(_PluginBase): config.update({ 'brush_flow_sites': self.__get_brush_flow_site_ids(), }) + if self.__plugin_id_cross_seed in installed_plugin_ids: + config.update({ + 'cross_seed_sites': self.__get_cross_seed_site_ids(), + }) self.update_config(config=config) return config @@ -589,6 +638,8 @@ class MergeSiteSwitch(_PluginBase): config.update({"iyuu_seed_sites": enable_sites.copy()}) if config.get('brush_flow_follow_enable_sites'): config.update({"brush_flow_sites": enable_sites.copy()}) + if config.get('cross_seed_follow_enable_sites'): + config.update({"cross_seed_sites": enable_sites.copy()}) return config def __pre_config(self, config: dict) -> dict: @@ -622,6 +673,8 @@ class MergeSiteSwitch(_PluginBase): self.__set_iyuu_seed_site_ids(config.get('iyuu_seed_sites')) if self.__plugin_id_brush_flow in installed_plugin_ids: self.__set_brush_flow_site_ids(config.get('brush_flow_sites')) + if self.__plugin_id_cross_seed in installed_plugin_ids: + self.__set_cross_seed_site_ids(config.get('cross_seed_sites')) return config def __get_enable_site_ids(self) -> List[int]: @@ -784,6 +837,20 @@ class MergeSiteSwitch(_PluginBase): self.__set_plugin_config_value(self.__plugin_id_brush_flow, 'brushsites', site_ids) logger.info("刷流站点配置完成") + def __get_cross_seed_site_ids(self) -> List[int]: + """ + 获取青蛙辅种站点IDs + """ + sites = self.__get_plugin_config_value(self.__plugin_id_cross_seed, 'sites') + return sites if sites else [] + + def __set_cross_seed_site_ids(self, site_ids: List[int]): + """ + 设置青蛙辅种站点IDs + """ + self.__set_plugin_config_value(self.__plugin_id_cross_seed, 'sites', site_ids) + logger.info("青蛙辅种站点配置完成") + def __update_search_site_ids_by_site(self, site_id: int, site_status: bool): if site_id == None: return @@ -861,6 +928,17 @@ class MergeSiteSwitch(_PluginBase): site_ids.remove(site_id) self.__set_brush_flow_site_ids(site_ids=site_ids) + def __update_cross_seed_site_ids_by_site(self, site_id: int, site_status: bool): + if site_id == None: + return + site_ids = self.__get_cross_seed_site_ids() or [] + if site_id not in site_ids and site_status: + site_ids.append(site_id) + self.__set_cross_seed_site_ids(site_ids=site_ids) + elif site_id in site_ids and not site_status: + site_ids.remove(site_id) + self.__set_cross_seed_site_ids(site_ids=site_ids) + def __update_site_ids_for_site_event(self, site_id: int, site_status: bool): """ 针对站点事件更新各项配置 @@ -883,6 +961,8 @@ class MergeSiteSwitch(_PluginBase): self.__update_iyuu_seed_site_ids_by_site(site_id=site_id, site_status=site_status) if self.__check_brush_flow_follow_enable_sites(installed_plugin_ids=installed_plugin_ids): self.__update_brush_flow_site_ids_by_site(site_id=site_id, site_status=site_status) + if self.__check_cross_seed_follow_enable_sites(installed_plugin_ids=installed_plugin_ids): + self.__update_cross_seed_site_ids_by_site(site_id=site_id, site_status=site_status) @eventmanager.register(EventType.SiteUpdated) def listen_site_updated_event(self, event: Event = None): From c61988765225dc1995df76e21aad09fd5f2b080e Mon Sep 17 00:00:00 2001 From: Allen Date: Mon, 6 May 2024 11:23:50 +0800 Subject: [PATCH 3/3] v1.1 --- package.json | 7 +++++-- plugins/mergesiteswitch/__init__.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 8bfe4ec..43242c5 100644 --- a/package.json +++ b/package.json @@ -650,9 +650,12 @@ "name": "聚合站点开关", "description": "统一管理所有与站点相关的开关。", "labels": "系统设置", - "version": "1.0", + "version": "1.1", "icon": "world.png", "author": "hotlcc", - "level": 2 + "level": 2, + "history": { + "v1.1": "优化插件配置生效;支持青蛙辅种助手。" + } } } diff --git a/plugins/mergesiteswitch/__init__.py b/plugins/mergesiteswitch/__init__.py index b925e28..a286915 100644 --- a/plugins/mergesiteswitch/__init__.py +++ b/plugins/mergesiteswitch/__init__.py @@ -20,7 +20,7 @@ class MergeSiteSwitch(_PluginBase): # 插件图标 plugin_icon = "world.png" # 插件版本 - plugin_version = "1.0" + plugin_version = "1.1" # 插件作者 plugin_author = "hotlcc" # 作者主页