♻️ 优化Emby模块配置及加载逻辑

This commit is contained in:
Cp0204 2024-11-13 03:39:18 +08:00
parent 9a1ebe0894
commit dd42197b27
2 changed files with 32 additions and 20 deletions

View File

@ -2,17 +2,24 @@ import requests
class Emby: class Emby:
default_config = {"url": "", "apikey": ""}
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.is_active = False self.is_active = False
if kwargs.get("url") and kwargs.get("apikey"): if kwargs:
self.emby_url = kwargs.get("url") for key, value in self.default_config.items():
self.emby_apikey = kwargs.get("apikey") if key in kwargs:
if self.get_info(): setattr(self, key, kwargs[key])
self.is_active = True 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): def get_info(self):
url = f"{self.emby_url}/emby/System/Info" url = f"{self.url}/emby/System/Info"
headers = {"X-Emby-Token": self.emby_apikey} headers = {"X-Emby-Token": self.apikey}
querystring = {} querystring = {}
response = requests.request("GET", url, headers=headers, params=querystring) response = requests.request("GET", url, headers=headers, params=querystring)
if "application/json" in response.headers["Content-Type"]: if "application/json" in response.headers["Content-Type"]:
@ -27,8 +34,8 @@ class Emby:
def refresh(self, emby_id): def refresh(self, emby_id):
if emby_id: if emby_id:
url = f"{self.emby_url}/emby/Items/{emby_id}/Refresh" url = f"{self.url}/emby/Items/{emby_id}/Refresh"
headers = {"X-Emby-Token": self.emby_apikey} headers = {"X-Emby-Token": self.apikey}
querystring = { querystring = {
"Recursive": "true", "Recursive": "true",
"MetadataRefreshMode": "FullRefresh", "MetadataRefreshMode": "FullRefresh",
@ -48,8 +55,8 @@ class Emby:
def search(self, media_name): def search(self, media_name):
if media_name: if media_name:
url = f"{self.emby_url}/emby/Items" url = f"{self.url}/emby/Items"
headers = {"X-Emby-Token": self.emby_apikey} headers = {"X-Emby-Token": self.apikey}
querystring = { querystring = {
"IncludeItemTypes": "Series", "IncludeItemTypes": "Series",
"StartIndex": 0, "StartIndex": 0,

View File

@ -687,18 +687,23 @@ class Quark:
return is_rename_count > 0 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 = {} 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: try:
module = importlib.import_module(f"media_servers.{server_name}") module = importlib.import_module(f"{media_servers_dir}.{module_name}")
ServerClass = getattr(module, server_name.capitalize()) ServerClass = getattr(module, module_name.capitalize())
# 复制配置,避免修改原始配置 # 检查配置中是否存在该模块的配置
server_args = server_config.copy() if module_name in media_servers_config:
# 动态传递参数 server_config = media_servers_config[module_name]
media_servers[server_name] = ServerClass(**server_args) media_servers[module_name] = ServerClass(**server_config)
else:
media_servers_config[module_name] = ServerClass().default_config
except (ImportError, AttributeError): except (ImportError, AttributeError):
print(f"加载媒体服务器模块 {server_name} 失败。") print(f"加载模块 {module_name} 失败")
return media_servers return media_servers