mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-24 07:26:52 +00:00
62 lines
3.6 KiB
Markdown
62 lines
3.6 KiB
Markdown
# 如何扩展探索功能的媒体数据源?
|
||
|
||
返回 [README](../../README.md) | [FAQ 索引](../FAQ.md)
|
||
|
||
**(仅支持 `v2.2.7+` 版本)**
|
||
- 探索功能仅内置`TheMovieDb`、`豆瓣`和`Bangumi`数据源,可通过插件扩展探索功能的数据源范围,按以下方法开发插件(参考`TheTVDB探索`插件):
|
||
- 1. 实现`ChainEventType.DiscoverSource`链式事件响应,将额外的媒体数据源塞入事件数据`extra_sources`数组中(注意:如果事件中已经有其它数据源,需要叠加而不是替换,避免影响其它插件塞入的数据)
|
||
|
||
- `name`:数据源名称
|
||
- `mediaid_prefix`:数据源的唯一ID
|
||
- `api_path`:数据获取API相对路径,需要在插件中实现API接口功能,GET模式接收过滤参数(注意:page参数默认需要有),返回`List[schemas.MediaInfo])`格式数据(注意:mediaid_prefix和media_id需要赋值,用于唯一索引媒体详细信息和转换媒体数据)。
|
||
- `filter_params`:数据源过滤参数名的字典,相关参数会传入插件API的GET请求中
|
||
- `filter_ui`:数据过滤选项的UI配置json,与插件配置表单方式一致
|
||
- `depends`: UI依赖关系字典Dict[str, list],关过滤条件存在依赖关系时需要设置,以便上级条件变化时清空下级条件值
|
||
|
||
```python
|
||
class DiscoverMediaSource(BaseModel):
|
||
"""
|
||
探索媒体数据源的基类
|
||
"""
|
||
name: str = Field(..., description="数据源名称")
|
||
mediaid_prefix: str = Field(..., description="媒体ID的前缀,不含:")
|
||
api_path: str = Field(..., description="媒体数据源API地址")
|
||
filter_params: Optional[Dict[str, Any]] = Field(default=None, description="过滤参数")
|
||
filter_ui: Optional[List[dict]] = Field(default=[], description="过滤参数UI配置")
|
||
|
||
class DiscoverSourceEventData(ChainEventData):
|
||
"""
|
||
DiscoverSource 事件的数据模型
|
||
Attributes:
|
||
# 输出参数
|
||
extra_sources (List[DiscoverMediaSource]): 额外媒体数据源
|
||
"""
|
||
# 输出参数
|
||
extra_sources: List[DiscoverMediaSource] = Field(default_factory=list, description="额外媒体数据源")
|
||
```
|
||
|
||
- 2. 实现`ChainEventType.MediaRecognizeConvert`链式事件响应(**可选**,如不实现则默认按标题重新识别媒体信息),根据媒体ID和转换类型,返回TheMovieDb或豆瓣的媒体数据,将转换后的数据注入事件数据`media_dict`中,可参考`app/chain/media.py`中的`get_tmdbinfo_by_bangumiid`。
|
||
|
||
- `mediaid`:媒体ID,格式为`mediaid_prefix:media_id`,如 tmdb:12345、douban:1234567
|
||
- `convert_type`:转换类型,仅支持:themoviedb/douban,需要转换为对应的媒体数据并返回
|
||
- `media_dict`:转换后的媒体数据,格式为`TheMovieDb/豆瓣`的媒体数据
|
||
|
||
```python
|
||
class MediaRecognizeConvertEventData(ChainEventData):
|
||
"""
|
||
MediaRecognizeConvert 事件的数据模型
|
||
Attributes:
|
||
# 输入参数
|
||
mediaid (str): 媒体ID,格式为`前缀:ID值`,如 tmdb:12345、douban:1234567
|
||
convert_type (str): 转换类型 仅支持:themoviedb/douban,需要转换为对应的媒体数据并返回
|
||
# 输出参数
|
||
media_dict (dict): TheMovieDb/豆瓣的媒体数据
|
||
"""
|
||
# 输入参数
|
||
mediaid: str = Field(..., description="媒体ID")
|
||
convert_type: str = Field(..., description="转换类型(themoviedb/douban)")
|
||
# 输出参数
|
||
media_dict: dict = Field(default=dict, description="转换后的媒体信息(TheMovieDb/豆瓣)")
|
||
```
|
||
- 3. 启用插件后,点击探索功能将自动生成额外的数据源标签及页面,页面中选择不同的过滤条件时会重新触发API请求。
|