# silent1566/webhtv architecture

> Architecture diagram of the GitHub repository silent1566/webhtv, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/silent1566/webhtv
- Repository: https://github.com/silent1566/webhtv

## Overview

WebHomeTV is an Android TV/mobile media app that extends the FongMi/CatVod ecosystem. The main workflow is choosing a configured source, discovering or searching for content, opening its detail, then playing it; live TV, Spider-based sources, subtitles, casting, and playback enhancements are distinct capabilities. The README also documents WebHome’s Native SDK, LAN management, remote hosting, synchronization, cloud-drive support, and recommendations. Several of those branches are represented by their enclosing source directory because their specific implementations were not sampled; arrows follow documented capabilities or sampled calls where available.

Main entry points: [`app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java`](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java) (Playback engine), [`app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java`](https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java) (Home and search), [`app/src/main/java/com/fongmi/android/tv`](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv) (WebHome Native SDK), [`app/src/main/java/com/fongmi/android/tv/api/SiteApi.java`](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/api/SiteApi.java) (Site API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Content discovery"]
  node_home["Home and search<br/>[HomeActivity.java]"]
  node_vod["VOD details<br/>[VodActivity.java]"]
  node_recommendations["Recommendations"]
end

subgraph group_playback["Playback and TV"]
  node_player["Playback engine"]
  node_mpv["MPV player<br/>[MpvPlayer.java]"]
  node_subtitles["Subtitle matching"]
  node_hls["HLS ad filtering"]
  node_dlna["DLNA casting"]
  node_adskip["Audio ad detection"]
end

subgraph group_webhome["WebHome services"]
  node_webhome["WebHome Native SDK"]
  node_management["LAN management"]
  node_proxy["Range proxy"]
end

subgraph group_sync["Sync and hosting"]
  node_remote["Remote agent"]
  node_relay["Hosting relay"]
  node_syncdata["Device and history sync"]
  node_gitdrive["Git cloud drive"]
end

subgraph group_extensions["Sources and extensions"]
  node_siteapi["Site API<br/>[SiteApi.java]"]
  node_spiders["Spider loaders"]
  node_live["Live TV<br/>[LiveApi.java]"]
  node_health["Site health ranking"]
end

node_viewer(("Viewer"))

node_viewer -->|"browses"| node_home
node_home -->|"searches sources"| node_siteapi
node_siteapi -->|"loads spiders"| node_spiders
node_home -->|"opens title"| node_vod
node_vod -->|"starts playback"| node_player
node_home -->|"requests picks"| node_recommendations
node_recommendations -->|"shows results"| node_viewer
node_viewer -->|"selects channel"| node_live
node_live -->|"plays stream"| node_player
node_player -->|"matches subtitles"| node_subtitles
node_player -->|"filters manifests"| node_hls
node_player -.->|"uses engine"| node_mpv
node_viewer -->|"casts media"| node_dlna
node_dlna -->|"controls playback"| node_player
node_viewer -->|"uses homepage"| node_webhome
node_webhome -->|"searches content"| node_siteapi
node_webhome -->|"requests proxy"| node_proxy
node_viewer -->|"manages app"| node_management
node_management -->|"configures sync"| node_syncdata
node_remote -->|"connects remotely"| node_relay
node_relay -->|"dispatches requests"| node_remote
node_viewer -->|"starts sync"| node_syncdata
node_syncdata -.->|"syncs remotely"| node_relay
node_viewer -.->|"syncs files"| node_gitdrive
node_home -.->|"orders sources"| node_health
node_player -.->|"detects audio ads"| node_adskip

click node_home "https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java"
click node_vod "https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java"
click node_recommendations "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/service/PersonalRecommendationService.java"
click node_siteapi "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/api/SiteApi.java"
click node_spiders "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv/api/loader"
click node_live "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/api/LiveApi.java"
click node_player "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java"
click node_mpv "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/androidx/media3/mpvplayer/MpvPlayer.java"
click node_subtitles "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/subtitle/SubtitleMatchService.java"
click node_hls "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/utils/HlsAdblockPipeline.java"
click node_dlna "https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java"
click node_webhome "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv"
click node_management "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv"
click node_proxy "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/server/proxy/SegmentedRangeEngine.java"
click node_remote "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/remote/RemoteAgentService.java"
click node_syncdata "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv"
click node_gitdrive "https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/gitcloud/drive/JGitDriveEngine.java"
click node_health "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv"
click node_adskip "https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv/ad/audio"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_vod,node_recommendations,node_viewer toneBlue
class node_player,node_mpv,node_subtitles,node_hls,node_dlna,node_adskip toneAmber
class node_webhome,node_management,node_proxy toneMint
class node_remote,node_relay,node_syncdata,node_gitdrive toneRose
class node_siteapi,node_spiders,node_live,node_health toneIndigo
```

## Components

### Content discovery

- [Home and search](https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java): `app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java`
- [VOD details](https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java): `app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java`
- [Recommendations](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/service/PersonalRecommendationService.java): `app/src/main/java/com/fongmi/android/tv/service/PersonalRecommendationService.java`

### Playback and TV

- [Playback engine](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java): `app/src/main/java/com/fongmi/android/tv/player/engine/ExoPlayerEngine.java`
- [MPV player](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/androidx/media3/mpvplayer/MpvPlayer.java): `app/src/main/java/androidx/media3/mpvplayer/MpvPlayer.java`
- [Subtitle matching](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/subtitle/SubtitleMatchService.java): `app/src/main/java/com/fongmi/android/tv/subtitle/SubtitleMatchService.java`
- [HLS ad filtering](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/utils/HlsAdblockPipeline.java): `app/src/main/java/com/fongmi/android/tv/utils/HlsAdblockPipeline.java`
- [DLNA casting](https://github.com/silent1566/webhtv/blob/main/app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java): `app/src/leanback/java/com/fongmi/android/tv/service/DLNARendererService.java`
- [Audio ad detection](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv/ad/audio): `app/src/main/java/com/fongmi/android/tv/ad/audio`

### WebHome services

- [WebHome Native SDK](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv): `app/src/main/java/com/fongmi/android/tv`
- [LAN management](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv): `app/src/main/java/com/fongmi/android/tv`
- [Range proxy](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/server/proxy/SegmentedRangeEngine.java): `app/src/main/java/com/fongmi/android/tv/server/proxy/SegmentedRangeEngine.java`

### Sync and hosting

- [Remote agent](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/remote/RemoteAgentService.java): `app/src/main/java/com/fongmi/android/tv/remote/RemoteAgentService.java`
- **Hosting relay**
- [Device and history sync](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv): `app/src/main/java/com/fongmi/android/tv`
- [Git cloud drive](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/gitcloud/drive/JGitDriveEngine.java): `app/src/main/java/com/fongmi/android/tv/gitcloud/drive/JGitDriveEngine.java`

### Sources and extensions

- [Site API](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/api/SiteApi.java): `app/src/main/java/com/fongmi/android/tv/api/SiteApi.java`
- [Spider loaders](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv/api/loader): `app/src/main/java/com/fongmi/android/tv/api/loader`
- [Live TV](https://github.com/silent1566/webhtv/blob/main/app/src/main/java/com/fongmi/android/tv/api/LiveApi.java): `app/src/main/java/com/fongmi/android/tv/api/LiveApi.java`
- [Site health ranking](https://github.com/silent1566/webhtv/tree/main/app/src/main/java/com/fongmi/android/tv): `app/src/main/java/com/fongmi/android/tv`

### Other components

- **Viewer**

## Connections

- Viewer → Home and search: browses
- Home and search → Site API: searches sources
- Site API → Spider loaders: loads spiders
- Home and search → VOD details: opens title
- VOD details → Playback engine: starts playback
- Home and search → Recommendations: requests picks
- Recommendations → Viewer: shows results
- Viewer → Live TV: selects channel
- Live TV → Playback engine: plays stream
- Playback engine → Subtitle matching: matches subtitles
- Playback engine → HLS ad filtering: filters manifests
- Playback engine → MPV player: uses engine
- Viewer → DLNA casting: casts media
- DLNA casting → Playback engine: controls playback
- Viewer → WebHome Native SDK: uses homepage
- WebHome Native SDK → Site API: searches content
- WebHome Native SDK → Range proxy: requests proxy
- Viewer → LAN management: manages app
- LAN management → Device and history sync: configures sync
- Remote agent → Hosting relay: connects remotely
- Hosting relay → Remote agent: dispatches requests
- Viewer → Device and history sync: starts sync
- Device and history sync → Hosting relay: syncs remotely
- Viewer → Git cloud drive: syncs files
- Home and search → Site health ranking: orders sources
- Playback engine → Audio ad detection: detects audio ads
