Skip to content

Playlists, Curation & Failover

Pluvira decouples playlist ingestion from channel presentation, allowing you to curate custom channel lists backed by multi-slot failover pools.


1. M3U Playlist Ingestion

Add external M3U/M3U8 URLs or upload local playlist files from the Sources tab in the WebUI:

  • Automated Sync: Pluvira periodically refreshes M3U feeds in the background using an internal scheduler.
  • Catalog Capacity: The Personal Free Tier processes up to 2,500 total channels in the local database. Pluvira Pro unlocks unlimited ingest capacity.
  • Metadata Sanitization: Ingested streams automatically pass through global and source-level rewrite rules.

2. Personal Curated Playlists (“My List”)

“My List” (slug default) represents your custom TV lineup:

  • Decoupled Identity: Channels in “My List” (PersonalChannel) remain persistent in your local database even if underlying stream providers change or remove links.
  • Free Tier Cap (25 Channels): The Personal Free Tier permits up to 25 active channels in “My List” for playback and dynamic M3U exports.
  • Non-Destructive Expiration: When an on-demand trial expires, channels beyond position 25 are preserved intact in the database (displayed with a padlock icon) and excluded from exports. Upgrading to Pro instantly re-activates all channels without re-configuration.

3. Slot-Pool Failover Architecture

Each curated channel maps to a pool of active stream URLs, dynamically sorted by calculated HealthScore:

TierSlot AllocationDescription
Personal Free Tier2 SlotsSlot 0 (Primary Stream) + Slot 1 (Backup Stream)
Pluvira Pro Tier7 SlotsSlot 0 (Primary) + Slots 1–6 (Multi-tier Failover Pool)

4. Automatic 3-Retry Player Recovery

When a stream encounters playback failure (HLS error, network timeout, HTTP 404/500):

[Stream Playback Error]
│
▼
[Execute 3 Sequential Retries] (Backoff: 500ms ➔ 1000ms ➔ 1500ms)
│
┌────┴────┐
▼ ▼
[Recovered?] [Failed 3x]
│ │
[Play] ▼
[Penalize Score (-30 pts)]
[Promote Slot 1 Backup]
[Seamless Switch (Zero Interruption)]
  1. The built-in player executes 3 sequential retry attempts with progressive backoff.
  2. If all 3 attempts fail, an offline status report is dispatched to /api/v1/scanner/report-status.
  3. The offline link is penalized by -30 points in pluvira_link_status.db.
  4. The player immediately fails over to Slot 1, reorganizing the pool seamlessly.

5. Quarantine & Auto-Purge Engine

  • Quarantined State: Streams with HealthScore <= 20.0 or $\ge 3$ consecutive network failures enter quarantine and are excluded from exports.
  • Manual Bulk Purge: Trigger 1-click cleanup of all quarantined streams from the WebUI.
  • Auto-Purge: Configure config.yaml (auto_purge_quarantine_days: 7) to automatically delete streams dead for more than 7 days.