mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-06 16:20:18 +08:00
feat(event): simplify register decorator
This commit is contained in:
@@ -323,30 +323,22 @@ class EventManager(metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(f: Callable):
|
def decorator(f: Callable):
|
||||||
event_list = []
|
# 将输入的事件类型统一转换为列表格式
|
||||||
|
|
||||||
# 如果传入的是列表,处理每个事件类型
|
|
||||||
if isinstance(etype, list):
|
if isinstance(etype, list):
|
||||||
for et in etype:
|
event_list = etype # 传入的已经是列表,直接使用
|
||||||
if isinstance(et, (EventType, ChainEventType)):
|
|
||||||
event_list.append(et)
|
|
||||||
else:
|
|
||||||
raise ValueError(f"列表中无效的事件类型: {et}")
|
|
||||||
|
|
||||||
# 如果传入的是 EventType 或 ChainEventType 类,提取该类中的所有成员
|
|
||||||
elif isinstance(etype, type) and issubclass(etype, (EventType, ChainEventType)):
|
|
||||||
event_list.extend(etype.__members__.values())
|
|
||||||
|
|
||||||
# 如果传入的是单个事件类型成员 (EventType.MetadataScrape 或 ChainEventType.PluginAction)
|
|
||||||
elif isinstance(etype, (EventType, ChainEventType)):
|
|
||||||
event_list.append(etype)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"无效的事件类型: {etype}")
|
event_list = [etype] # 不是列表则包裹成单一元素的列表
|
||||||
|
|
||||||
# 统一注册事件
|
# 遍历列表,处理每个事件类型
|
||||||
for event in event_list:
|
for event in event_list:
|
||||||
self.add_event_listener(event, f)
|
if isinstance(event, (EventType, ChainEventType)):
|
||||||
|
self.add_event_listener(event, f)
|
||||||
|
elif isinstance(event, type) and issubclass(event, (EventType, ChainEventType)):
|
||||||
|
# 如果是 EventType 或 ChainEventType 类,提取该类中的所有成员
|
||||||
|
for et in event.__members__.values():
|
||||||
|
self.add_event_listener(et, f)
|
||||||
|
else:
|
||||||
|
raise ValueError(f"无效的事件类型: {event}")
|
||||||
|
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user