[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-78475":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},78475,"webhtv","fish2018\u002Fwebhtv","fish2018","WebHomeTV 基于FongMi二次开发，增强了 WebHome 自定义首页、App Native SDK、网盘链接检测 和 Nostr推荐首页。  这个项目的核心目标是让 CSP 站点首页可以变成一个真正可开发的网页应用：开发者可以用 HTML\u002FCSS\u002FJavaScript 定制首页，再通过 App 暴露的 Native 能力完成搜索、播放、跨域请求、资源代理、最近观看、网盘检测和状态同步。","https:\u002F\u002Fwww.252035.xyz\u002Fxs\u002Ftvbox\u002Fnostr.html",null,"Java",506,151,5,13,0,16,158,480,80,10.55,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 02:03:47","# WebHomeTV\n\nWebHomeTV 是基于 FongMi \u002F CatVod 生态二次开发的 Android 影音应用，保留原有点播、直播、Spider、解析、投屏、本地 HTTP 服务等能力，并重点增强了 **WebHome 自定义首页**、**App Native SDK**、**网盘链接检测** 和 **Nostr\u002FTMDB 推荐首页**。\n\n这个项目的核心目标不是替换 CSP\u002FSpider 体系，而是让 CSP 站点首页可以变成一个真正可开发的网页应用：开发者可以用 HTML\u002FCSS\u002FJavaScript 定制首页，再通过 App 暴露的 Native 能力完成搜索、播放、跨域请求、资源代理、最近观看、网盘检测和状态同步。\n\n## 效果演示\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F7249b787-a720-406c-8365-acaa0995cb6a\n\n```\n{\n  \"key\": \"Nostr\",\n  \"name\": \"Nostr推荐\",\n  \"type\": 3,\n  \"api\": \"csp_Nostr\",\n  \"homePage\": \"https:\u002F\u002Fwww.252035.xyz\u002Fxs\u002Ftvbox\u002Fnostr.html\"\n}\n```\n\n## 文档\n\n完整开发说明见：\n\n[**应用完整开发文档.md**](应用完整开发文档.md)\n\n\n这份文档包含：\n\n- App 配置字段\n- Spider 开发\n- JS\u002FPython Spider 运行时\n- 本地 HTTP 服务\n- WebHome SDK 参数和返回值\n- 透明背景实现建议\n- 网盘检测 API\n- PanSou 集成建议\n- Nostr 首页实现要点\n- 隐藏功能和使用技巧\n- Android Intent、DLNA、MediaSession\n- CORS、Cookie 和网络策略\n\n## 二开重点\n\n### 1. CSP 站点支持自定义 WebHome 首页\n\n站点配置新增首页字段，切换到该 CSP 站点时可以直接显示自定义网页：\n\n```json\n{\n  \"key\": \"webhome\",\n  \"name\": \"WebHome\",\n  \"type\": 3,\n  \"api\": \"csp_Xxx\",\n  \"homePage\": \".\u002Fnostr.html\"\n}\n```\n\n兼容字段：\n\n- `homePage`\n- `home_page`\n- `webHome`\n- `web_home`\n\n如果配置文件来自在线地址，`.\u002Fnostr.html` 会按配置文件 URL 做相对路径解析，方便把配置和首页 HTML 放在同一目录。\n\n### 2. WebHome Native SDK\n\nWebHome 页面会注入 `window.fongmi` 和简写 `window.fm`，网页可以直接调用 App 能力。\n\n常用能力包括：\n\n| 能力 | 说明 |\n| --- | --- |\n| `fm.req(url, options)` | 使用 App 内置 OkHttp 请求接口，绕过浏览器 CORS 限制 |\n| `fm.res(url, options)` | 生成本地资源网关地址，给图片、视频、字幕等 DOM 资源使用 |\n| `fm.play(url, title, options)` | 播放直链或 `push:\u002F\u002F` 地址 |\n| `fm.vod(siteKey, vodId, title, pic)` | 打开 App 原生 CSP 详情\u002F播放链路 |\n| `fm.search(keyword, { direct })` | 调用 App 搜索，支持直接进入搜索结果 |\n| `fm.history()` | 读取最近观看记录 |\n| `fm.stat()` | 获取当前播放状态、进度、时长等信息 |\n| `fm.ctrl(action)` | 控制播放、暂停、停止、上一集、下一集等 |\n| `fm.pan.check(items)` | 调用内置网盘链接有效性检测，`fm.check(items)` 是短别名 |\n| `fm.pan.play({ type, url, password, title })` | 播放网盘分享、磁力、电驴、thunder 等需要进入 push 链路的地址 |\n| `fm.config()` | 获取当前配置和网盘检测开关状态 |\n| `fm.site()` | 获取当前站点信息 |\n| `fm.device()` | 获取设备信息 |\n| `fm.cache` | 提供 WebHome 可用的本地缓存能力 |\n| `fm.back()` \u002F `fm.reload()` | 处理网页返回和刷新 |\n\n这套 SDK 的设计目标是让 WebHome 开发者少依赖浏览器私有行为，尽量通过 App 的 Native 能力完成网络、播放和状态管理。\n\n持久化数据建议优先使用 `fm.cache`，不要把账号、页面配置、同步身份等关键数据只放在 `localStorage`。`localStorage` 仍由 Android WebView 提供，并会按页面 origin 保存；但 App 注入 `window.fm` 的时机在页面加载完成后，页面早期脚本应等待 `fmsdk` 事件后再读写 `fm.cache`，或在检测到 `window.fongmiBridge` 但 `window.fm` 尚未就绪时短暂等待，避免误写到浏览器预览 fallback。\n\n### 3. CORS 和资源加载增强\n\n普通网页 `fetch()` 会受浏览器 CORS 限制。WebHomeTV 提供两种内置能力：\n\n- `fm.req()`：用于接口请求，返回 JSON、文本、二进制等数据。\n- `fm.res()` \u002F `\u002FwebResource`：用于图片、视频、字幕、CSS 背景等资源加载。\n\n这可以处理常见跨域、Header、Cookie、资源防盗链等问题。WebHome 页面不需要要求用户安装浏览器插件或关闭系统 WebView 的安全策略。\n\n### 4. 透明背景 WebHome\n\nApp WebView 已支持透明背景，WebHome 页面可以让 App 壁纸透出，适合做沉浸式影视首页。\n\n开发时建议：\n\n- `html`、`body` 和主容器保持透明。\n- 卡片、按钮、输入框、Tab、弹层使用半透明中性背景。\n- 详情页、剧情页等全屏浮层打开时隐藏底层页面，避免多层内容叠在一起。\n- 电脑浏览器调试可以保留兜底背景，App 内使用透明背景。\n\n### 5. WebHome 路由、返回、刷新和恢复\n\nWebHome 支持多层网页状态：\n\n- 使用 History API 管理详情页、搜索页、弹层等路由。\n- App 返回键会优先让网页内部回退，再退出 WebHome。\n- `fm.reload()` 可以刷新当前 WebHome，而不要求用户重启 App。\n- App 从后台或锁屏恢复时会派发 `fmresume` 事件，网页可以保留当前页面状态并补偿刷新数据。\n- 正常冷启动应默认回到 WebHome 主页；详情页、弹层等 UI 快照只建议用于后台恢复或 App 明确带 `_fm_restore=1` 的 WebView 进程恢复场景。\n\n电视端 WebHome 要按遥控器模型单独设计焦点：默认焦点不要放在文本框；搜索建议、状态面板、网盘结果列表等打开后要限制方向键在当前区域内；文本框默认 `readonly`，只有 OK\u002F点击后进入编辑态；动态列表刷新要恢复原焦点和滚动位置。完整经验见 [应用完整开发文档.md](应用完整开发文档.md) 的“电视端遥控器 UX 最佳实践”。\n\n### 6. 内置网盘链接检测和播放\n\n设置页新增“增强功能”入口，网盘检测开关放在增强功能页中，默认开启。开启后，WebHome 或自定义工具可以调用 App 内置检测能力。\n\nWebHome SDK：\n\n```js\nconst config = await fm.config();\nif (config.driveCheck) {\n  const result = await fm.pan.check([\n    { type: \"aliyun\", url: \"https:\u002F\u002Fwww.aliyundrive.com\u002Fs\u002Fxxx\" },\n    { type: \"quark\", url: \"https:\u002F\u002Fpan.quark.cn\u002Fs\u002Fxxx\" }\n  ]);\n}\n```\n\n本地 HTTP API：\n\n```http\nPOST http:\u002F\u002F127.0.0.1:{port}\u002Fpan\u002Fcheck\nContent-Type: application\u002Fjson\n\n{\n  \"items\": [\n    { \"type\": \"quark\", \"url\": \"https:\u002F\u002Fpan.quark.cn\u002Fs\u002Fxxx\" }\n  ]\n}\n```\n\n检测接口支持批量提交，内部每批最多 10 条并发检测，超过 10 条会自动分批处理。WebHome 开发时建议只检测用户当前可见范围内的资源，并且只检测 App 支持的网盘类型，避免无意义请求和界面跳动。\n\n`fm.pan.play({ type, url, password, title })` 是 WebHome 的网盘播放语义入口，当前内部复用 App 已有的 `push_agent\u002Fpvideo` 播放链路。因为底层进入 `SiteApi.PUSH`，磁力、电驴、thunder、jianpian 等地址也可以走这个入口。它的性能和直接推送 `push:\u002F\u002F` 基本一致，但对 WebHome 开发者更清晰，也方便后续 App 内部调整播放策略。`password` 参数会保留在 API 形态中，当前播放链路主要依赖 App\u002FJAR\u002Fpvideo 自身处理。\n\n### 6.1 调试日志\n\n调试日志入口也在“增强功能”页中，默认关闭。开启后，App 会记录 WebHome SDK 调用、`fm.req`\u002F资源网关、`pan.check`、`pan.play`、本地 HTTP 服务、爬虫请求、push\u002Fpvideo 和播放状态等链路日志。\n\n行为说明：\n\n- 关闭调试日志时不弹 toast，并自动清空当前进程内日志。\n- 日志保存在当前 App 进程内，不限制 2000 条；关闭或进程结束后不保留。\n- 开启后会打开 `\u002Fdebug\u002Flogs` 页面，可刷新、下载、清空，也可以通过同局域网地址查看。\n\n### 7. PanSou 网盘搜索集成示例\n\n`demo\u002Fnostr.html` 的详情页集成了 PanSou 类搜索能力，支持：\n\n- 自定义盘搜服务地址。\n- 账号密码认证。\n- 自定义 TG 频道。\n- 按网盘类型分 Tab 展示。\n- 对支持的网盘类型调用 App 内置检测。\n- 只检测可见范围内的结果。\n- 检测结果用状态圆点表达。\n- 点击资源后调用 `fm.pan.play({ type, url, password, title })` 交给 App 播放。\n\nPanSou 搜索结果可能是异步补充的，示例页会轮询合并新增结果。\n\n### 8. Nostr + TMDB 推荐首页示例\n\n`demo\u002Fnostr.html` 是一个完整的 WebHome 首页示例，不只是 SDK demo。它包含：\n\n- TMDB 今日趋势、电影、剧集、动画等榜单。\n- 中国大陆内容优先的推荐分区。\n- 瀑布流卡片布局，移动端一行 3 个，宽屏自动显示更多列。\n- Nostr 去中心化偏好同步。\n- 用户搜索、点击、播放时长等行为可参与推荐计算。\n- 每个用户对同一影视条目的热度去重，避免重复点击无限累加。\n- 状态面板展示 SDK、TMDB、Nostr、PanSou、发布状态和身份信息。\n- 支持清理本机测试数据和发布 Nostr 删除事件。\n\n示例页使用 TMDB API，请自行替换或管理 API Key，并遵守对应服务条款。\n\n### 9. App 行为调整\n\n- 启动 App 不再自动弹出版本更新窗口。\n- 用户仍可在设置页手动点击版本检查。\n- 设置页新增“增强功能”入口，手机端和电视端都是独立设置页，当前包含网盘检测和调试日志两个文本式开关。\n- 手机端和电视端都保留原有 FongMi\u002FCatVod 能力。\n- WebHome 能力优先面向手机端体验，同时兼顾电视遥控器焦点和返回操作。\n\n## Demo\n\n仓库内置两个 WebHome 相关示例：\n\n| 文件 | 说明 |\n| --- | --- |\n| `demo\u002Fnostr.html` | 正式推荐首页示例，集成 TMDB、Nostr、PanSou、网盘检测、透明背景 |\n| `demo\u002Fcheck.html` | 网盘检测能力测试页 |\n\n配置示例：\n\n```json\n{\n  \"sites\": [\n    {\n      \"key\": \"webhome_demo\",\n      \"name\": \"WebHome 推荐\",\n      \"type\": 3,\n      \"api\": \"csp_Demo\",\n      \"homePage\": \".\u002Fnostr.html\"\n    }\n  ]\n}\n```\n\n如果你的配置文件和 `nostr.html` 放在同一个服务器目录，`homePage` 可以直接写相对路径。\n\n## 构建\n\n环境要求：\n\n- JDK 17\n- Android Gradle Plugin 对应的 Android SDK\n- Gradle Wrapper 使用仓库内置 `gradlew`\n\n常用构建命令：\n\n```bash\nbash gradlew assembleMobileArm64_v8aRelease\n```\n\n其它常见变体：\n\n```bash\nbash gradlew assembleMobileArmeabi_v7aRelease\nbash gradlew assembleLeanbackArm64_v8aRelease\nbash gradlew assembleLeanbackArmeabi_v7aRelease\n```\n\nRelease 签名读取根目录 `local.properties`：\n\n```properties\nstoreFile=\u002Fpath\u002Fto\u002Fkeystore.jks\nkeyAlias=your_alias\nstorePassword=your_password\n```\n\nAPK 输出路径以 Gradle 实际输出为准，常见路径：\n\n```text\napp\u002Fbuild\u002Foutputs\u002Fapk\u002FmobileArm64_v8a\u002Frelease\u002Fmobile-arm64_v8a.apk\napp\u002Fbuild\u002Foutputs\u002Fapk\u002FleanbackArm64_v8a\u002Frelease\u002Fleanback-arm64_v8a.apk\n```\n\n## 目录结构\n\n```text\napp\u002F       Android 主应用\ncatvod\u002F    CatVod 抽象层、Spider 接口、网络和代理工具\nquickjs\u002F   JavaScript Spider 运行时\nchaquo\u002F    Python Spider 运行时\ndemo\u002F      WebHome 示例页面\ndocs\u002F      完整开发文档\nother\u002F     其它构建或依赖模块\n```\n\n## 开源说明\n\n本仓库只提供技术实现和开发示例，不内置、不维护、不分发任何影视内容、播放源、资源站接口或网盘资源。项目中的搜索、播放、网盘检测、TMDB、Nostr、PanSou 等能力都需要用户自行配置合法服务和数据来源。\n\n请遵守所在地法律法规、第三方 API 服务条款和内容版权要求。\n","WebHomeTV 是一个基于 FongMi\u002FCatVod 生态二次开发的 Android 影音应用，旨在增强 WebHome 自定义首页、App Native SDK、网盘链接检测和 Nostr\u002FTMDB 推荐首页等功能。项目允许开发者使用 HTML\u002FCSS\u002FJavaScript 定制 CSP 站点首页，并通过 App 提供的 Native 能力实现搜索、播放、跨域请求、资源代理等高级功能。适用于需要高度定制化首页和集成第三方服务的影音应用开发场景。该项目采用 Java 语言编写，遵循 GNU General Public License v3.0 许可协议。",2,"2026-06-11 03:56:51","CREATED_QUERY"]