From dd42197b277c825536e56ae999130e254a03aafb Mon Sep 17 00:00:00 2001 From: Cp0204 Date: Wed, 13 Nov 2024 03:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=E4=BC=98=E5=8C=96Emby?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E9=85=8D=E7=BD=AE=E5=8F=8A=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media_servers/emby.py | 29 ++++++++++++++++++----------- quark_auto_save.py | 23 ++++++++++++++--------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/media_servers/emby.py b/media_servers/emby.py index c4afdd6..e59bc88 100644 --- a/media_servers/emby.py +++ b/media_servers/emby.py @@ -2,17 +2,24 @@ import requests class Emby: + + default_config = {"url": "", "apikey": ""} + def __init__(self, **kwargs): self.is_active = False - if kwargs.get("url") and kwargs.get("apikey"): - self.emby_url = kwargs.get("url") - self.emby_apikey = kwargs.get("apikey") - if self.get_info(): - self.is_active = True + if kwargs: + for key, value in self.default_config.items(): + if key in kwargs: + setattr(self, key, kwargs[key]) + else: + print(f"{self.__class__.__name__} 模块缺少必要参数: {key}") + if self.url and self.apikey: + if self.get_info(): + self.is_active = True def get_info(self): - url = f"{self.emby_url}/emby/System/Info" - headers = {"X-Emby-Token": self.emby_apikey} + url = f"{self.url}/emby/System/Info" + headers = {"X-Emby-Token": self.apikey} querystring = {} response = requests.request("GET", url, headers=headers, params=querystring) if "application/json" in response.headers["Content-Type"]: @@ -27,8 +34,8 @@ class Emby: def refresh(self, emby_id): if emby_id: - url = f"{self.emby_url}/emby/Items/{emby_id}/Refresh" - headers = {"X-Emby-Token": self.emby_apikey} + url = f"{self.url}/emby/Items/{emby_id}/Refresh" + headers = {"X-Emby-Token": self.apikey} querystring = { "Recursive": "true", "MetadataRefreshMode": "FullRefresh", @@ -48,8 +55,8 @@ class Emby: def search(self, media_name): if media_name: - url = f"{self.emby_url}/emby/Items" - headers = {"X-Emby-Token": self.emby_apikey} + url = f"{self.url}/emby/Items" + headers = {"X-Emby-Token": self.apikey} querystring = { "IncludeItemTypes": "Series", "StartIndex": 0, diff --git a/quark_auto_save.py b/quark_auto_save.py index 435749f..57fbef3 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -687,18 +687,23 @@ class Quark: return is_rename_count > 0 -def load_media_servers(media_servers_config): +def load_media_servers(media_servers_config, media_servers_dir="media_servers"): media_servers = {} - for server_name, server_config in media_servers_config.items(): + available_modules = [ + f.replace(".py", "") for f in os.listdir(media_servers_dir) if f.endswith(".py") + ] + for module_name in available_modules: try: - module = importlib.import_module(f"media_servers.{server_name}") - ServerClass = getattr(module, server_name.capitalize()) - # 复制配置,避免修改原始配置 - server_args = server_config.copy() - # 动态传递参数 - media_servers[server_name] = ServerClass(**server_args) + module = importlib.import_module(f"{media_servers_dir}.{module_name}") + ServerClass = getattr(module, module_name.capitalize()) + # 检查配置中是否存在该模块的配置 + if module_name in media_servers_config: + server_config = media_servers_config[module_name] + media_servers[module_name] = ServerClass(**server_config) + else: + media_servers_config[module_name] = ServerClass().default_config except (ImportError, AttributeError): - print(f"加载媒体服务器模块 {server_name} 失败。") + print(f"加载模块 {module_name} 失败") return media_servers