mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-13 18:27:10 +00:00
Verification: PASS: 13 integration docs links/source paths; 5 factual corrections cross-checked against Parse.java/Action.java/Local.java/SiteApi.java/JarLoader.java; git diff --check origin/beta..HEAD Task-Guard: integration-docs-review-20260921
2.3 KiB
2.3 KiB
解析器接入
解析器位于顶层 parses。播放结果 parse=1 或 jx=1 时会按线路 flag 选择解析器。
字段表
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name |
string | "" |
解析器名称,UI 和 parse:{name} 前缀匹配的键 |
type |
number | 0 |
解析类型,取值见下表 |
url |
string | "" |
解析地址或 JAR parser key |
ext |
object | {} |
解析扩展,结构见下文 |
ext.flag |
string[] | [] |
适用播放 flag;空数组表示不过滤 |
ext.header |
object | {} |
解析请求 header |
click |
string | "" |
WebView 点击脚本 |
解析器请求 header 只从 ext.header 读取;顶层 header 字段不会反序列化为解析器配置。
解析类型
type |
名称 | 行为 |
|---|---|---|
0 |
Web 解析 | 打开解析 WebView 嗅探真实播放地址 |
1 |
JSON 解析 | 请求 url + webUrl,读取返回 JSON 的 url 或 data.url |
2 |
JAR Json 扩展 | 调用 JAR 中 com.github.catvod.parser.Json{url}.parse(jxs, webUrl) |
3 |
JAR Mix 扩展 | 调用 JAR 中 com.github.catvod.parser.Mix{url}.parse(jxs, parseName, flag, webUrl) |
4 |
聚合解析 | 并发尝试符合 flag 的 JSON 和 Web 解析器 |
当 url 已含 ? 且 ext 非空时,App 追加 cat_ext={base64(ext)}。
playUrl 前缀
| 前缀 | 行为 |
|---|---|
json:{url} |
临时使用 type=1 解析器,地址为 {url} |
parse:{name} |
使用配置里 name 等于 {name} 的解析器 |
| 无前缀且非空 | 作为 type=0 Web 解析地址 |
示例
{
"parses": [
{
"name": "演示解析",
"type": 1,
"url": "https://example.com/parse?url=",
"ext": {
"flag": ["qq", "iqiyi"],
"header": { "User-Agent": "Mozilla/5.0" }
}
}
]
}
错误处理
- JSON 解析返回的
url长度大于 40 才视为成功。 - 解析失败不中断播放流程,会进入解析错误处理。
- Web 解析页面不支持时,不要让 Spider 返回可解析 HTML 伪装成媒体地址。
源码依据
app/src/main/java/com/fongmi/android/tv/bean/Parse.javaapp/src/main/java/com/fongmi/android/tv/player/ParseJob.javaapp/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java