mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
Merge pull request #3255 from InfinityPacer/feature/event
This commit is contained in:
+15
-9
@@ -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:
|
||||||
|
|||||||
@@ -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})")
|
||||||
|
|||||||
@@ -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:
|
||||||
# 输入参数
|
# 输入参数
|
||||||
|
|||||||
@@ -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字典
|
||||||
|
|||||||
Reference in New Issue
Block a user