mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
refactor: use injected eventmanager in chain instance methods
This commit is contained in:
@@ -961,7 +961,7 @@ class DownloadChain(ChainBase):
|
||||
downloader=downloader,
|
||||
origin=source,
|
||||
)
|
||||
event = eventmanager.send_event(ChainEventType.ResourceSelection, event_data)
|
||||
event = self.eventmanager.send_event(ChainEventType.ResourceSelection, event_data)
|
||||
if event and event.event_data:
|
||||
event_data = event.event_data
|
||||
if event_data.updated and event_data.updated_contexts is not None:
|
||||
|
||||
+13
-11
@@ -19,7 +19,7 @@ from app.domain.context import (
|
||||
MusicArtistInfo,
|
||||
MusicInfo,
|
||||
)
|
||||
from app.runtime.events import eventmanager, Event
|
||||
from app.runtime.events import Event
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo, MetaInfoPath
|
||||
@@ -450,8 +450,8 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
|
||||
|
||||
|
||||
@staticmethod
|
||||
def select_recognize_source(
|
||||
self,
|
||||
log_name: str, log_context: str, native_fn, plugin_fn,
|
||||
is_recognized=None,
|
||||
plugin_event: ChainEventType = ChainEventType.NameRecognize,
|
||||
@@ -470,7 +470,8 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
if is_recognized is None:
|
||||
is_recognized = lambda result: bool(result)
|
||||
mediainfo = None
|
||||
plugin_available = eventmanager.check(plugin_event)
|
||||
# 插件可用性检查走注入的事件管理器,避免链实例直连全局单例
|
||||
plugin_available = self.eventmanager.check(plugin_event)
|
||||
if get_chain_runtime_config_snapshot().recognize_plugin_first and plugin_available:
|
||||
# 插件优先
|
||||
logger.info(f"插件识别优先模式已开启。请求辅助识别,标题:{log_name} ...")
|
||||
@@ -758,7 +759,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
music_type=music_type,
|
||||
)
|
||||
# 发送请求事件,等待结果
|
||||
result: Event = eventmanager.send_event(
|
||||
result: Event = self.eventmanager.send_event(
|
||||
ChainEventType.NameRecognize,
|
||||
{
|
||||
"title": title,
|
||||
@@ -820,7 +821,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
:param music_type: 音乐实体类型
|
||||
"""
|
||||
# 发送音乐名称识别事件,等待插件返回标题要素
|
||||
result: Event = eventmanager.send_event(
|
||||
result: Event = self.eventmanager.send_event(
|
||||
ChainEventType.MusicNameRecognize,
|
||||
{
|
||||
"title": title,
|
||||
@@ -1507,14 +1508,14 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
media_id=media_id,
|
||||
target_media_source=target_source,
|
||||
)
|
||||
event = eventmanager.send_event(
|
||||
event = self.eventmanager.send_event(
|
||||
ChainEventType.MediaRecognizeConvert, event_data,
|
||||
)
|
||||
return event_data.media_dict if event and event_data.media_dict else None
|
||||
|
||||
|
||||
@staticmethod
|
||||
async def async_select_recognize_source(
|
||||
self,
|
||||
log_name: str, log_context: str, native_fn, plugin_fn,
|
||||
is_recognized=None,
|
||||
plugin_event: ChainEventType = ChainEventType.NameRecognize,
|
||||
@@ -1532,7 +1533,8 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
if is_recognized is None:
|
||||
is_recognized = lambda result: bool(result)
|
||||
mediainfo = None
|
||||
plugin_available = eventmanager.check(plugin_event)
|
||||
# 插件可用性检查走注入的事件管理器,避免链实例直连全局单例
|
||||
plugin_available = self.eventmanager.check(plugin_event)
|
||||
if get_chain_runtime_config_snapshot().recognize_plugin_first and plugin_available:
|
||||
# 插件优先
|
||||
logger.info(f"插件优先模式已开启。请求辅助识别,标题:{log_name} ...")
|
||||
@@ -1696,7 +1698,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
music_type=music_type,
|
||||
)
|
||||
# 发送请求事件,等待结果
|
||||
result: Event = await eventmanager.async_send_event(
|
||||
result: Event = await self.eventmanager.async_send_event(
|
||||
ChainEventType.NameRecognize,
|
||||
{
|
||||
"title": title,
|
||||
@@ -1758,7 +1760,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
:param music_type: 音乐实体类型
|
||||
"""
|
||||
# 发送音乐名称识别事件,等待插件返回标题要素
|
||||
result: Event = await eventmanager.async_send_event(
|
||||
result: Event = await self.eventmanager.async_send_event(
|
||||
ChainEventType.MusicNameRecognize,
|
||||
{
|
||||
"title": title,
|
||||
@@ -2053,7 +2055,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
media_id=media_id,
|
||||
target_media_source=target_source,
|
||||
)
|
||||
event = await eventmanager.async_send_event(
|
||||
event = await self.eventmanager.async_send_event(
|
||||
ChainEventType.MediaRecognizeConvert, event_data,
|
||||
)
|
||||
return event_data.media_dict if event and event_data.media_dict else None
|
||||
|
||||
+3
-3
@@ -74,7 +74,7 @@ class SiteChain(InteractionChainMixin, ChainBase):
|
||||
payload=userdata.model_dump(),
|
||||
)
|
||||
# 发送事件
|
||||
eventmanager.send_event(EventType.SiteRefreshed, {
|
||||
self.eventmanager.send_event(EventType.SiteRefreshed, {
|
||||
"site_id": site.get("id")
|
||||
})
|
||||
self._post_site_messages(site=site, userdata=userdata)
|
||||
@@ -163,7 +163,7 @@ class SiteChain(InteractionChainMixin, ChainBase):
|
||||
data={"total": total_num, "finished": index},
|
||||
)
|
||||
if any_site_updated:
|
||||
eventmanager.send_event(EventType.SiteRefreshed, {
|
||||
self.eventmanager.send_event(EventType.SiteRefreshed, {
|
||||
"site_id": "*"
|
||||
})
|
||||
if progress_callback:
|
||||
@@ -461,7 +461,7 @@ class SiteChain(InteractionChainMixin, ChainBase):
|
||||
|
||||
# 通知站点更新
|
||||
if indexer:
|
||||
eventmanager.send_event(EventType.SiteUpdated, {
|
||||
self.eventmanager.send_event(EventType.SiteUpdated, {
|
||||
"domain": domain,
|
||||
})
|
||||
if progress_callback:
|
||||
|
||||
@@ -934,7 +934,7 @@ class SubscribeChain(MusicSubscribeMixin, InteractionChainMixin, ChainBase):
|
||||
"""同步执行提交后消息、事件和统计,异常不再触碰数据库事务。"""
|
||||
if context.notification:
|
||||
self.post_message(_SchemaMessage.model_validate(context.notification))
|
||||
eventmanager.send_event(EventType.SubscribeAdded, {
|
||||
self.eventmanager.send_event(EventType.SubscribeAdded, {
|
||||
"subscribe_id": subscribe_id,
|
||||
"idempotency_key": (
|
||||
f"subscribe.added:{subscribe_id}:"
|
||||
@@ -958,7 +958,7 @@ class SubscribeChain(MusicSubscribeMixin, InteractionChainMixin, ChainBase):
|
||||
await self.async_post_message(
|
||||
_SchemaMessage.model_validate(context.notification)
|
||||
)
|
||||
await eventmanager.async_send_event(EventType.SubscribeAdded, {
|
||||
await self.eventmanager.async_send_event(EventType.SubscribeAdded, {
|
||||
"subscribe_id": subscribe_id,
|
||||
"idempotency_key": (
|
||||
f"subscribe.added:{subscribe_id}:"
|
||||
@@ -3112,7 +3112,7 @@ class SubscribeChain(MusicSubscribeMixin, InteractionChainMixin, ChainBase):
|
||||
if subscribe.state == "P":
|
||||
return
|
||||
# 发送订阅完成判定事件,在写入 DB 前,允许外部据完结策略否决本次自动完成
|
||||
completion_event = eventmanager.send_event(
|
||||
completion_event = self.eventmanager.send_event(
|
||||
ChainEventType.SubscribeCompletionCheck,
|
||||
SubscribeCompletionCheckEventData(subscribe=subscribe, mediainfo=mediainfo, meta=meta))
|
||||
if completion_event and completion_event.event_data:
|
||||
|
||||
@@ -18,7 +18,6 @@ from app.chain.storage import StorageChain
|
||||
from app.chain.tmdb import TmdbChain
|
||||
from app.runtime.config import global_vars
|
||||
from app.domain.context import MediaInfo, MusicInfo, TorrentInfo
|
||||
from app.runtime.events import eventmanager
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfoPath
|
||||
@@ -1487,7 +1486,7 @@ class TransferChain(FileFilterMixin, ScrapeBatchMixin, EpisodeFormatMixin, Histo
|
||||
source_event_data = StorageOperSelectionEventData(
|
||||
storage=task.fileitem.storage,
|
||||
)
|
||||
source_event = eventmanager.send_event(
|
||||
source_event = self.eventmanager.send_event(
|
||||
ChainEventType.StorageOperSelection, source_event_data
|
||||
)
|
||||
# 使用事件返回的上下文数据
|
||||
@@ -1503,7 +1502,7 @@ class TransferChain(FileFilterMixin, ScrapeBatchMixin, EpisodeFormatMixin, Histo
|
||||
target_event_data = StorageOperSelectionEventData(
|
||||
storage=task.target_storage,
|
||||
)
|
||||
target_event = eventmanager.send_event(
|
||||
target_event = self.eventmanager.send_event(
|
||||
ChainEventType.StorageOperSelection, target_event_data
|
||||
)
|
||||
# 使用事件返回的上下文数据
|
||||
|
||||
Reference in New Issue
Block a user