Merge pull request #3255 from InfinityPacer/feature/event

This commit is contained in:
jxxghp
2024-11-27 06:59:54 +08:00
committed by GitHub
4 changed files with 23 additions and 17 deletions
+15 -9
View File
@@ -233,23 +233,29 @@ class EventManager(metaclass=Singleton):
可视化所有事件处理器,包括是否被禁用的状态 可视化所有事件处理器,包括是否被禁用的状态
:return: 处理器列表,包含事件类型、处理器标识符、优先级(如果有)和状态 :return: 处理器列表,包含事件类型、处理器标识符、优先级(如果有)和状态
""" """
def parse_handler_data(data):
"""
解析处理器数据,判断是否包含优先级
:param data: 订阅者数据,可能是元组或单一值
:return: (priority, handler),若没有优先级则返回 (None, handler)
"""
if isinstance(data, tuple) and len(data) == 2:
return data
return None, data
handler_info = [] handler_info = []
# 统一处理广播事件和链式事件 # 统一处理广播事件和链式事件
for event_type, subscribers in {**self.__broadcast_subscribers, **self.__chain_subscribers}.items(): for event_type, subscribers in {**self.__broadcast_subscribers, **self.__chain_subscribers}.items():
for handler_data in subscribers: for handler_identifier, handler_data in subscribers.items():
if isinstance(subscribers, dict): # 解析优先级和处理器
priority, handler = handler_data priority, handler = parse_handler_data(handler_data)
else:
priority = None
handler = handler_data
# 获取处理器的唯一标识符
handler_id = self.__get_handler_identifier(handler)
# 检查处理器的启用状态 # 检查处理器的启用状态
status = "enabled" if self.__is_handler_enabled(handler) else "disabled" status = "enabled" if self.__is_handler_enabled(handler) else "disabled"
# 构建处理器信息字典 # 构建处理器信息字典
handler_dict = { handler_dict = {
"event_type": event_type.value, "event_type": event_type.value,
"handler_identifier": handler_id, "handler_identifier": handler_identifier,
"status": status "status": status
} }
if priority is not None: if priority is not None:
+4 -4
View File
@@ -17,7 +17,7 @@ from app.log import logger
from app.modules import _ModuleBase from app.modules import _ModuleBase
from app.modules.filemanager.storages import StorageBase from app.modules.filemanager.storages import StorageBase
from app.schemas import TransferInfo, ExistMediaInfo, TmdbEpisode, TransferDirectoryConf, FileItem, StorageUsage from app.schemas import TransferInfo, ExistMediaInfo, TmdbEpisode, TransferDirectoryConf, FileItem, StorageUsage
from app.schemas.event import SmartRenameEventData from app.schemas.event import TransferRenameEventData
from app.schemas.types import MediaType, ModuleType, ChainEventType from app.schemas.types import MediaType, ModuleType, ChainEventType
from app.utils.system import SystemUtils from app.utils.system import SystemUtils
@@ -1213,16 +1213,16 @@ class FileManagerModule(_ModuleBase):
logger.debug(f"Initial render string: {render_str}") logger.debug(f"Initial render string: {render_str}")
# 发送智能重命名事件 # 发送智能重命名事件
event_data = SmartRenameEventData( event_data = TransferRenameEventData(
template_string=template_string, template_string=template_string,
rename_dict=rename_dict, rename_dict=rename_dict,
render_str=render_str, render_str=render_str,
path=path path=path
) )
event = eventmanager.send_event(ChainEventType.SmartRename, event_data) event = eventmanager.send_event(ChainEventType.TransferRename, event_data)
# 检查事件返回的结果 # 检查事件返回的结果
if event and event.event_data: if event and event.event_data:
event_data: SmartRenameEventData = event.event_data event_data: TransferRenameEventData = event.event_data
if event_data.updated and event_data.updated_str: if event_data.updated and event_data.updated_str:
logger.debug(f"Render string updated by event: " logger.debug(f"Render string updated by event: "
f"{render_str} -> {event_data.updated_str} (source: {event_data.source})") f"{render_str} -> {event_data.updated_str} (source: {event_data.source})")
+2 -2
View File
@@ -117,9 +117,9 @@ class CommandRegisterEventData(ChainEventData):
source: str = Field("未知拦截源", description="拦截源") source: str = Field("未知拦截源", description="拦截源")
class SmartRenameEventData(ChainEventData): class TransferRenameEventData(ChainEventData):
""" """
SmartRename 事件的数据模型 TransferRename 事件的数据模型
Attributes: Attributes:
# 输入参数 # 输入参数
+2 -2
View File
@@ -68,8 +68,8 @@ class ChainEventType(Enum):
AuthIntercept = "auth.intercept" AuthIntercept = "auth.intercept"
# 命令注册 # 命令注册
CommandRegister = "command.register" CommandRegister = "command.register"
# 智能重命名 # 整理重命名
SmartRename = "SmartRename" TransferRename = "transfer.rename"
# 系统配置Key字典 # 系统配置Key字典