适配配置
基于规则的,可自定义的适配方案,用于在网页上采集番剧信息从而实现弹幕的自动匹配。
基本概念
番剧信息
弹幕的自动匹配需要4个基本信息
适配配置允许用户为单独为每个信息提供XPath
和regex
番剧标题
当前播放的番剧的名称。作为关键词用于搜索番剧信息。必须提供。
集数
当前播放的是第几集。非分集视频(如电影)可忽略。默认为1。
用于从检索到的番剧信息中选择对应的集数。
季
当前播放的是第几季。存在时,作为关键词的一部分用于搜索番剧信息。搜索时会将季信息与番剧标题拼接。
季不一定是数字,任何可以用于消歧义的信息都可以。比如进击的巨人 最终季 完结篇中,季为最终季 完结篇。
很多时候,季信息是标题的一部分(如上面这样的),这种情况下应该将季信息作为标题的一部分提供。
然而有的网站会将季信息提取出来独立在标题外,这时就需要单独提供季的XPath
和regex
。
单集标题
当前播放的单集的标题。非分集视频默认为番剧标题。辅助集数进行匹配。
以这个标题为例:
四个信息分别为:
- 番剧标题:【我推的孩子】
- 季:第二季
- 集数:01(转换为数字时为1)
- 单集标题:情感演技
也可以将第二季理解为标题的一部分:
- 番剧标题:【我推的孩子】 第二季
- 季:空
- 集数:01
- 单集标题:情感演技
这两种情况都是可以的,选择编写简单的规则即可。
规则
为了提取这些信息,需要根据网页的结构编写规则
规则是XPath
和正则表达式regex
的组合,XPath
用于选择信息所在的节点,regex
用于从节点的文本中提取信息。
插件会监视选择到的节点,当节点的文本发生变化时,插件会重新提取信息,以此判断是否需要更新弹幕。
一个适配配置可以包含至多4个规则,分别对应上述4个番剧信息。每个规则可以包含多条XPath
和regex
。
其中,标题是必须的,其他信息可以省略。集数必须是数字,季和单集标题可以是任意字符串。暂不支持非数字的集数,如“第一集”。
注意事项
- 适配配置需要和装填配置关联(装填配置中选择)
- 适配配置只在存在视频时生效
regex
固定包含i
标志,表示忽略大小写XPath
和regex
存在多个时,取第一个成功匹配的- 如果
XPath
选择到多个节点,取第一个 XPath
需要选择一个节点,不支持如concat(//*[@id="title"],"")
这样的输出字符串的XPath
XPath
可以从浏览器的开发者工具中复制。复制得到的XPath
不一定能够覆盖所有情况,可能需要手动调整。
编写规则
由于网页的结构各不相同,适配配置需要根据网页的结构编写。
这里考虑两种情况:信息全部在一个节点中和信息分散在多个节点中。
单个节点
默认,也是最普遍的情况。所有信息都存在于一个节点中,这个节点通常是标题。
在表单中表现为勾选 仅使用标题匹配 选项。
举个简单的例子
假设网页上有这样一个标题:
败犬女主太多了! 第03集 在战斗开始前就输了
对应HTML
这个标题包含了番剧标题、集数和单集标题。
从这个标题中提取信息可以使用以下XPath
:
和以下regex
:
再举一个稍复杂的例子:
败犬女主太多了!第03集在战斗开始前就输了
对应HTML
可以发现,虽然信息分散在多个span
中,但是这些span
都在同一个p
和div
中,选择div
即可从文本中提取所有信息。
和上面的例子的区别在于这里的空格并非空格符,而是CSS
样式,需调整regex
。
另外可以发现div
中有一个data-title
属性,这个属性包含了所有信息,也可以选择这个属性。
基于这个原则,理论上所有的网页都可以理解为一个节点,只需要选择最小的包含所有信息的节点,然后使用regex
提取信息即可。
当然这样可能会导致regex
变得复杂,所以还可以选择使用多个节点的配置。
多个节点
即信息分散在多个节点中,这种情况下可以单独提供每个信息的XPath
和regex
。
在表单中表现为取消勾选 仅使用标题匹配 选项。
接着用上面的例子
可以提供以下XPath
和regex
:
标题
集数
单集标题
此例子中默认季存在于标题中,所以不需要提供季的XPath
和regex
。