quark-auto-save/media_servers/README.md
2024-11-13 23:24:48 +08:00

76 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 媒体库模块开发指南
本指南介绍如何开发自定义媒体库模块,你可以通过添加新的媒体库模块来扩展项目功能。
## 基本结构
* 模块位于 `media_servers` 目录下.
* 每个模块是一个 `.py` 文件 (例如 `emby.py`, `plex.py`),文件名小写。
* 每个模块文件包含一个与文件名对应的大驼峰命名法类(例如 `emby.py` 中的 `Emby` 类)。
## 模块要求
每个模块类必须包含以下内容:
* **`default_config`**:字典,包含模块所需参数及其默认值。例如:
```python
# 该模块必须配置的键,值可留空
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` 中配置模块:
```json
{
"media_servers": {
"emby": {
"url": "http://your-emby-server:8096",
"token": "YOUR_EMBY_TOKEN"
}
}
}
```
当模块代码正确赋值 `default_config` 时,首次运行会自动补充缺失的键。
## 模块示例
参考 [emby.py](emby.py)
参考函数:
* **`get_info(self)`**:获取服务器信息(例如名称、版本),成功返回 `True`,失败返回 `False` 。用于验证赋值 `self.is_active`
* **`refresh(self, media_id)`**:刷新指定媒体信息,成功返回服务器响应数据(通常是字典),失败返回 `None`
* **`search(self, media_name)`**:搜索媒体. 成功返回服务器响应数据通常包含媒体ID的字典, 失败返回 `None`
### 最佳实践
requests 部分使用 try-except 块,以防模块请求出错中断整个转存任务。
```python
try:
response = requests.request("GET", url, headers=headers, params=querystring)
# 处理响应数据
# ......
# 返回
except requests.exceptions.RequestException as e:
print(f"获取Emby媒体库信息出错: {e}")
return False
```