Miru 中文文档 下载 App

Mirv Extension 基类的核心方法

基类的设计思想

Mirv 的 Extension 基类把扩展需要实现的能力抽成了一组生命周期方法。你继承它之后,重写你需要的方法,不需要的方法留空(基类有默认空实现)。

export default class extends Extension {
  async latest(page) { /* 只重写这个就行 */ }
}

方法清单

方法时机参数返回值说明
load()扩展加载时(一次)无void初始化、登录、设置
unload()扩展卸载时(一次)无void清理资源
latest(page)用户浏览"最近更新"page: number(分页页码)ListItem[]返回最新内容列表
search(kw, page)用户搜索kw: string(关键词)、page: numberListItem[]返回搜索结果
detail(url)用户点进详情页url: string(扩展之前返回的唯一标识)Detail返回详细信息 + 分集/章节
watch(url)用户点播放/阅读url: string类型相关返回实际消费的内容
checkUpdate(url)检查追更url: stringstring(最新集/章节标识)返回最新版本标识供 Mirv 比对

最核心的 4 个:latest / search / detail / watch

这四个方法构成了 Mirv 扩展的最小可用实现。只要这四个写对了,扩展就能跑起来。

调用链路(以视频为例):

用户打开 Mirv → latest(1) 被调用 → 返回视频卡片列表
    → 用户点击搜索框输入"进击的巨人"
    → search("进击的巨人", 1) 被调用 → 返回匹配的卡片
    → 用户点击卡片 → detail(url) 被调用 → 返回分集列表 + 简介
    → 用户点击第 3 集 → watch(第3集的url) 被调用 → 返回播放地址
    → Mirv 接管播放

漫画和小说同理,只是返回的 Detail 和 watch 数据类型不同。

checkUpdate 可选但有用

如果你实现了 checkUpdate(url),Mirv 可以主动检查某个条目是否有新集 / 新章节——这是追更功能的基础。

返回值是一个字符串(比如最新章节标题或章节号),Mirv 拿它和上次记录的比对。返回值不一样就说明有更新。

load 和 unload

load() 在扩展加载时调用一次,适合做:

unload() 在扩展被禁用或卸载时调用一次,适合清理资源。

如果你的扩展不需要任何初始化逻辑,这两个方法可以不写。