Signed-off-by: mbrucedogs <mbrucedogs@gmail.com>

This commit is contained in:
mbrucedogs 2025-07-24 08:19:01 -05:00
parent f3723137fa
commit 837ecf2ec4
2 changed files with 32 additions and 1 deletions

8
PRD.md
View File

@ -38,6 +38,8 @@ A Python-based Windows CLI tool to download karaoke videos from YouTube channels
python download_karaoke.py https://www.youtube.com/@SingKingKaraoke/videos python download_karaoke.py https://www.youtube.com/@SingKingKaraoke/videos
python download_karaoke.py --file data/channels.txt python download_karaoke.py --file data/channels.txt
python download_karaoke.py --songlist-only python download_karaoke.py --songlist-only
python download_karaoke.py --reset-channel SingKingKaraoke --reset-songlist
python download_karaoke.py --clear-cache SingKingKaraoke
``` ```
--- ---
@ -61,6 +63,8 @@ python download_karaoke.py --songlist-only
- ✅ ID3 tagging for artist/title in MP4 files (mutagen) - ✅ ID3 tagging for artist/title in MP4 files (mutagen)
- ✅ Real-time progress and detailed logging - ✅ Real-time progress and detailed logging
- ✅ Automatic cleanup of extra yt-dlp files - ✅ Automatic cleanup of extra yt-dlp files
- ✅ **Reset/clear channel tracking and files via CLI**
- ✅ **Clear channel cache via CLI**
--- ---
@ -107,6 +111,9 @@ KaroakeVideoDownloader/
- `--limit <N>`: Limit number of downloads - `--limit <N>`: Limit number of downloads
- `--resolution <720p|1080p|...>`: Override resolution - `--resolution <720p|1080p|...>`: Override resolution
- `--status`: Show download/tracking status - `--status`: Show download/tracking status
- `--reset-channel <CHANNEL_NAME>`: **Reset all tracking and files for a channel**
- `--reset-songlist`: **When used with --reset-channel, also reset songlist songs for this channel**
- `--clear-cache <CHANNEL_ID|all>`: **Clear channel video cache for a specific channel or all**
--- ---
@ -116,6 +123,7 @@ KaroakeVideoDownloader/
- **Batch/Caching:** Channel video lists are cached to minimize API calls; tracking is batch-saved for performance. - **Batch/Caching:** Channel video lists are cached to minimize API calls; tracking is batch-saved for performance.
- **ID3 Tagging:** Artist/title extracted from video title and embedded in MP4 files. - **ID3 Tagging:** Artist/title extracted from video title and embedded in MP4 files.
- **Cleanup:** Extra files from yt-dlp (e.g., `.info.json`) are automatically removed after download. - **Cleanup:** Extra files from yt-dlp (e.g., `.info.json`) are automatically removed after download.
- **Reset/Clear:** Use `--reset-channel` to reset all tracking and files for a channel (optionally including songlist songs with `--reset-songlist`). Use `--clear-cache` to clear cached video lists for a channel or all channels.
--- ---

View File

@ -11,6 +11,7 @@ A Python-based Windows CLI tool to download karaoke videos from YouTube channels
- 🏷️ **ID3 Tagging**: Adds artist/title metadata to MP4 files - 🏷️ **ID3 Tagging**: Adds artist/title metadata to MP4 files
- 🧹 **Automatic Cleanup**: Removes extra yt-dlp files - 🧹 **Automatic Cleanup**: Removes extra yt-dlp files
- 📈 **Real-Time Progress**: Detailed console and log output - 📈 **Real-Time Progress**: Detailed console and log output
- 🧹 **Reset/Clear Channel**: Reset all tracking and files for a channel, or clear channel cache via CLI
## 📋 Requirements ## 📋 Requirements
- **Windows 10/11** - **Windows 10/11**
@ -55,6 +56,22 @@ python download_karaoke.py --limit 5
python download_karaoke.py --resolution 1080p python download_karaoke.py --resolution 1080p
``` ```
### **Reset/Start Over for a Channel**
```bash
python download_karaoke.py --reset-channel SingKingKaraoke
```
### **Reset Channel and Songlist Songs**
```bash
python download_karaoke.py --reset-channel SingKingKaraoke --reset-songlist
```
### **Clear Channel Cache**
```bash
python download_karaoke.py --clear-cache SingKingKaraoke
python download_karaoke.py --clear-cache all
```
## 🧠 Songlist Integration ## 🧠 Songlist Integration
- Place your prioritized song list in `data/songList.json` (see example format below). - Place your prioritized song list in `data/songList.json` (see example format below).
- The tool will match and prioritize these songs across all available channel videos. - The tool will match and prioritize these songs across all available channel videos.
@ -115,12 +132,18 @@ KaroakeVideoDownloader/
- `--limit <N>`: Limit number of downloads - `--limit <N>`: Limit number of downloads
- `--resolution <720p|1080p|...>`: Override resolution - `--resolution <720p|1080p|...>`: Override resolution
- `--status`: Show download/tracking status - `--status`: Show download/tracking status
- `--reset-channel <CHANNEL_NAME>`: **Reset all tracking and files for a channel**
- `--reset-songlist`: **When used with --reset-channel, also reset songlist songs for this channel**
- `--clear-cache <CHANNEL_ID|all>`: **Clear channel video cache for a specific channel or all**
## 📝 Example Usage ## 📝 Example Usage
```bash ```bash
python download_karaoke.py https://www.youtube.com/@SingKingKaraoke/videos --songlist-priority --limit 10 python download_karaoke.py https://www.youtube.com/@SingKingKaraoke/videos --songlist-priority --limit 10
python download_karaoke.py --file data/channels.txt --songlist-only python download_karaoke.py --file data/channels.txt --songlist-only
python download_karaoke.py --songlist-status python download_karaoke.py --songlist-status
python download_karaoke.py --reset-channel SingKingKaraoke
python download_karaoke.py --reset-channel SingKingKaraoke --reset-songlist
python download_karaoke.py --clear-cache all
``` ```
## 🏷️ ID3 Tagging ## 🏷️ ID3 Tagging
@ -129,7 +152,7 @@ python download_karaoke.py --songlist-status
## 🧹 Cleanup ## 🧹 Cleanup
- Removes `.info.json` and `.meta` files after download - Removes `.info.json` and `.meta` files after download
## 🧩 Configuration ## 🛠️ Configuration
- All options are in `data/config.json` (format, resolution, metadata, etc.) - All options are in `data/config.json` (format, resolution, metadata, etc.)
- You can edit this file or use CLI flags to override - You can edit this file or use CLI flags to override