Files
TVbox-interface/1.md
T
2025-09-08 12:49:15 +08:00

197 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
XBPQ 引擎完全指南:TVBox 规则编写教程
一、XBPQ 是什么?
XBPQ 是 TVBox 家族中的 「csp_XBPQ」引擎,专为影视 / 直播类 App 设计的规则解析工具,核心优势如下:
低门槛:纯字符串规则写法,无需 Python/JS 编程基础。
多场景适配:同一条规则可同时支持点播 App(TVBox、影视仓、Pluto 等)的网页刮削,以及直播源的自动分组与嗅探。
灵活高效:对比其他规则类型有明显优势:
vs drpy/py:学习成本最低,调试速度最快;
vs JSON 直连:支持逆向无接口的静态网页站点。
二、核心语法速查表
语法类型 写法示例 说明
基础截取 起点 && 终点 截取 “起点” 与 “终点” 之间的内容
二次截取 起点 && 终点 新起点 && 新终点 按顺序匹配,优先使用前序规则,匹配失败则用后续规则
内容拼接 "前缀"+ 变量 +"后缀" 支持字符串与变量(如 {wd})混合拼接
分类指定 默认–a&&b 电影–c&&d 电视剧–e&&f 为不同分类单独指定规则,第一段必须为 “默认–”
JSON 解析 data.list[1].name 提取 JSON 数据,下标从 1 开始(区别于常规 0 开始)
特殊字符转义 \$、\#、\& 对保留字 $、#、&、*、[、] 需加反斜杠转义
内置变量 {cateId}、{catePg}、{wd} 等 常用变量:频道 ID、页码、搜索关键词、地区、年份等(详见字段清单)
内容筛选 类型$动作#年份$2024 按 “键 $ 值” 筛选,多条件用 # 分隔
播放嗅探词 m3u8#mp4#flv 嗅探指定格式的播放地址,多格式用 # 分隔
链接补全 前缀:http://cdn.xxx.com 自动补全相对路径(如 /play.html → http://cdn.xxx.com/play.html
三、完整字段清单(ext 节点内)
字段 说明 示例
主页 url 站点入口地址 https://www.xxx.com
分类 url 列表页模板(支持变量) https://www.xxx.com/vodshow/{cateId}--{area}--{catePg}--{year}.html
分类 自建频道映射 电影$1#电视剧$2#综艺$3#动漫$4$ 后为频道 ID,与 {cateId} 对应)
筛选 筛选条件(可留空) 类型$动作#地区$中国 或 {}(自动识别)
数组 列表循环体(每部影片的外层容器) <div class="stui-vodlist__box">&&</div>
标题 影片名称 title="&&"(截取 title 属性内内容)
图片 封面图片地址 data-original="&&"
链接 影片详情页地址 href="&&"
副标题 更新状态 / 集数 <span class="pic-text text-right">&&</span>
嗅探词 正片格式筛选 m3u8#mp4#flv#akamaized.net
播放数组 播放线路外层容器 class="stui-content__playlist clearfix">&&</ul>
播放列表 单集容器 <a&&/a>(匹配所有 <a> 标签内的单集)
播放标题 线路名称 h3&&/h3(截取 <h3> 标签内的线路名)
播放链接 单集真实播放地址 href="&&"
直接播放 直播开关(1 = 开启,0 = 关闭) 1(直播源必须设为 1,否则跳转 WebView)
链接前缀 / 后缀 补全相对路径 前缀:http://cdn.xxx.com;后缀:.m3u8
搜索 url 搜索入口模板 https://www.xxx.com/search.php?wd={wd}{wd} 为搜索关键词)
搜索数组 / 标题 / 图片 / 链接 搜索结果解析规则 同 “数组 / 标题 / 图片 / 链接” 逻辑
二次截取 多结构适配规则 ` 默认–<ul>&&</ul> 电视剧–<ol>&&</ol>`
四、极速入门:3 步搭建基础规则
1. 极速模板(直接修改 3 处即可用)
json
{
"key": "极速演示",
"name": "极速┃BPQ",
"type": 3,
"api": "csp_XBPQ",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"主页url": "https://www.你的目标站.com", // 1. 修改为目标站点主页
"分类url": "https://www.你的目标站.com/vodshow/{cateId}--------{catePg}---.html", // 2. 修改为目标站列表页模板
"分类": "电影$1#电视剧$2#综艺$3#动漫$4", // 3. 匹配目标站频道ID
"数组": "<div class=\"stui-vodlist__box\">&&</div>",
"标题": "title=\"&&\"",
"图片": "data-original=\"&&\"",
"链接": "href=\"&&\"",
"副标题": "<span class=\"pic-text text-right\">&&</span>",
"播放数组": "class=\"stui-content__playlist clearfix\">&&</ul>",
"播放列表": "<a&&/a>",
"播放链接": "href=\"&&\"",
"嗅探词": "m3u8#mp4#flv"
}
}
2. 关键步骤详解:分类 url 编写(3 步填空)
分类 url 是 “告诉 TVBox 点击频道时加载哪一页” 的模板,核心是用变量替换动态数字。
步骤 1:背模板(5 个核心符号)
符号 名称 作用
{} 占位符 TVBox 自动替换为真实值(如频道 ID、页码)
cateId 频道号 对应 “分类” 字段中 $ 后的数字
catePg 页码号 翻页时自动 + 1
-/-- 分隔线 照抄目标站 URL 中的格式
.html 后缀 目标站页面后缀(如.asp、/ 等)
步骤 2:提取真实 URL 并替换变量
打开目标站 “电影” 频道第 2 页,复制地址栏 URL:
https://www.80kv.com/vodshow/1--------2---.html
将动态数字(1 = 电影 ID,2 = 页码)替换为变量:
https://www.80kv.com/vodshow/{cateId}--------{catePg}---.html
步骤 3:匹配 “分类” 字段
确保 “分类” 中$后的数字与{cateId}对应: "分类": "电影$1# 电视剧$2#综艺$3# 动漫 \$4"\
3. 关键步骤详解:数组与播放规则编写
核心口诀:先圈大盒子(数组),再圈小盒子(播放数组),最后拿链接(播放链接)。
1)数组:定义列表循环体
数组是 “每部影片的最外层容器”,用于告诉 XBPQ “从哪开始循环解析单部影片”。
示例源码:
html
预览
<div class="stui-vodlist__box"> <!-- 循环头 -->
<a href="/v/123.html" title="长风渡" data-original="/upload/pic.jpg">
<span class="pic-text text-right">更新至20集</span>
</a>
</div> <!-- 循环尾 -->
<div class="stui-vodlist__box">
<a href="/v/124.html" title="玉骨遥" data-original="/upload/pic2.jpg">
<span class="pic-text text-right">更新至36集</span>
</a>
</div>
规则写法:
"数组": "<div class=\"stui-vodlist__box\">&&</div>"
(将循环头和循环尾填入 “起点 && 终点”)
2)播放规则:解析线路与单集
播放规则需配合播放数组(线路块)+ 播放列表(单集)+ 播放链接(地址) 三字段。
示例源码:
html
预览
<!-- 线路块1 -->
<h3>线路①</h3>
<ul class="stui-content__playlist clearfix"> <!-- 播放数组头 -->
<li><a href="/play/123-1-1.html">第01集</a></li> <!-- 播放列表 -->
<li><a href="/play/123-1-2.html">第02集</a></li>
</ul> <!-- 播放数组尾 -->
<!-- 线路块2 -->
<h3>线路②</h3>
<ul class="stui-content__playlist clearfix">
<li><a href="/play/123-2-1.html">第01集</a></li>
</ul>
规则写法:
播放数组(线路块):"播放数组": "class=\"stui-content__playlist clearfix\">&&</ul>"
播放列表(单集):"播放列表": "<a&&/a>"(匹配所有<a>标签内的单集)
播放链接(地址):"播放链接": "href=\"&&\""(提取 href 属性内的地址)
五、进阶技巧:二次截取与免嗅探
1. 二次截取:适配多结构场景
当同一页面中不同分类 / 线路的 HTML 结构不同时,需用二次截取为每个场景单独指定规则。
1)适用场景
不同分类结构不同(如电影用<div class="m-box">,电视剧用<div class="tv-item">);
置顶推荐位与普通列表结构不同;
多播放线路的容器结构不同。
2)语法格式
"字段名": "默认–起点&&终点||分类A–起点&&终点||分类B–起点&&终点"
用–分隔 “分类名” 与 “规则”;
用||分隔不同分类的规则;
第一段必须为 “默认–”(处理未匹配的场景)。
3)实战示例:列表页多分类适配
源码简化:
html
预览
<!-- 电影区 -->
<div class="m-box"><a title="电影A" href="/v/123.html">…</a></div>
<div class="m-box"><a title="电影B" href="/v/124.html">…</a></div>
<!-- 电视剧区 -->
<div class="tv-item"><a title="剧集A" href="/v/234.html">…</a></div>
<div class="tv-item"><a title="剧集B" href="/v/235.html">…</a></div>
规则写法:
分类字段:"分类": "电影$1#电视剧$2"
数组字段(二次截取):
"数组": "默认–<div class=\"m-box\">&&</div>||电视剧–<div class=\"tv-item\">&&</div>"
2. 免嗅探:0 秒启动播放(明文地址专用)
免嗅探让 TVBox 直接使用截取的地址播放,无需二次解析,适用于源码中直接可见完整播放地址的场景。
1)适用条件(必须同时满足)
源码中直接出现完整地址(如https://cdn.xxx.com/a.m3u8);
地址无需跳转、解密或拼接。
2)规则写法
播放链接字段末尾加;;m
"播放链接": "href=\"&&\";;m" 或 "播放链接": "<video src=\"&&\";;m"
开启 TVBox 全局开关:设置 → 播放器 → 免嗅探(打勾)
3)禁止使用场景
地址为相对路径(如/play/123.html);
地址为加密串(如 base64 编码)或参数(如/play.php?sign=xxx);
地址需 JS 动态生成。
六、排错指南:常见错误与解决方案
序号 错误字段 典型错误示例 TVBox 表现 解决方案
1 主页 url 漏写https://或多/ 加载主页失败 电脑访问 URL 确认是否返回 200
2 分类 url {page}替代{catePg} 翻页不动(始终显示第 1 页) 替换为正确变量,手动拼接 URL 测试
3 分类 用中文;分隔 左侧频道空白 改用英文#分隔
4 数组 起点 / 终点写反或漏&& 列表空白(日志显示 0 条数据) 用 Notepad++ 搜索特征串确认是否存在
5 标题 title=&&(漏引号) 片名显示 undefined 按源码补全引号(如title="&&"
6 图片 / 链接 相对路径未加前缀 封面裂图或 404 补充 “链接前缀”(如http://cdn.xxx.com
7 搜索 url {WD}替代{wd} 搜索无结果 改用小写{wd},手动访问搜索 URL 测试
8 播放数组 包含<h3>标签 只显示 1 条线路 仅保留线路容器的特征(如</ul>
9 嗅探词 漏写m3u8 能嗅探但无法播放 抓包补充正确格式(详见 “嗅探词扩展”)
10 二次截取 漏写 “默认–” 未匹配分类空白 第一段添加 “默认–规则”
11 JSON 解析 下标从 0 开始(list[0] 数据错位或 undefined 下标改为从 1 开始
12 转义 未转义" 规则无法导入(JSON 校验失败) 用\"转义引号,在线 JSON 校验器验证格式
七、扩展技巧:嗅探词与广告屏蔽
1. 嗅探词扩展(10 秒抓包法)
电脑 Chrome 打开播放页 → F12 → Network
筛选框输入m3u8,点击播放;
复制抓到的地址后缀(如.m3u8、.mp4),用#添加到 “嗅探词” 字段;
建议保留 5-10 个常用格式(超过 20 个可能导致低端设备延迟)。
2. 广告域名屏蔽
播放页 F12 → Network → 筛选框输入ad(或doubleclick等广告关键词);
复制广告域名(如ad.mgdmt.com);
将域名添加到 TVBox 的ads数组中,立即生效(无需重启)。