mirror of
https://gitlab.com/vyla-entertainment/documentation.git
synced 2026-11-14 22:47:26 -05:00
fixed syntax issues
This commit is contained in:
@@ -6,62 +6,53 @@
|
||||
|
||||
## Overview
|
||||
|
||||
**Stream API** is the dedicated backend gateway for the Vyla ecosystem. While the Vyla SDK executes directly in Node.js environments, web browsers, mobile applications, and smart TVs require a standard HTTP/SSE bridge to communicate with upstream providers, circumvent browser CORS restrictions, and decrypt video streams.
|
||||
**Stream API** is the streaming gateway for the Vyla ecosystem. While the Vyla SDK executes directly in Node.js, browsers, mobile devices, and TVs require an HTTP/SSE bridge to communicate with scrapers, bypass browser CORS, and decrypt video streams.
|
||||
|
||||
Stream API wraps `@vyla-entertainment/sdk` in a high-concurrency, self-hostable service designed for maximum throughput and zero playback stutter.
|
||||
Stream API wraps `@vyla-entertainment/sdk` in a high-concurrency service built for real-time progressive playback.
|
||||
|
||||
---
|
||||
|
||||
## Architectural Highlights
|
||||
## Core Capabilities
|
||||
|
||||
| Cluster Role | Process Type | Responsibilities & Functions |
|
||||
| :--- | :--- | :--- |
|
||||
| **Primary Process** | Node.js Cluster Master | Spawns and supervises worker processes across CPU cores, manages the shared 1,500-entry in-memory LRU cache (5-minute TTL), coordinates IPC messages (`cache:get` / `cache:set`), and executes cache cleanup every 30 seconds. |
|
||||
| **Inter-Process Channel** | Node.js IPC | High-throughput bi-directional message pipe (`process.send` and `cluster.on('message')`) synchronizing cache entries across workers without Redis or external database overhead. |
|
||||
| **Worker Processes** | Forked HTTP Workers (`0..N`) | Runs native HTTP request routers (`http.createServer`), pushes progressive Server-Sent Events (SSE), executes universal reverse proxying with live M3U8/key rewriting, and strips 120-byte image obfuscation masks. |
|
||||
### Multi-Core Cluster
|
||||
Stream API uses Node's native `cluster` module to fork workers across all available CPU cores. If an upstream network timeout occurs on one worker, other workers continue handling client traffic without interruption.
|
||||
|
||||
### 1. Multi-Core Cluster Architecture
|
||||
Stream API leverages Node's native `cluster` module to fork independent worker processes across available CPU cores. If one worker experiences a heavy upstream network timeout, other workers continue handling client requests without interruption.
|
||||
### Progressive Server-Sent Events (SSE)
|
||||
Instead of waiting 20 seconds for all 60 scrapers to finish:
|
||||
- **Instant Metadata**: Title info and subtitles arrive in the first `meta` event.
|
||||
- **Progressive Sources**: Each verified source is pushed immediately as a `source` event.
|
||||
- **Clean Finish**: A `done` event signals stream completion.
|
||||
|
||||
### 2. Progressive Streaming over Server-Sent Events (SSE)
|
||||
Rather than blocking HTTP requests for 20 seconds while 60 providers resolve, Stream API utilizes Server-Sent Events:
|
||||
- **Instant Metadata**: Title info and subtitle tracks arrive in the first event (`type: "meta"`).
|
||||
- **Progressive Sources**: As each provider scraper finishes verification, a `type: "source"` event is pushed immediately.
|
||||
- **Completion Signal**: When all sources complete, a `type: "done"` event closes the stream cleanly.
|
||||
### Shared In-Memory Cache
|
||||
- **Capacity**: 1,500 entries with LRU eviction.
|
||||
- **TTL**: 5 minutes (300,000 ms).
|
||||
- **Lookup Latency**: < 2 ms for active titles.
|
||||
|
||||
### 3. Shared In-Memory LRU Cache
|
||||
All cluster workers communicate with a centralized in-memory cache managed by the primary process:
|
||||
- **Cache TTL**: 5 minutes (300,000 ms).
|
||||
- **Capacity**: 1,500 items max with LRU eviction.
|
||||
- **Cache Hit Latency**: < 2 milliseconds for frequently requested titles.
|
||||
|
||||
### 4. Reverse Proxy & Chunk De-Obfuscator
|
||||
- Transparently proxies HLS playlists (`/api?url=...`), rewriting AES encryption keys and `.ts` chunk URIs to inject permissive CORS headers.
|
||||
- Strips 120-byte fake image headers prepended to video chunks by ByteDance/TikTok-based content delivery networks.
|
||||
- Supports HTTP Range headers (`206 Partial Content`) for seeking large MP4 and MKV media containers.
|
||||
### Reverse Proxy & Chunk Stripper
|
||||
- Proxies HLS playlists (`/api?url=...`), rewriting AES encryption keys and `.ts` chunk URIs to inject permissive CORS headers.
|
||||
- Strips 120-byte fake image headers prepended to video chunks by ByteDance and TikTok-based CDNs.
|
||||
- Supports HTTP Range requests (`206 Partial Content`) for seeking MP4 and MKV containers.
|
||||
|
||||
---
|
||||
|
||||
## Route Overview
|
||||
## Key Routes
|
||||
|
||||
| Route | Protocol | Primary Purpose | Reference |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **`/movie?id=:id`** | GET (SSE) | Progressive movie source resolution | [Paths Reference](/stream-api/reference/paths) |
|
||||
| **`/tv?id=:id&season=:s&episode=:e`** | GET (SSE) | Progressive TV episode source resolution | [Paths Reference](/stream-api/reference/paths) |
|
||||
| **`/subtitles/movie/:id`** | GET (REST) | Multi-language subtitle tracks for movies | [Media Data Reference](/stream-api/reference/media-data) |
|
||||
| **`/subtitles/tv/:id/:s/:e`** | GET (REST) | Subtitle tracks for TV episodes | [Media Data Reference](/stream-api/reference/media-data) |
|
||||
| **`/downloads/movie/:id`** | GET (REST) | Direct media download packages for movies | [Media Data Reference](/stream-api/reference/media-data) |
|
||||
| **`/downloads/tv/:id/:s/:e`** | GET (REST) | Direct media download packages for TV | [Media Data Reference](/stream-api/reference/media-data) |
|
||||
| **`/api?url=:url`** | GET (Proxy) | Universal HLS & video chunk proxy | [Paths Reference](/stream-api/reference/paths) |
|
||||
| **`/health`** | GET (REST) | Cluster status, cache size, source health | [Operations Reference](/stream-api/reference/operations) |
|
||||
| **`/test/:source`** | GET (REST) | Direct test harness for individual sources | [Operations Reference](/stream-api/reference/operations) |
|
||||
- `GET /movie?id=:id` — Progressive movie source resolution via SSE. [Docs](/stream-api/reference/paths)
|
||||
- `GET /tv?id=:id&season=:s&episode=:e` — Progressive TV episode source resolution via SSE. [Docs](/stream-api/reference/paths)
|
||||
- `GET /api?url=:url` — Universal HLS and video chunk reverse proxy. [Docs](/stream-api/reference/paths)
|
||||
- `GET /subtitles/movie/:id` — Multi-language subtitle tracks for movies. [Docs](/stream-api/reference/media-data)
|
||||
- `GET /subtitles/tv/:id/:s/:e` — Subtitle tracks for TV episodes. [Docs](/stream-api/reference/media-data)
|
||||
- `GET /downloads/movie/:id` — Direct media download packages for movies. [Docs](/stream-api/reference/media-data)
|
||||
- `GET /downloads/tv/:id/:s/:e` — Direct media download packages for TV. [Docs](/stream-api/reference/media-data)
|
||||
- `GET /health` — Cluster status, cache metrics, and scraper health. [Docs](/stream-api/reference/operations)
|
||||
- `GET /test/:source` — Direct test harness for individual scrapers. [Docs](/stream-api/reference/operations)
|
||||
|
||||
---
|
||||
|
||||
## Stream API Documentation Index
|
||||
## Documentation Sections
|
||||
|
||||
- **[Paths & Playback Events](/stream-api/reference/paths)**: Complete SSE payload contracts, parameters, and proxy options.
|
||||
- **[Subtitles & Media Downloads](/stream-api/reference/media-data)**: REST endpoints for subtitle extraction and direct media files.
|
||||
- **[Operations, Health & Testing](/stream-api/reference/operations)**: Cluster health monitoring, probe IDs, and debug routes.
|
||||
- **[API Keys & Authentication](/stream-api/authentication)**: Key management, SQLite database, and partner keys.
|
||||
- **[Production Self-Hosting Guide](/stream-api/deployment/self-hosting)**: Docker containerization, PM2, systemd, and Nginx reverse proxy configurations.
|
||||
- **[Subtitles & Media Downloads](/stream-api/reference/media-data)**: REST endpoints for subtitle extraction and direct downloads.
|
||||
- **[Operations & Health](/stream-api/reference/operations)**: Cluster monitoring, probe IDs, and debug routes.
|
||||
- **[API Keys & Authentication](/stream-api/authentication)**: Key management, SQLite database, and rate limiting.
|
||||
- **[Self-Hosting Guide](/stream-api/deployment/self-hosting)**: Docker containerization, PM2, and Nginx reverse proxy setup.
|
||||
|
||||
Reference in New Issue
Block a user