quark-auto-save/media_servers
2024-11-13 23:24:48 +08:00
..
alist.py 添加刷新 Alist 目录模块 2024-11-13 23:11:05 +08:00
emby.py ♻️ 优化Emby模块,重构调用逻辑 2024-11-13 23:10:20 +08:00
README.md 📝 添加媒体服务器模块开发指南 2024-11-13 23:24:48 +08:00

媒体库模块开发指南

本指南介绍如何开发自定义媒体库模块,你可以通过添加新的媒体库模块来扩展项目功能。

基本结构

  • 模块位于 media_servers 目录下.
  • 每个模块是一个 .py 文件 (例如 emby.py, plex.py),文件名小写。
  • 每个模块文件包含一个与文件名对应的大驼峰命名法类(例如 emby.py 中的 Emby 类)。

模块要求

每个模块类必须包含以下内容:

  • default_config:字典,包含模块所需参数及其默认值。例如:
# 该模块必须配置的键,值可留空
default_config = {"url": "", "token": ""}
  • is_active:布尔值,默认为 False.

  • __init__(self, **kwargs):构造函数,接收配置参数 kwargs。它应该:

    1. 检查 kwargs 是否包含所有 default_config 中的参数,缺少参数则打印警告。
    2. 若参数完整,尝试连接服务器并验证配置,成功则设置 self.is_active = True
  • run(self, task):整个模块入口函数,处理模块逻辑。

    • task 是一个字典,包含任务信息。如果需要修改任务参数,返回修改后的 task 字典;
    • 无修改则不返回或返回 False

配置文件

quark_config.json 中配置模块:

{
  "media_servers": {
    "emby": {
      "url": "http://your-emby-server:8096",
      "token": "YOUR_EMBY_TOKEN"
    }
  }
}

当模块代码正确赋值 default_config 时,首次运行会自动补充缺失的键。

模块示例

参考 emby.py

参考函数:

  • get_info(self):获取服务器信息(例如名称、版本),成功返回 True,失败返回 False 。用于验证赋值 self.is_active

  • refresh(self, media_id):刷新指定媒体信息,成功返回服务器响应数据(通常是字典),失败返回 None

  • search(self, media_name):搜索媒体. 成功返回服务器响应数据通常包含媒体ID的字典, 失败返回 None

最佳实践

requests 部分使用 try-except 块,以防模块请求出错中断整个转存任务。

try:
    response = requests.request("GET", url, headers=headers, params=querystring)
    # 处理响应数据
    # ......
    # 返回
except requests.exceptions.RequestException as e:
    print(f"获取Emby媒体库信息出错: {e}")
    return False