From 43ae7a2754667bf937d29c0cf1dff98f9949d1e8 Mon Sep 17 00:00:00 2001 From: fiso64 Date: Sun, 2 Apr 2023 18:09:42 +0200 Subject: [PATCH] slow print mode can now search for tracks that are unavailable in youtube, better console display, --skip-notfound added, --no-diacr-search added --- README.md | 67 +- slsk-batchdl/Program.cs | 943 ++++++++++++++------ slsk-batchdl/Properties/launchSettings.json | 18 +- slsk-batchdl/Spotify.cs | 24 +- slsk-batchdl/YouTube.cs | 327 +++++-- slsk-batchdl/slsk-batchdl.csproj | 4 +- 6 files changed, 1005 insertions(+), 378 deletions(-) diff --git a/README.md b/README.md index 2c6e68e..4e7a317 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ A batch downloader for Soulseek using Soulseek.NET. Accepts CSV files, Spotify & Usage: slsk-batchdl.exe [OPTIONS] Options: -p --parent Downloaded music will be placed here - -n --name Folder / playlist name. If not specified, the name of the csv file / spotify playlist is used. + -n --name Folder / playlist name. If not specified, the name of the csv file / spotify / yt playlist is used. --username Soulseek username --password Soulseek password @@ -14,58 +14,75 @@ Options: --spotify-id Your spotify client id (use if the default fails or if playlist private) --spotify-secret Your spotify client secret (use if the default fails or if playlist private) - --youtube Download YouTube playlist + --youtube Get tracks from a YouTube playlist + --youtube-key Provide an API key if you also want to search for unavailable uploads + --no-channel-search Enable to also perform a search without channel name if nothing was found (only for yt). --csv Use a csv file containing track info to download - --artist-col Specify if the csv file contains an artist name column - --track-col Specify if if the csv file contains an track name column - --album-col CSV album column name. Optional, may improve searching, slower - --full-title-col Specify only if there are no separate artist and track name columns in the csv - --uploader-col Specify when using full title col if there is also an uploader column in the csv (fallback in case artist name cannot be extracted from title) + --artist-col Artist or uploader name column + --title-col Title or track name column + --album-col CSV album column name. Optional, may improve searching, slower --length-col CSV duration column name. Recommended, will improve accuracy --time-unit Time unit for the track duration column, ms or s (default: s) + --yt-desc-col Description column name. Use with --yt-parse. + --yt-id-col Youtube video ID column (only needed if length-col or yt-desc-col don't exist). Use with --yt-parse. + --yt-parse Enable if you have a csv file of YouTube video titles and channel names; attempt to parse. --pref-format Preferred file format (default: mp3) - --pref-length-tolerance Preferred length tolerance (if length col provided) (default: 3) + --pref-length-tol Preferred length tolerance (if length col provided) (default: 3) --pref-min-bitrate Preferred minimum bitrate (default: 200) --pref-max-bitrate Preferred maximum bitrate (default: 2200) - --pref-max-sample-rate Preferred maximum sample rate (default: 96000) + --pref-max-samplerate Preferred maximum sample rate (default: 96000) + --pref-danger-words Comma separated list of words that must appear in either both search result and track title, or in neither of the two. Case-insensitive. (default: "mix, edit,dj ,cover") --nec-format Necessary file format --nec-length-tolerance Necessary length tolerance (default: 3) --nec-min-bitrate Necessary minimum bitrate --nec-max-bitrate Necessary maximum bitrate - --nec-max-sample-rate Necessary maximum sample rate + --nec-max-samplerate Necessary maximum sample rate + --nec-danger-words Comma separated list of words that must appear in either both search result and track title, or in neither of the two. Case-insensitive. (default: "mix, edit,dj ,cover") - --album-search Also search for "[Album name] [track name]". Occasionally helps to find more + --album-search Also search for "[Album name] [track name]". Occasionally helps to find more, slower. + --no-diacr-search Also perform a search without diacritics --skip-existing Skip if a track matching the conditions is found in the output folder or your music library (if provided) + --skip-notfound Skip searching for tracks that weren't found in Soulseek last time + --remove-ft Remove "ft." or "feat." and everything after from the track names. + --remove-strings Comma separated list of strings to remove when searching for tracks. Case insesitive. --music-dir Specify to also skip downloading tracks which are in your library, use with --skip-existing --reverse Download tracks in reverse order --skip-if-pref-failed Skip if preferred versions of a track exist but failed to download. If no pref. versions were found, download as normal. --create-m3u Create an m3u playlist file --m3u-only Only create an m3u playlist file with existing tracks and exit --m3u Where to place created m3u files (--parent by default) - --yt-dlp Use yt-dlp to download tracks that weren't found on Soulseek. yt-dlp must be availble from the command line. + --yt-dlp Use yt-dlp to download tracks that weren't found on Soulseek. yt-dlp must be available from the command line. --yt-dlp-f yt-dlp audio format (default: "bestaudio/best") - --search-timeout Maximal search time (default: 15000) - --download-max-stale-time