KaraokeVideoDownloader/docs/PRD.md

75 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎤 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.