| name | 纯纯看番 JS 源扩展开发 |
| description | 为纯纯看番 (EasyBangumi) 应用创建 JavaScript 源扩展。使用场景:用户提供一个番剧网站 URL,需要分析网站结构并实现插件化集成,包括页面展示、搜索、详情获取和视频播放功能。 |
纯纯看番 JS 源扩展开发指南
核心工作流
1. 网站分析
使用浏览器 DevTools 分析目标网站:
- 首页/分类页的 HTML 结构和 URL 规律
- 搜索接口的请求格式
- 详情页的剧集列表结构
- 播放页的视频地址获取方式
2. 创建扩展骨架
var networkHelper = Inject_NetworkHelper;
var preferenceHelper = Inject_PreferenceHelper;
var okhttpHelper = Inject_OkhttpHelper;
var webProxyProvider = Inject_WebProxyProvider;
3. 实现组件
按顺序实现以下组件:
- PreferenceComponent - 偏好设置(如网站地址)
- PageComponent - 页面展示(主标签、子标签、内容列表)
- SearchComponent - 搜索功能
- DetailedComponent - 详情和播放线路
- PlayComponent - 视频地址解析
详细实现模式见 组件详解。
4. 调试测试
Log.d("MyAnime", "请求 URL: " + url);
Log.d("MyAnime", "解析元素数量:" + elements.size());
throw new ParserException("视频地址解析失败");
快速参考
元数据
| 字段 | 示例 |
|---|
| @key | @key heyanle.yhw |
| @label | @label 樱花动漫 |
| @versionName | @versionName 1.0.0 |
| @versionCode | @versionCode 1 |
| @libVersion | @libVersion 13 |
| @cover | @cover https://... |
组件签名
PreferenceComponent_getPreference() -> ArrayList
PageComponent_getMainTabs() -> ArrayList
PageComponent_getSubTabs(mainTab) -> ArrayList
PageComponent_getContent(mainTab, subTab, key) -> Pair
SearchComponent_search(page, keyword) -> Pair
DetailedComponent_getDetailed(summary) -> Pair
PlayComponent_getPlayInfo(summary, playLine, episode) -> PlayerInfo
常用 API
var req = okhttpHelper.cloudflareWebViewClient.newCall(OkhttpUtils.get(url));
var html = req.execute().body().string();
var fullUrl = SourceUtils.urlParser(rootUrl, path);
var doc = Jsoup.parse(html);
var elements = doc.select(".selector");
var webProxy = webProxyProvider.getWebProxy();
webProxy.loadUrl(url, networkHelper.defaultLinuxUA);
var videoUrl = webProxy.waitingForResourceLoaded(".*\\.m3u8");
var cover = makeCartoonCover({ id, url, title, cover });
参考资源
详细文档
类型定义
使用方法:
示例代码
工具脚本
使用方法:
node scripts/create-empty-extension.js <插件名称> [输出目录]
node scripts/create-empty-extension.js my-anime
node scripts/create-empty-extension.js sakura ./extensions
架构概览
纯纯看番 App
├─ ExtensionControllerV2
│ ├─ JsExtensionProviderV2
│ │ └─ JSExtensionLoader (解析元数据,创建 JSScope)
│ └─ JSComponentBundle (注入工具类,加载组件)
执行流程: 加载 → 注入 → 注册 → 运行