fikushon 扩展类型:小说源
fikushon 是什么
fikushon 类型(日语"フィクション",即小说 / Fiction 的变体拼写)的扩展负责接入网络小说 / 轻小说 / 网文等以文本形式消费的媒体源。它是三种扩展类型里最后加入的,官方仓库收录最少。
这个拼写是故意的
注意是 fikushon 而不是 fiction——这是 Miru 项目在定义扩展类型时选定的拼写(可能受日语词源影响)。如果你在写扩展时拼成了 fiction,Miru 无法识别,会把你的扩展归类错误甚至加载失败。
watch() 返回值
// 小说源扩展 watch() 返回值
{
title: "斗破苍穹",
subtitle: "第五卷 第 12 章 异火",
content: [
"第一章的第一段文字。",
"第一章的第二段文字。",
// ...该章节的所有段落,按顺序排列
]
}
title— 章节标题(可以和detail()返回的章节名一致,也可以是更详细的显示文本);subtitle— 副标题或章节说明(可选);content— 文本段落数组,每一项是一段完整的文字。
Miru 小说阅读器拿到后,会把 content 数组按顺序拼成一个可滚动的长页面,支持翻页、字号调整、背景切换等。
为什么 content 是数组而不是整段文本
原因有三:
- 段落间留白:阅读器在渲染时会自动在数组元素之间加段落间距,不需要你手动插空行;
- HTML 标签处理:很多小说站点的正文里混有 br、p、a 等 HTML 标签,扩展开发者在返回前应该先剥离这些标签,把原始文本按段落切分后塞进数组;
- 性能:逐段拼接比渲染一大块长 HTML 更流畅。
detail() 的 episodes
和 bangumi、manga 一样,fikushon 扩展的 detail() 返回 episodes 数组——这里它代表章节目录:
{
episodes: [
{ title: "第 1 章 陨落的天才", urls: [...] },
{ title: "第 2 章 斗气大陆", urls: [...] },
// ...
]
}
Miru 会把这些章节渲染成可点击的章节目录,点击某章节时调用 watch() 进入阅读器。
fikushon 扩展从哪来
和 manga 类似,fikushon 扩展主要来自第三方仓库和社区分享。官方仓库收录较少。如果你想要的小说源找不到现成的扩展,可能需要自己写一个—— fikushon 扩展的开发难度比 bangumi 和 manga 都低,因为只需要处理文本请求,不需要处理视频流或图片防盗链。