From 363f12ed5a95cf39d3fdb2e6fd0cdc9a5fc37115 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 19 Oct 2024 19:31:25 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9AModule=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BC=98=E5=85=88=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/__init__.py | 2 ++ app/modules/__init__.py | 8 ++++++++ app/modules/bangumi/__init__.py | 7 +++++++ app/modules/douban/__init__.py | 7 +++++++ app/modules/emby/__init__.py | 7 +++++++ app/modules/fanart/__init__.py | 7 +++++++ app/modules/filemanager/__init__.py | 7 +++++++ app/modules/filter/__init__.py | 7 +++++++ app/modules/indexer/__init__.py | 7 +++++++ app/modules/jellyfin/__init__.py | 7 +++++++ app/modules/plex/__init__.py | 7 +++++++ app/modules/qbittorrent/__init__.py | 7 +++++++ app/modules/slack/__init__.py | 7 +++++++ app/modules/subtitle/__init__.py | 7 +++++++ app/modules/synologychat/__init__.py | 7 +++++++ app/modules/telegram/__init__.py | 7 +++++++ app/modules/themoviedb/__init__.py | 7 +++++++ app/modules/thetvdb/__init__.py | 7 +++++++ app/modules/transmission/__init__.py | 7 +++++++ app/modules/vocechat/__init__.py | 7 +++++++ app/modules/webpush/__init__.py | 7 +++++++ app/modules/wechat/__init__.py | 7 +++++++ 22 files changed, 150 insertions(+) diff --git a/app/chain/__init__.py b/app/chain/__init__.py index e41c6e49..465a3486 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -96,6 +96,8 @@ class ChainBase(metaclass=ABCMeta): logger.debug(f"请求模块执行:{method} ...") result = None modules = self.modulemanager.get_running_modules(method) + # 按优先级排序 + modules = sorted(modules, key=lambda x: x.get_priority()) for module in modules: module_id = module.__class__.__name__ try: diff --git a/app/modules/__init__.py b/app/modules/__init__.py index 967fc529..d6db3474 100644 --- a/app/modules/__init__.py +++ b/app/modules/__init__.py @@ -42,6 +42,14 @@ class _ModuleBase(metaclass=ABCMeta): 获取模块类型 """ pass + + @staticmethod + @abstractmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + pass @abstractmethod def stop(self) -> None: diff --git a/app/modules/bangumi/__init__.py b/app/modules/bangumi/__init__.py index 7052ee2e..b23d09de 100644 --- a/app/modules/bangumi/__init__.py +++ b/app/modules/bangumi/__init__.py @@ -44,6 +44,13 @@ class BangumiModule(_ModuleBase): 获取模块类型 """ return ModuleType.MediaRecognize + + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 3 def recognize_media(self, bangumiid: int = None, **kwargs) -> Optional[MediaInfo]: diff --git a/app/modules/douban/__init__.py b/app/modules/douban/__init__.py index a6810f4c..94774463 100644 --- a/app/modules/douban/__init__.py +++ b/app/modules/douban/__init__.py @@ -58,6 +58,13 @@ class DoubanModule(_ModuleBase): """ return ModuleType.MediaRecognize + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 2 + def recognize_media(self, meta: MetaBase = None, mtype: MediaType = None, doubanid: str = None, diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index 8d0a0e39..11f8dfa6 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -29,6 +29,13 @@ class EmbyModule(_ModuleBase, _MediaServerBase[Emby]): """ return ModuleType.MediaServer + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 1 + def stop(self): pass diff --git a/app/modules/fanart/__init__.py b/app/modules/fanart/__init__.py index 7088c14c..57db0e43 100644 --- a/app/modules/fanart/__init__.py +++ b/app/modules/fanart/__init__.py @@ -342,6 +342,13 @@ class FanartModule(_ModuleBase): """ return ModuleType.Other + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 0 + def obtain_images(self, mediainfo: MediaInfo) -> Optional[MediaInfo]: """ 获取图片 diff --git a/app/modules/filemanager/__init__.py b/app/modules/filemanager/__init__.py index 682b5230..a32735a6 100644 --- a/app/modules/filemanager/__init__.py +++ b/app/modules/filemanager/__init__.py @@ -51,6 +51,13 @@ class FileManagerModule(_ModuleBase): """ return ModuleType.Other + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 4 + def stop(self): pass diff --git a/app/modules/filter/__init__.py b/app/modules/filter/__init__.py index 51ea2d11..a87b167d 100644 --- a/app/modules/filter/__init__.py +++ b/app/modules/filter/__init__.py @@ -167,6 +167,13 @@ class FilterModule(_ModuleBase): """ return ModuleType.Other + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 4 + def stop(self): pass diff --git a/app/modules/indexer/__init__.py b/app/modules/indexer/__init__.py index 4f1b441d..5edf56f3 100644 --- a/app/modules/indexer/__init__.py +++ b/app/modules/indexer/__init__.py @@ -47,6 +47,13 @@ class IndexerModule(_ModuleBase): """ return ModuleType.Indexer + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 0 + def stop(self): pass diff --git a/app/modules/jellyfin/__init__.py b/app/modules/jellyfin/__init__.py index f8cb4199..595e6e75 100644 --- a/app/modules/jellyfin/__init__.py +++ b/app/modules/jellyfin/__init__.py @@ -29,6 +29,13 @@ class JellyfinModule(_ModuleBase, _MediaServerBase[Jellyfin]): """ return ModuleType.MediaServer + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 2 + def init_setting(self) -> Tuple[str, Union[str, bool]]: pass diff --git a/app/modules/plex/__init__.py b/app/modules/plex/__init__.py index 8ec4947e..7c739f54 100644 --- a/app/modules/plex/__init__.py +++ b/app/modules/plex/__init__.py @@ -28,6 +28,13 @@ class PlexModule(_ModuleBase, _MediaServerBase[Plex]): """ return ModuleType.MediaServer + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 3 + def stop(self): pass diff --git a/app/modules/qbittorrent/__init__.py b/app/modules/qbittorrent/__init__.py index bccac263..2af31e5a 100644 --- a/app/modules/qbittorrent/__init__.py +++ b/app/modules/qbittorrent/__init__.py @@ -37,6 +37,13 @@ class QbittorrentModule(_ModuleBase, _DownloaderBase[Qbittorrent]): """ return ModuleType.Downloader + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 1 + def stop(self): pass diff --git a/app/modules/slack/__init__.py b/app/modules/slack/__init__.py index 51e1a3b9..34c8fc85 100644 --- a/app/modules/slack/__init__.py +++ b/app/modules/slack/__init__.py @@ -31,6 +31,13 @@ class SlackModule(_ModuleBase, _MessageBase[Slack]): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 3 + def stop(self): """ 停止模块 diff --git a/app/modules/subtitle/__init__.py b/app/modules/subtitle/__init__.py index 961f5cfa..1e35a4ff 100644 --- a/app/modules/subtitle/__init__.py +++ b/app/modules/subtitle/__init__.py @@ -40,6 +40,13 @@ class SubtitleModule(_ModuleBase): """ return ModuleType.Other + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 0 + def init_setting(self) -> Tuple[str, Union[str, bool]]: pass diff --git a/app/modules/synologychat/__init__.py b/app/modules/synologychat/__init__.py index 5199d882..05a0faf2 100644 --- a/app/modules/synologychat/__init__.py +++ b/app/modules/synologychat/__init__.py @@ -29,6 +29,13 @@ class SynologyChatModule(_ModuleBase, _MessageBase[SynologyChat]): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 5 + def stop(self): pass diff --git a/app/modules/telegram/__init__.py b/app/modules/telegram/__init__.py index af96d86c..23106afd 100644 --- a/app/modules/telegram/__init__.py +++ b/app/modules/telegram/__init__.py @@ -30,6 +30,13 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 0 + def stop(self): """ 停止模块 diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 4d497353..8e29c021 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -48,6 +48,13 @@ class TheMovieDbModule(_ModuleBase): """ return ModuleType.MediaRecognize + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 1 + def stop(self): self.cache.save() self.tmdb.close() diff --git a/app/modules/thetvdb/__init__.py b/app/modules/thetvdb/__init__.py index ee65f8c2..a3653f09 100644 --- a/app/modules/thetvdb/__init__.py +++ b/app/modules/thetvdb/__init__.py @@ -28,6 +28,13 @@ class TheTvDbModule(_ModuleBase): """ return ModuleType.MediaRecognize + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 4 + def stop(self): self.tvdb.close() diff --git a/app/modules/transmission/__init__.py b/app/modules/transmission/__init__.py index e54d18ad..46bec806 100644 --- a/app/modules/transmission/__init__.py +++ b/app/modules/transmission/__init__.py @@ -37,6 +37,13 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): """ return ModuleType.Downloader + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 2 + def stop(self): pass diff --git a/app/modules/vocechat/__init__.py b/app/modules/vocechat/__init__.py index 4b77333c..3e5b6954 100644 --- a/app/modules/vocechat/__init__.py +++ b/app/modules/vocechat/__init__.py @@ -30,6 +30,13 @@ class VoceChatModule(_ModuleBase, _MessageBase[VoceChat]): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 4 + def stop(self): pass diff --git a/app/modules/webpush/__init__.py b/app/modules/webpush/__init__.py index 4f53e75b..e851b15a 100644 --- a/app/modules/webpush/__init__.py +++ b/app/modules/webpush/__init__.py @@ -30,6 +30,13 @@ class WebPushModule(_ModuleBase, _MessageBase): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 6 + def stop(self): pass diff --git a/app/modules/wechat/__init__.py b/app/modules/wechat/__init__.py index b31fba56..db02ac80 100644 --- a/app/modules/wechat/__init__.py +++ b/app/modules/wechat/__init__.py @@ -32,6 +32,13 @@ class WechatModule(_ModuleBase, _MessageBase[WeChat]): """ return ModuleType.Notification + @staticmethod + def get_priority() -> int: + """ + 获取模块优先级,数字越小优先级越高,只有同一接口下优先级才生效 + """ + return 1 + def stop(self): pass