♻️ 优化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:
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,

View File

@ -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