mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-30 20:24:47 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
29 lines
1.2 KiB
Markdown
29 lines
1.2 KiB
Markdown
# 元数据源(metadata_provider)
|
||
|
||
新番规则入库前,AB 按 RSS 订阅的「解析器」取值选择元数据源,补全官方标题、季度、年份和海报。内置 `mikan` 与 `tmdb`。`@provider(points.METADATA_PROVIDER, id=...)` 增加新的取值:添加订阅时,「解析器」下拉框会列出它。
|
||
|
||
```python
|
||
from dataclasses import replace
|
||
|
||
from ab_sdk import Plugin, points, provider
|
||
from ab_sdk.ingest import Metadata, MetadataRequest
|
||
|
||
|
||
class BangumiTv:
|
||
async def enrich(self, request: MetadataRequest) -> Metadata | None:
|
||
info = await search(request.current.official_title) # 自己的实现
|
||
if info is None:
|
||
return None # 不修改
|
||
return replace(request.current, official_title=info.name, poster_link=info.cover)
|
||
|
||
|
||
class MyPlugin(Plugin):
|
||
@provider(points.METADATA_PROVIDER, id="bangumi-tv")
|
||
def bgm(self):
|
||
return BangumiTv()
|
||
```
|
||
|
||
- `request.kind` 区分番剧(`bangumi`)与电影(`movie`),`request.torrent.homepage` 是种子的详情页,`request.language` 是语言设置。
|
||
- 返回完整的新 `Metadata`,通常基于 `request.current` 修改;返回 `None` 表示不修改。
|
||
- 失败或超时时保留原值,并计入熔断。
|