This project is now structured as a clear, single Streamlit application centered on one file: app.py.
- Single-app flow: fetch playlist -> choose all or selected videos -> download ZIP
- MP3 extraction with
yt-dlp+ FFmpeg - Progress bar and clear status updates
- Error handling for invalid/private/unavailable playlists
- Deploy-ready setup for local run, PaaS, and Docker
app.py: entire application logic and UIrequirements.txt: dependenciesProcfile: PaaS start commandDockerfile: container deployment
- Python 3.9+
- FFmpeg available in PATH
Install FFmpeg:
- Windows:
choco install ffmpeg - macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt update && sudo apt install -y ffmpeg
- Install dependencies
pip install -r requirements.txt- Run app
streamlit run app.py- Open
http://localhost:8501
Use the Procfile command:
web: streamlit run app.py --server.address 0.0.0.0 --server.port $PORTSet environment/service to install system FFmpeg before launching app.
- Build image
docker build -t yt-playlist-mp3 .- Run container
docker run -p 8501:8501 yt-playlist-mp3- Open
http://localhost:8501
- Download only content you have rights to access.
- Respect YouTube terms and your local copyright laws.