XCtv DAZN DRM Panel¶
Operations toolkit for DAZN DRM ingestion, scheduling, and stream orchestration.
Widevine DRM acquisition for DAZN with automatic xaccel-codec integration, dynamic API endpoint discovery, and EPG-based scheduling.
Features¶
- Dynamic endpoint discovery from DAZN ServiceDictionary (auto-cached)
- Automated scheduling — nightly EPG scan, cron generation, stream lifecycle
- Multi-day EPG generation — EPG XML covers the full schedule window (1–14 days)
- Customizable EPG templates — named template sets with 80+ variables across 13 categories
- TheSportsDB enrichment — live venue, scores, broadcast, badge, and jersey data via premium API
- Game Thumbs integration — dynamic matchup thumbnails for programme artwork
- JSON REST API — token-authenticated headless access to all panel operations
- User API keys — generate/revoke personal API keys from the Profile page
- Two-factor authentication — optional TOTP 2FA with 7-day trusted-device remember
- Widevine DRM key acquisition via pywidevine CDM
- CloudFront WAF bypass via
curl_cffiChrome TLS fingerprint impersonation - Multi-resolution output (FHD, HD, SD) per competition
- Competition groups — merge multiple DAZN competitions into shared channels
- Sport/Competition discovery — scan DAZN EPG to find new IDs
- Apprise notifications for daily schedule (Telegram, Discord, Slack, etc.)
Quick Start¶
# Clone the repository
git clone git@git.retrorewind.ca:iptv/xctv-dazn-drm-panel.git /var/www/dazn.xctv.stream
# Import the database schema
mysql -u root -p < dazn-xctv.sql
# Configure database credentials
export XCtv_dbHost=127.0.0.1
export XCtv_dbUser=dazn
export XCtv_dbPass=YOUR_PASSWORD
export XCtv_dbName=dazn
# Set up nginx and cron
sudo cp etc/dazn.xctv.stream.conf /etc/nginx/sites-available/
sudo nginx -t && sudo systemctl reload nginx
See the Installation Guide for full setup instructions.
Project Structure¶
| Directory | Purpose |
|---|---|
dazn.xctv.stream/ |
PHP source code — web panel and CLI scripts |
docs/ |
Project documentation (this site) |
etc/ |
Server configuration files (nginx, crontab) |
kodi/ |
Reference copy of plugin.video.dazn v1.4.27 |
bootstrap-4.6.2/ |
Customized Bootstrap 4.6.2 source for UI |
Architecture Overview¶
┌──────────────────────────────────────────────────────────┐
│ DAZN Cloud APIs │
└──────────┬───────────────────────────┬───────────────────┘
│ HTTPS │ Widevine License
▼ ▼
┌─────────────────────┐ ┌────────────────────────────────┐
│ PHP Panel (nginx) │ │ Python DRM (pywidevine) │
│ dazn.xctv.stream │◄──│ playback_request.py │
│ │ │ request_keys.py │
│ MariaDB (dazn) │ └────────────────────────────────┘
└──────────┬──────────┘
│ xaccel-codec API
▼
┌─────────────────────┐
│ xaccel-codec │
│ DASH → HLS/TS │
│ DRM decrypt │
└─────────────────────┘
See the full Architecture document for data flow diagrams and database schema.