mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-12 07:10:44 +08:00
♻️ 优化Emby模块配置及加载逻辑
This commit is contained in:
parent
9a1ebe0894
commit
dd42197b27
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user