A high-performance desktop application for watching Coachella livestreams with a perfectly synced, interactive schedule. Built with Python, PySide6, and mpv.
- Interactive Schedule: A programmatically rendered, scrollable grid showing the full lineup across all 7 stages.
- Multi-Day Support: Switch between Friday, Saturday, and Sunday schedules using tabs.
- Live Time Tracking: A precise red timeline that indicates exactly who is playing right now in Pacific Daylight Time (PDT).
- Column-Based Navigation: Click anywhere on a stage's column to instantly switch the video player to that stream.
- Automated Sync: One-command synchronization that fetches the latest artist schedule directly from official YouTube descriptions.
- Stream Recording: Press the
Rkey while the video window is focused to start or stop recording the current stream to a local file. HLS playback records to.ts; 1440p and 4K SABR playback records to.mkv. A blinking "🔴 RECORDING" indicator will appear on the schedule timeline. - Native Performance: Uses
mpvas the video backend for low-latency, high-quality streaming.
- Python 3.9+
- mpv player: The application requires
libmpvto be installed on your system.- Arch Linux:
sudo pacman -S mpv - Ubuntu/Debian:
sudo apt install mpv libmpv-dev - macOS:
brew install mpv
- Arch Linux:
- FFmpeg: Required for 1440p and 4K YouTube SABR livestream playback. The app uses the bundled
yt-dlp_sabrdownloader to fetch SABR fragments, then usesffmpegto mux the separate live video and audio fragments into a stream thatmpvcan play.- Arch Linux:
sudo pacman -S ffmpeg - Ubuntu/Debian:
sudo apt install ffmpeg - macOS:
brew install ffmpeg
- Arch Linux:
- Clone and Setup Environment:
python -m venv venv source venv/bin/activate # On Windows use: venv\Scripts\activate pip install -r requirements.txt
To automatically download the latest descriptions, sync the schedule, and launch the app in one command:
python main.py- Quality Selection:
Auto,1080p, and720puse the standard HLS playback path.1440pand4Kuse the bundled SABR-enabledyt-dlpfork plus FFmpeg. - Switch Stages: Click on any column in the schedule grid.
- Switch Days: Click the tabs at the top (aligned with the stage columns).
- Fullscreen: Toggle fullscreen in the video player using the
Fkey or double-click. - Recording: Press
Rin the video window to start/stop saving the stream to a local file.
The application is entirely data-driven. To update stream URLs or stage colors for future years, simply edit config.json.
- Library Errors on Linux: The app includes a bootstrap loader that handles Qt library version conflicts common on rolling-release distros (like Arch).
- Timezone: The app uses
America/Los_Angeles(PDT) for the timeline regardless of your local system time, matching the official festival schedule.