Troubleshooting

搜不到、点不开、选集是空的,先弄清断在哪一层

绝大多数「规则坏了」的报障,其实坏的不是规则。从搜索到播放是一个四段漏斗,每一段各有一个选择器负责,症状和字段是一一对应的。先定位到段,再决定要不要动手改。

四段定位法 含浏览器复现步骤 适合:自己写过或改过规则的人

一条规则要过四道门

Kazumi 的规则只干两件事:搜索和选集。但落到字段上是四段,因为「拿到一批结果」和「从结果里取出名字和链接」是两步,选集也一样。四道门里任何一道过不去,表现都不一样:

症状与断点的对应关系
你看到的断在哪对应字段
搜索完列表一片空白根本没装规则,或规则没启用,或清单选择器匹配不到节点SearchList
有若干条结果,但名字全是空的、乱码或整段网页文字清单取到了,但取名字的位置错了SearchName
点了结果,进去是空白页、404 或站点首页名字对了,但链接取错了SearchResult
进了详情,提示没有可用线路选集第一步没匹配到ChapterRoads
线路有,但剧集列表是空的选集第二步没匹配到ChapterResult
剧集都列出来了,点开却播不动不是规则的问题,是视频地址嗅探没成功—
最后一行是重点规则只负责「把 Kazumi 带到最终的播放页面」,从页面里把视频真实地址嗅探出来是客户端自己做的启发式判断。所以最后一格换成别的源还可能成功,改选择器没用。

先排除三个不是「写错」的原因

在动手改选择器之前,先确认这三件事——它们占了我见过的大部分误判:

1
规则真的装上并启用了吗

安装包里不含任何默认规则,第一次启动必须自己装一条。装完还要确认它在规则列表里处于启用状态——禁用的规则不参与搜索,表现和没装完全一样。

2
是不是只有这一部番搜不到

换一部热门番、换一个关键词(日文原名、繁体名、罗马音)再搜。全都搜不到才是规则问题;只有某一部搜不到,大概率是那个源本来就没有这部作品。

3
所有源都这样,还是只有一个源

在详情页把线路逐个换一遍。只有一个源不行,就是你那条规则的问题;所有源同时失效,先想想是不是网络或客户端版本变了。

在浏览器里复现一遍选择器

规则里的 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。
  • 长度和内容都对 —— 这条选择器没问题,断点在下一段。往下走一节。
填的是 XPath,不是 CSS 选择器 五个字段都按 XPath 解析,写法以 // 开头。从浏览器「复制 selector」拿到的是 CSS 语法(形如 .list > a),粘进去不会报错,只会一条都匹配不到——这是新手最常踩的坑。要复制的话,在开发者工具的元素面板右键选「复制 → 复制 XPath」。

四种典型症状,各自怎么修

搜索列表永远是空的,但规则是刚装的

先在浏览器里打开拼好的搜索网址。打不开 → 站点本身不通,或者 baseURL 少了协议头、多了斜杠;能打开但没有搜索结果 → 用 $x 试 SearchList,长度为 0 就是站点改版了。改不动就换一条规则,别在一个已经改版的源上耗时间。

能搜到,但每条结果点进去都是同一个页面

SearchResult 取到了容器的链接,而不是条目自己的链接。常见原因是少写了一层相对定位:应该写成「清单 → 这一条 → 里面的 a」,结果写成了「清单里的第一个 a」。改法是让选择器以清单条目为起点再往里取。

详情页提示没有可用线路

这条规则能搜索、不能选集,说明搜索那半段是好的,问题在 ChapterRoads。多半是站点把「线路」换成了动态渲染——页面源码里没有线路节点,是脚本跑完之后才插进去的。这种站 XPath 抓不到,只能改用 API 类型的规则,或者换源。

线路有了,选集是空的

ChapterRoads 对、ChapterResult 错。这一段的常见毛病是把整块剧集容器当成了单集,于是只匹配到一个「全集」节点。逐层往里收,直到选择器返回的条数等于实际集数。

昨天还能用,今天突然全都不行了

先看站点是不是换了域名。规则里的地址是 baseURL 拼出来的,域名一换,所有链接都会指向一个不存在的页面。其次看是不是加了防爬校验(清单里 antiCrawlerEnabled 为真的规则就是为这种站点准备的)。两样都不是,那就是改版,等规则作者更新,或者自己改。

修不动的时候,正确的下一步

先把顺序摆正,能省掉一半的无效劳动:

  1. 换源。同一个番在别的源上大概率是好的。看番这件事,换源比修规则快十倍。
  2. 更新规则。你手上那条可能是旧版,仓库里的版本已经跟着站点改过了。更新判断和降级规则都在规则仓库怎么运作里。
  3. 改选择器。只有前两步都不行,才值得打开规则编辑器动手——而且要改一条新的、留着旧的。
  4. 反馈给作者。仓库里的规则通常留了作者 ID,改好之后提 PR 比在群里喊一句有用。
一个容易忽略的前提规则指向的是第三方网站,这些站点什么时候改版、什么时候加校验,都不受 Kazumi 控制。所以「某条规则坏了」是常态而不是故障——这也是为什么这个软件要求你自己保管来源,而不是替你固定一波内容。

改完之后,怎么验证真的修好了

别在编辑器里看着像就保存。按同一个顺序回放一遍:搜索 → 点进详情 → 换两条线路 → 选第三集 → 播放十秒。任何一步跳过,都可能留下一个「看起来能用」的规则。

改好的规则可以导成 kazumi:// 链接发给别人,也可以在规则编辑器里导出 JSON 文件——两种格式的差别在规则入门里写过。如果你打算从头写一条而不是改一条,直接看XPath 规则开发,那篇是从五个字段的结构讲起的。

Next

选择器没问题,
那可能是根本连不上仓库。

搜不到番还有一种完全不同的原因:规则压根没下载成功。分清「规则失效」和「网络不通」,能少走很多弯路。