Metadata-Version: 2.4
Name: yt_mixer
Version: 0.1.0
Summary: Server-side YouTube Audio Mixer with Ducking and Podcast Processing
Author-email: 1minds3t <1minds3t@proton.me>
License: MIT
Project-URL: Homepage, https://github.com/1minds3t/yt_mixer
Project-URL: Issues, https://github.com/1minds3t/yt_mixer/issues
Keywords: youtube,audio,mixer,podcast,ffmpeg
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Multimedia :: Sound/Audio
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.txt
Requires-Dist: Flask>=3.0.0
Requires-Dist: yt-dlp>=2024.0.0
Requires-Dist: eventlet>=0.33.0
Dynamic: license-file

# YT Mixer 🎵

Server-side YouTube playlist mixer with **true shuffle** for more unpredictable playback order.

## Features

- Mix music + podcast playlists with automatic ducking  
- **True random shuffle** using Fisher-Yates (avoids YouTube's linear pseudo-shuffle behavior)  
- Three-tier audio quality:
  - ⚡ **Immediate**: Quick playback, no normalization, vocal EQ applied
  - 📊 **Quick Mix**: Per-track normalization + EQ, ready in ~30–60 seconds
  - ✨ **Final Mix**: Full LUFS mastering, professional loudness & sidechain  
- Hour-long chunks streamed seamlessly  
- Session persistence

## Install
```bash
pip install -e .
````

## Usage

```bash
# Start service
yt-mixer service start

# Access at http://localhost:5052
# Enter two YouTube playlist IDs and mix!
```

## How it works

1. Downloads tracks from both playlists
2. **Properly shuffles** them using Fisher-Yates for true randomness
3. Applies vocal EQ + per-track normalization
4. Streams hour-long chunks with incremental quality upgrades (Immediate → Quick → Final)
