# Flix Vision (flix.com.vision) — Web-Scrape Streaming Architecture

## App Identity
- **Package**: `flix.com.vision`
- **Name**: FLIX VISION v3.6.3r
- **Type**: Pattern C — direct web scraping of streaming sites + embed URLs
- **Obfuscation**: Heavy (all AMZ classes obfuscated as `AbstractCXXXX`, single-letter packages)

## API Keys
- TMDB: `2f3cb5763db1117fcba3948632f8aad9`
- Trakt (client_id): `39c944040d5f19862b77e7a66b6c419af653c1e3bf226cc691eb2abbb551730c`
- Google: `AIzaSy...apnI` (crash reporting)

## Source Architecture (5 tiers)

### Tier 1 — Embed/WebView URLs (immediate, highest priority)
Static URL templates fed into a WebView. Each is a different streaming service/proxy:

| Label | Movie URL | TV URL |
|-------|-----------|--------|
| FLIXVISION | `http://185.112.144.240/ext/gotv.html?goto={tmdb_id}&s={season}&e={episode}` | same |
| FLIXVISION2 | `https://embed.smashystream.com/playere.php?tmdb={id}` | `...&season={s}&episode={e}` |
| FLIXVISION3 | autoembed.co (`autoembed_url` pref) | `/tv/tmdb/{id}-{s}-{e}` |
| FLIXVISION4 | `https://vidsrc.me/embed/movie/{id}` | `/embed/tv/{id}/{s}-{e}` |
| FLIXVISION5 | `https://vidsrc.xyz/embed/movie/{id}` | `/embed/tv/{id}/{s}-{e}` |

### Tier 2 — Movie Link Scrapers (Hindi/Dubbed direct playlists)

| Scraper | Base URL | Pattern |
|---------|----------|---------|
| **SwiftStreamz** | `https://www.swiftstreamz.cc/SwiftStreamzv2.4/data.php` | Configurable via SharedPreferences |
| **AllMovieLand** | `https://allmovieland.you/` (default, configurable via `pref_allmvland_hst`) | `/play/{imdb_id}` → scrape page → `/playlist/{file}.txt` → playlist items |
| **ML Host** | `https://trinstor297undoint.com` (default, configurable via `pref_ml_host`) | Same play/playlist pattern |
| **Hindi Direct** | Gated by `pref_show_hindi_dubbed_direct` | Separate code path from English sources, uses `GetStreamLinkHindi()` methods |

### Tier 3 — Video Hoster Extractors (JSoup-based site scrapers)
Each extractor targets a specific streaming site, handles its unique protection scheme:

| Extractor | Domain | Protection | Technique |
|-----------|--------|------------|-----------|
| **GogoExtractor** | `https://streamcool.pro` | Encrypted AJAX | AES decrypt with key `9262859232435825`, IV `93422192433952489752342908585752` |
| **DoodExtractor** | `https://doodstream.com` | `/pass_md5/` token | Extracts MD5 token, builds direct URL + `?token=` |
| **VidsrcExtractor** | `https://vsembed.ru`, `https://9anime.eltik.net` | Multi-stage redirect chain | episode→source→futoken→fmovies-decrypt→rawvizcloud |
| **CloudnestraExtractor** | `https://cloudnestra.com`, `https://vsembed.ru/embed` | Comment-embedded servers + variable replacement | Parses `<!--serversList-->`, extracts `/rcp/` hashes, resolves template vars |
| **FileMoonExtractor** | `https://azm.to` | Packed JS (Hi unpacker) | Unpacks `function(p,a,c,k,e,d)` → extracts `.setup(JSON)` → parses `sources[]` |
| **CloseloadExtractor** | `https://closeload.top/` | ROT13 + base64 + XOR-loop | Brute-force 24 decode combos, unmixes with modulo arithmetic |
| **VixcloudExtractor** | `https://vixcloud.co/` | window.video + window.masterPlaylist | JSoup parse, HLS subtitle patching, language-aware |

### Tier 4 — Debrid Services (optional, user must authenticate)
Debrid is used to resolve file-hoster links (NOT torrents — this is key):

| Service | API Base | Auth |
|---------|----------|------|
| Real-Debrid | `https://api.real-debrid.com` | OAuth Bearer token (`authorization: Bearer` header) |
| AllDebrid | `https://api.alldebrid.com` | API key + `agent: flixvision` |
| Premiumize | `https://www.premiumize.me` | API key |

**Hosts list** (`R.array.hosts`): 220+ file hosters — 1fichier, mega, mediafire, rapidgator, uploaded, uptobox, mixdrop, streamtape, vk.com, vivo.sx, clips from YouTube, soundcloud, etc.

### Tier 5 — Site Scrapers (HDO Box, 123MoviesGo, RidoMovies)
These scrape entire streaming sites for content listings, search, and episode data:

**HDO Box** — proxied through private IP backend:
- `/ajax/movie_sources/{id}` — get movie sources
- `/ajax/movie_embed/{id}` — get embed URL
- `/ajax/v4_movie_episodes/{id}` — episode list
- `/ajax/movie_token` — auth token

**123MoviesGo** — endpoint patterns:
- `/ajax/sources/{id}`, `/ajax/movie/episodes/{id}`
- `/ajax/v2/episode/servers/{id}`, `/ajax/v2/season/episodes/{id}`
- `ajax/v2/tv/seasons/{id}`, `/ajax/suggest_search`

**RidoMovies** — configurable base URL:
- `api/search`, `api/show/{slug}/season/{number}`, `tv/{slug}/season-{season_number}`

## Private IP Backend
- **`http://185.112.144.240`** — a single HTTP server serving multiple roles:
  - Embed web player pages (`/ext/gotv.html`)
  - Image proxy (`/api/v3/hd/img/movie/`, `/api/v3/hd/img/tv/`)
  - HDO Box scraper API proxy
  - Cartoon stream link endpoint (`/ajax-get-link-stream/`)

## UI / Theme
- **Colors**: Primary `#37414e`, Dark `#222932`, Accent `#01a3f8` (teal blue)
- **Fonts**: Product Sans (regular: `pproduct_sans_rregular.ttf`, bold: `product_sans_bold.ttf`)
- **Assets**: 55+ custom drawables (streaming service logos, debrid logos, player icons)

## Key Differences from DebridStream/Nexstream

| Aspect | Flix Vision (Pattern C) | DebridStream (Pattern B) |
|--------|------------------------|--------------------------|
| Source model | Web-scraped embed URLs + site scrapers | Stremio addons → infoHashes |
| Content discovery | HDO Box, 123MoviesGo, RidoMovies, TMDB | TMDB + remote addon config |
| Primary playback | WebView (embed) or direct .mp4/.m3u8 | ExoPlayer via debrid-resolved streams |
| Extractor pattern | 7 per-site JSoup extractors | Config-driven response parser |
| Backend | Private IP server (185.112.144.240) | Cloudflare Workers |
| Debrid role | Resolve file-hoster links (optional) | Resolve torrents to direct (required) |
| Redundancy | 5 embed URL replicas + 7 extractors | N addons in remote config |
| Language support | Separate Hindi/Dubbed code paths | English only |
