mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-13 18:27:10 +00:00
Verification: 12 module integration docs expanded; total 1164 lines; indexes and relative links validated; no empty docs; root README entry present Task-Guard: integration-docs-20260921
3.1 KiB
3.1 KiB
扩展包接入
站点和直播源通过 type、api、jar、ext 选择运行时。扩展 JAR 可以由顶层 spider 或站点/直播 jar 提供。
运行时选择
api 形态 |
运行时 |
|---|---|
http.../spider/... |
CatSpider HTTP 协议 |
*.py / 含 .py |
Python/Chaquopy |
*.js / 含 .js |
QuickJS |
csp_* |
JAR/JAVA |
| 其它 | SpiderNull |
JAR/JAVA
- 继承
com.github.catvod.crawler.Spider。 - 在
init(Context, String extend)解析站点ext。 - 实现内容接口并返回合法 JSON。
- 在
destroy()释放线程、网络、脚本上下文和流。 - JAR 地址支持配置相对路径;站点
jar覆盖顶层spider。
QuickJS
api指向.js。- 可
export default对象/工厂函数,或导出 CatVod 兼容__jsEvalReturn()。 - 方法签名见 Spider 接入协议。
- 可用
req/_http/pdfh/pdfa/pdfl/joinUrl/md5X/aesX/rsaX/local/getProxy/js2Proxy。 - CatVod 兼容模式初始化对象为
{ stype: 3, skey, ext },代理使用js2Proxy(...)。
Python/Chaquopy
api指向.py,继承base.spider.Spider。getDependence()可返回依赖模块名列表;运行时先下载到缓存目录再初始化。- 可用基类工具:
loadSpider/loadModule/fetch/post/html/regStr/cleanText/getProxyUrl/getCache/setCache/delCache。 - 只有包含 Chaquopy 运行时的构建变体可用;普通构建遇 Python 源会退回
SpiderNull。 ext=[]会被规范化为{},避免部分直播 Python Spider 反序列化失败。
CatSpider HTTP
api 是 http.../spider/... 时的内置协议,不需要本地 JAR/脚本;方法映射与请求体见 Spider 接入协议。
配置示例
{
"spider": "./java-spiders.jar",
"sites": [
{ "key": "java", "name": "Java 演示", "type": 3, "api": "csp_Demo", "jar": "./java.jar", "ext": {} },
{ "key": "js", "name": "JS 演示", "type": 3, "api": "./spider.js", "ext": {} },
{ "key": "cat", "name": "CatSpider 演示", "type": 3, "api": "https://bundle.example.com/spider/index", "ext": {} }
]
}
错误处理
- 初始化失败会退回
SpiderNull,不应影响其它站点。 - JAR/脚本更新后需要清理加载缓存或刷新配置。
- Python 依赖下载失败会初始化失败;不要在
init中无限重试。 - 外部脚本不要依赖未公开的 App 内部类;优先使用运行时公开 API。
验证清单
- 冷启动后站点可用。
- JAR/脚本路径加载正确。
- JS/Python 初始化
ext类型正确。 - 切换站点后
siteKey、代理和缓存隔离正确。 - 清理或重载配置后不再泄漏旧 Spider。
源码依据
app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.javaapp/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.javaapp/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.javaapp/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.javaquickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.javachaquo/src/main/python/base/spider.pychaquo/build.gradle