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

This commit is contained in:
mbrucedogs 2025-07-24 20:30:31 -05:00
parent aa28101926
commit 28364daacd

View File

@ -14,6 +14,9 @@ A Python-based Windows CLI tool to download karaoke videos from YouTube channels
- 🧹 **Reset/Clear Channel**: Reset all tracking and files for a channel, or clear channel cache via CLI - 🧹 **Reset/Clear Channel**: Reset all tracking and files for a channel, or clear channel cache via CLI
- 🗂️ **Latest-per-channel download**: Download the latest N videos from each channel in a single batch, with a per-channel download plan, robust resume, and unique plan cache. Use --latest-per-channel and --limit N. - 🗂️ **Latest-per-channel download**: Download the latest N videos from each channel in a single batch, with a per-channel download plan, robust resume, and unique plan cache. Use --latest-per-channel and --limit N.
- 🧩 **Fuzzy Matching**: Optionally use fuzzy string matching for songlist-to-video matching (with --fuzzy-match, requires rapidfuzz for best results) - 🧩 **Fuzzy Matching**: Optionally use fuzzy string matching for songlist-to-video matching (with --fuzzy-match, requires rapidfuzz for best results)
- ⚡ **Fast Mode with Early Exit**: When a limit is set, scans channels and songs in order, downloads immediately when a match is found, and stops as soon as the limit is reached with successful downloads
- 🔄 **Deduplication Across Channels**: Ensures the same song is not downloaded from multiple channels, even if it appears in more than one channel's video list
- 📋 **Default Channel File**: Automatically uses data/channels.txt as the default channel list for songlist modes (no need to specify --file every time)
## 📋 Requirements ## 📋 Requirements
- **Windows 10/11** - **Windows 10/11**
@ -30,14 +33,19 @@ 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
``` ```
### Download from a List of Channels ### Download Only Songlist Songs (Fast Mode)
```bash ```bash
python download_karaoke.py --file data/channels.txt python download_karaoke.py --songlist-only --limit 5
``` ```
### Download Only Songlist Songs ### Download with Fuzzy Matching
```bash ```bash
python download_karaoke.py --songlist-only python download_karaoke.py --songlist-only --limit 10 --fuzzy-match --fuzzy-threshold 85
```
### Download Latest N Videos Per Channel
```bash
python download_karaoke.py --latest-per-channel --limit 5
``` ```
### Prioritize Songlist in Download Queue ### Prioritize Songlist in Download Queue
@ -60,11 +68,6 @@ python download_karaoke.py --limit 5
python download_karaoke.py --resolution 1080p python download_karaoke.py --resolution 1080p
``` ```
### Download Latest N Videos Per Channel
```bash
python download_karaoke.py --file data/channels.txt --latest-per-channel --limit 5
```
### **Reset/Start Over for a Channel** ### **Reset/Start Over for a Channel**
```bash ```bash
python download_karaoke.py --reset-channel SingKingKaraoke python download_karaoke.py --reset-channel SingKingKaraoke
@ -134,11 +137,11 @@ KaroakeVideoDownloader/
``` ```
## 🚦 CLI Options ## 🚦 CLI Options
- `--file <data/channels.txt>`: Download from a list of channels - `--file <data/channels.txt>`: Download from a list of channels (optional, defaults to data/channels.txt for songlist modes)
- `--songlist-priority`: Prioritize songlist songs in download queue - `--songlist-priority`: Prioritize songlist songs in download queue
- `--songlist-only`: Download only songs from the songlist - `--songlist-only`: Download only songs from the songlist
- `--songlist-status`: Show songlist download progress - `--songlist-status`: Show songlist download progress
- `--limit <N>`: Limit number of downloads - `--limit <N>`: Limit number of downloads (enables fast mode with early exit)
- `--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-channel <CHANNEL_NAME>`: **Reset all tracking and files for a channel**
@ -150,9 +153,16 @@ KaroakeVideoDownloader/
## 📝 Example Usage ## 📝 Example Usage
```bash ```bash
python download_karaoke.py https://www.youtube.com/@SingKingKaraoke/videos --songlist-priority --limit 10 # Fast mode with fuzzy matching (no need to specify --file)
python download_karaoke.py --file data/channels.txt --songlist-only python download_karaoke.py --songlist-only --limit 10 --fuzzy-match --fuzzy-threshold 85
python download_karaoke.py --songlist-status
# Latest videos per channel
python download_karaoke.py --latest-per-channel --limit 5
# Traditional full scan (no limit)
python download_karaoke.py --songlist-only
# Channel-specific operations
python download_karaoke.py --reset-channel SingKingKaraoke python download_karaoke.py --reset-channel SingKingKaraoke
python download_karaoke.py --reset-channel SingKingKaraoke --reset-songlist python download_karaoke.py --reset-channel SingKingKaraoke --reset-songlist
python download_karaoke.py --clear-cache all python download_karaoke.py --clear-cache all