diff --git a/README.md b/README.md index 1c8a2ef..9c1add4 100644 --- a/README.md +++ b/README.md @@ -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 - ๐Ÿ—‚๏ธ **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) +- โšก **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 - **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 ``` -### Download from a List of Channels +### Download Only Songlist Songs (Fast Mode) ```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 -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 @@ -60,11 +68,6 @@ python download_karaoke.py --limit 5 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** ```bash python download_karaoke.py --reset-channel SingKingKaraoke @@ -134,11 +137,11 @@ KaroakeVideoDownloader/ ``` ## ๐Ÿšฆ CLI Options -- `--file `: Download from a list of channels +- `--file `: Download from a list of channels (optional, defaults to data/channels.txt for songlist modes) - `--songlist-priority`: Prioritize songlist songs in download queue - `--songlist-only`: Download only songs from the songlist - `--songlist-status`: Show songlist download progress -- `--limit `: Limit number of downloads +- `--limit `: Limit number of downloads (enables fast mode with early exit) - `--resolution <720p|1080p|...>`: Override resolution - `--status`: Show download/tracking status - `--reset-channel `: **Reset all tracking and files for a channel** @@ -150,9 +153,16 @@ KaroakeVideoDownloader/ ## ๐Ÿ“ Example Usage ```bash -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 --songlist-status +# Fast mode with fuzzy matching (no need to specify --file) +python download_karaoke.py --songlist-only --limit 10 --fuzzy-match --fuzzy-threshold 85 + +# 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 --reset-songlist python download_karaoke.py --clear-cache all