搜不到、点不开、选集是空的,先弄清断在哪一层
绝大多数「规则坏了」的报障,其实坏的不是规则。从搜索到播放是一个四段漏斗,每一段各有一个选择器负责,症状和字段是一一对应的。先定位到段,再决定要不要动手改。
一条规则要过四道门
Kazumi 的规则只干两件事:搜索和选集。但落到字段上是四段,因为「拿到一批结果」和「从结果里取出名字和链接」是两步,选集也一样。四道门里任何一道过不去,表现都不一样:
| 你看到的 | 断在哪 | 对应字段 |
|---|---|---|
| 搜索完列表一片空白 | 根本没装规则,或规则没启用,或清单选择器匹配不到节点 | SearchList |
| 有若干条结果,但名字全是空的、乱码或整段网页文字 | 清单取到了,但取名字的位置错了 | SearchName |
| 点了结果,进去是空白页、404 或站点首页 | 名字对了,但链接取错了 | SearchResult |
| 进了详情,提示没有可用线路 | 选集第一步没匹配到 | ChapterRoads |
| 线路有,但剧集列表是空的 | 选集第二步没匹配到 | ChapterResult |
| 剧集都列出来了,点开却播不动 | 不是规则的问题,是视频地址嗅探没成功 | — |
先排除三个不是「写错」的原因
在动手改选择器之前,先确认这三件事——它们占了我见过的大部分误判:
安装包里不含任何默认规则,第一次启动必须自己装一条。装完还要确认它在规则列表里处于启用状态——禁用的规则不参与搜索,表现和没装完全一样。
换一部热门番、换一个关键词(日文原名、繁体名、罗马音)再搜。全都搜不到才是规则问题;只有某一部搜不到,大概率是那个源本来就没有这部作品。
在详情页把线路逐个换一遍。只有一个源不行,就是你那条规则的问题;所有源同时失效,先想想是不是网络或客户端版本变了。
在浏览器里复现一遍选择器
规则里的 baseURL 加上 searchURL(把 @keyword 换成番名)就是一条能直接打开的网址。打开它,按 F12 进 Console,用 $x() 跑一遍规则里的选择器,就知道选择器还灵不灵:
// 1. 搜索结果清单:返回的数组长度应该大于 0
$x("//div[@class='public-list-box']")
// 2. 清单里每一条的标题:看文本对不对
$x("//div[@class='public-list-box']//a/@title")
// 3. 清单里每一条的链接:看是不是完整的播放页地址
$x("//div[@class='public-list-box']//a/@href")
上面三个选择器只是示意,实际要换成你那条规则里写的那串。读结果的规则很简单:
- 长度是 0 —— 选择器匹配不到任何节点。站点改版了,或者这条规则的 baseURL 指错了站。
- 长度对但内容是空的 —— 定位到了容器,但取文本的位置往里/往外差了一两层。改 SearchName,不是改 SearchList。
- 长度和内容都对 —— 这条选择器没问题,断点在下一段。往下走一节。
四种典型症状,各自怎么修
搜索列表永远是空的,但规则是刚装的
先在浏览器里打开拼好的搜索网址。打不开 → 站点本身不通,或者 baseURL 少了协议头、多了斜杠;能打开但没有搜索结果 → 用 $x 试 SearchList,长度为 0 就是站点改版了。改不动就换一条规则,别在一个已经改版的源上耗时间。
能搜到,但每条结果点进去都是同一个页面
SearchResult 取到了容器的链接,而不是条目自己的链接。常见原因是少写了一层相对定位:应该写成「清单 → 这一条 → 里面的 a」,结果写成了「清单里的第一个 a」。改法是让选择器以清单条目为起点再往里取。
详情页提示没有可用线路
这条规则能搜索、不能选集,说明搜索那半段是好的,问题在 ChapterRoads。多半是站点把「线路」换成了动态渲染——页面源码里没有线路节点,是脚本跑完之后才插进去的。这种站 XPath 抓不到,只能改用 API 类型的规则,或者换源。
线路有了,选集是空的
ChapterRoads 对、ChapterResult 错。这一段的常见毛病是把整块剧集容器当成了单集,于是只匹配到一个「全集」节点。逐层往里收,直到选择器返回的条数等于实际集数。
昨天还能用,今天突然全都不行了
先看站点是不是换了域名。规则里的地址是 baseURL 拼出来的,域名一换,所有链接都会指向一个不存在的页面。其次看是不是加了防爬校验(清单里 antiCrawlerEnabled 为真的规则就是为这种站点准备的)。两样都不是,那就是改版,等规则作者更新,或者自己改。
修不动的时候,正确的下一步
先把顺序摆正,能省掉一半的无效劳动:
- 换源。同一个番在别的源上大概率是好的。看番这件事,换源比修规则快十倍。
- 更新规则。你手上那条可能是旧版,仓库里的版本已经跟着站点改过了。更新判断和降级规则都在规则仓库怎么运作里。
- 改选择器。只有前两步都不行,才值得打开规则编辑器动手——而且要改一条新的、留着旧的。
- 反馈给作者。仓库里的规则通常留了作者 ID,改好之后提 PR 比在群里喊一句有用。
改完之后,怎么验证真的修好了
别在编辑器里看着像就保存。按同一个顺序回放一遍:搜索 → 点进详情 → 换两条线路 → 选第三集 → 播放十秒。任何一步跳过,都可能留下一个「看起来能用」的规则。
改好的规则可以导成 kazumi:// 链接发给别人,也可以在规则编辑器里导出 JSON 文件——两种格式的差别在规则入门里写过。如果你打算从头写一条而不是改一条,直接看XPath 规则开发,那篇是从五个字段的结构讲起的。