75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
|
||
# 🎤 Karaoke Playlist Downloader – PRD (v1.0)
|
||
|
||
## ✅ Overview
|
||
A Python-based Windows command-line tool that wraps `yt-dlp.exe` to batch-download karaoke videos from YouTube playlists.
|
||
|
||
---
|
||
|
||
## 📌 Goals
|
||
- Quickly download full YouTube playlists containing karaoke videos.
|
||
- Organize downloads by playlist.
|
||
- Avoid re-downloading the same videos.
|
||
|
||
---
|
||
|
||
## 🧑💻 Target Users
|
||
- Tech-savvy users, developers, or power users familiar with command-line tools.
|
||
- Use case: Karaoke DJs, home karaoke setups, offline playlist prep.
|
||
|
||
---
|
||
|
||
## ⚙️ Platform & Stack
|
||
- **Platform:** Windows
|
||
- **Interface:** Command-line tool (CLI)
|
||
- **Tech Stack:** Python + yt-dlp.exe
|
||
|
||
---
|
||
|
||
## 📥 Input
|
||
- Accepts YouTube playlist URLs via command line.
|
||
- Optional: Accept a text file containing multiple playlist URLs (one per line).
|
||
|
||
### 🔹 Example Usage
|
||
```bash
|
||
python download_karaoke.py https://www.youtube.com/playlist?list=XYZ
|
||
python download_karaoke.py --file playlists.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 📤 Output
|
||
- Downloads videos as **MP4** using `yt-dlp.exe`.
|
||
- Each playlist gets its own folder: `downloads/<playlist_name>/`
|
||
- Filenames are preserved as per the original YouTube video title.
|
||
|
||
---
|
||
|
||
## 🛠️ Features
|
||
- ✅ Skips already downloaded videos (uses video ID log).
|
||
- ✅ Logs each download to `logs/<playlist_name>.log`.
|
||
- ✅ Shows progress and errors in the terminal.
|
||
- ✅ Lightweight and fast to execute.
|
||
|
||
---
|
||
|
||
## 📁 Folder Structure (Suggested)
|
||
```
|
||
karaoke_downloader/
|
||
├── download_karaoke.py # main script
|
||
├── yt-dlp.exe # downloader binary
|
||
├── playlists.txt # optional playlist list
|
||
├── downloads/ # all video output
|
||
│ └── [playlist_name]/ # folders per playlist
|
||
└── logs/
|
||
└── [playlist_name].log # download log
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Future Enhancements (Optional)
|
||
- [ ] `--audio` flag to extract MP3 only.
|
||
- [ ] Smart filename cleanup (`[Karaoke]` tag).
|
||
- [ ] Graceful skip of unavailable/private videos.
|
||
- [ ] Retry logic for failed downloads.
|