mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-24 07:26:52 +00:00
3.6 KiB
3.6 KiB
如何扩展探索功能的媒体数据源?
(仅支持 v2.2.7+ 版本)
-
探索功能仅内置
TheMovieDb、豆瓣和Bangumi数据源,可通过插件扩展探索功能的数据源范围,按以下方法开发插件(参考TheTVDB探索插件): -
- 实现
ChainEventType.DiscoverSource链式事件响应,将额外的媒体数据源塞入事件数据extra_sources数组中(注意:如果事件中已经有其它数据源,需要叠加而不是替换,避免影响其它插件塞入的数据)
name:数据源名称mediaid_prefix:数据源的唯一IDapi_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],关过滤条件存在依赖关系时需要设置,以便上级条件变化时清空下级条件值
- 实现
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="额外媒体数据源")
-
- 实现
ChainEventType.MediaRecognizeConvert链式事件响应(可选,如不实现则默认按标题重新识别媒体信息),根据媒体ID和转换类型,返回TheMovieDb或豆瓣的媒体数据,将转换后的数据注入事件数据media_dict中,可参考app/chain/media.py中的get_tmdbinfo_by_bangumiid。
mediaid:媒体ID,格式为mediaid_prefix:media_id,如 tmdb:12345、douban:1234567convert_type:转换类型,仅支持:themoviedb/douban,需要转换为对应的媒体数据并返回media_dict:转换后的媒体数据,格式为TheMovieDb/豆瓣的媒体数据
- 实现
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/豆瓣)")
-
- 启用插件后,点击探索功能将自动生成额外的数据源标签及页面,页面中选择不同的过滤条件时会重新触发API请求。