A url, search string, or path to a local CSV file.
Run --help "input" to view the accepted inputs.
Can also be passed with -i, --input
--user Soulseek username
--pass Soulseek password
일반 옵션
Max concurrent downloads (default: 2)
--write-playlist Create an m3u playlist file in the output directory
--playlist-path Override default path for m3u playlist file
--no-skip-existing Do not skip downloaded tracks
--no-write-index Do not create a file indexing all downloaded tracks
--index-path Override default path for sldl index
--skip-check-cond Check file conditions when skipping existing files
--skip-check-pref-cond Check preferred conditions when skipping existing files
--skip-music-dir Also skip downloading tracks found in a music library by
comparing filenames. Not 100% reliable.
--skip-not-found Skip searching for tracks that weren't found on Soulseek
during the last run.
--listen-port Port for incoming connections (default: 49998)
--on-complete Run a command whenever a file is downloaded.
Available placeholders: {path} (local save path), {title},
{artist},{album},{uri},{length},{failure-reason},{state}.
Prepend a state number to only run in specific cases:
1:, 2:, 3:, 4: for the Downloaded, Failed, Exists, and
NotFoundLastTime states respectively.
E.g: '1:' will only run the command if the file is
downloaded successfully. Prepend 's:' to use the system
shell to execute the command.
--print
검색 옵션
Number of fails to downrank a user's shares (default: 1)
--fails-to-ignore Number of fails to ban/ignore a user's shares (default: 2)
--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-argument The command line arguments when running yt-dlp. Default:
"{id}" -f bestaudio/best -cix -o "{savepath}.%(ext)s"
Available vars are: {id}, {savedir}, {savepath} (w/o ext).
Note that -x causes yt-dlp to download webms in case ffmpeg
is unavailable.
--search-timeout Max search time in ms (default: 6000)
--max-stale-time Max download time without progress in ms (default: 50000)
--searches-per-time Max searches per time interval. Higher values may cause
30-minute bans, see --help "search". (default: 34)
--searches-renew-time Controls how often available searches are replenished.
See --help "search". (default: 220)">
--fast-search Begin downloading as soon as a file satisfying the preferred
conditions is found. Only for normal download mode.
--remove-ft Remove 'feat.' and everything after before searching
--no-remove-special-chars Do not remove special characters before searching
--remove-brackets Remove square brackets and their contents before searching
--regex Remove a regexp from all track titles and artist names.
Optionally specify a replacement regex after a semicolon.
Add 'T:', 'A:' or 'L:' at the start to only apply this to
the track title, artist, or album respectively.
--artist-maybe-wrong Performs an additional search without the artist name.
Useful for sources like SoundCloud where the "artist"
could just be an uploader. Note that when downloading a
YouTube playlist via url, this option is set automatically
on a per-track basis, so it is best kept off in that case.
-d, --desperate Tries harder to find the desired track by searching for the
artist/album/title only, then filtering. (slower search)
--fails-to-downrank Number of fails to downrank a user's shares (default: 1)
--fails-to-ignore Number of fails to ban/ignore a user's shares (default: 2)
--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-argument The command line arguments when running yt-dlp. Default:
"{id}" -f bestaudio/best -cix -o "{savepath}.%(ext)s"
Available vars are: {id}, {savedir}, {savepath} (w/o ext).
Note that -x causes yt-dlp to download webms in case ffmpeg
is unavailable.
--search-timeout Max search time in ms (default: 6000)
--max-stale-time Max download time without progress in ms (default: 50000)
--searches-per-time Max searches per time interval. Higher values may cause
30-minute bans, see --help "search". (default: 34)
--searches-renew-time Controls how often available searches are replenished.
See --help "search". (default: 220)
--youtube-key Youtube data API key
--get-deleted Attempt to retrieve titles of deleted videos from wayback
machine. Requires yt-dlp.
--deleted-only Only retrieve & download deleted music.
CSV 파일 옵션
--artist-col Artist column name
--title-col Track title column name
--album-col Album column name
--length-col Track length column name
--album-track-count-col Album track count column name (sets --album-track-count)
--yt-desc-col Youtube description column (improves --yt-parse)
--yt-id-col Youtube video id column (improves --yt-parse)
--time-format Time format in Length column of the csv file (e.g h:m:s.ms
for durations like 1:04:35.123). Default: s
--yt-parse Enable if the CSV contains YouTube video titles and channel
names; attempt to parse them into title and artist names.
--remove-from-source Remove downloaded tracks from source CSV file
파일 조건 옵션
--format Accepted file format(s), comma-separated, without periods
--length-tol Length tolerance in seconds
--min-bitrate Minimum file bitrate
--max-bitrate Maximum file bitrate
--min-samplerate Minimum file sample rate
--max-samplerate Maximum file sample rate
--min-bitdepth Minimum bit depth
--max-bitdepth Maximum bit depth
--strict-title File name must contain title
--strict-artist File path must contain artist name
--strict-album File path must contain album name
--banned-users Comma-separated list of users to ignore
--pref-format Preferred file format(s), comma-separated (default: mp3)
--pref-length-tol Preferred length tolerance in seconds (default: 3)
--pref-min-bitrate Preferred minimum bitrate (default: 200)
--pref-max-bitrate Preferred maximum bitrate (default: 2500)
--pref-min-samplerate Preferred minimum sample rate
--pref-max-samplerate Preferred maximum sample rate (default: 48000)
--pref-min-bitdepth Preferred minimum bit depth
--pref-max-bitdepth Preferred maximum bit depth
--pref-banned-users Comma-separated list of users to downrank
--strict-conditions Skip files with missing properties instead of accepting by
default; if --min-bitrate is set, ignores any files with
unknown bitrate.
앨범 다운로드 옵션
-a, --album Album download mode: Download a folder
-t, --interactive Interactive mode, allows to select the folder and images
--album-track-count Specify the exact number of tracks in the album. Add a + or
- for inequalities, e.g '5+' for five or more tracks.
--album-art
Retrieve additional images after downloading the album:
'default': No additional images
'largest': Download from the folder with the largest image
'most': Download from the folder containing the most images
--album-art-only Only download album art for the provided album
--no-browse-folder Do not automatically browse user shares to get all files in
in the folder
--failed-album-path Path to move all album files to when one of the items from
the directory fails to download. Set to 'delete' to delete
the files instead. Set to 'disable' keep it where it is.
Default: {configured output dir}/failed
집계 다운로드 옵션
-g, --aggregate Aggregate download mode: Find and download all distinct
songs associated with the provided artist, album, or title.
--aggregate-length-tol Max length tolerance in seconds to consider two tracks or
albums equal. (Default: 3)
--min-shares-aggregate Minimum number of shares of a track or album for it to be
downloaded in aggregate mode. (Default: 2)
--relax-filtering Slightly relax file filtering in aggregate mode to include
more results
메모
2단어 및 --3단어 플래그의 약어도 허용됩니다(예: --twf). 옵션에 'max'라는 단어가 포함되어 있으면 m은 대문자여야 합니다. 'bitrate', 'sameplerate' 및 'bitlength'는 모두 두 개의 개별 단어로 처리되어야 합니다(예: --max-bitrate의 경우 --Mbr).
플래그를 false로 설정하여 명시적으로 비활성화할 수 있습니다(예: '--interactive false').
입력 유형
입력 유형은 일반적으로 자동으로 결정됩니다. 특정 입력 유형을 강제로 적용하려면 --input-type [spotify|youtube|csv|string|bandcamp|list]를 설정하세요. 다음 입력 유형을 사용할 수 있습니다.
CSV 파일
로컬 CSV 파일 경로: 다운로드할 노래의 트랙 정보가 포함된 csv 파일을 사용합니다. 열 이름은 아티스트, 제목, 앨범, 길이여야 하지만 일반적으로 대체 이름도 검색됩니다. 제목 또는 앨범 열만 필요하지만 추가 정보를 추가하면 검색 결과 순위가 향상될 수 있습니다. 제목 열 텍스트가 없는 모든 행은 앨범 다운로드로 처리됩니다.
유튜브
재생목록 URL: YouTube 재생목록에서 노래를 다운로드합니다. 재생목록을 검색하는 기본 방법이 항상 모든 동영상을 반환하는 것은 아니며, 특히 사용할 수 없는 동영상은 반환하지 않습니다. 모든 비디오 타이틀을 얻으려면 --youtube-key로 키를 제공하여 공식 API를 사용할 수 있습니다. https://console.cloud.google.com에서 다운로드하세요. 새 프로젝트를 만들고 "Api 활성화"를 클릭한 다음 "youtube data"를 검색한 다음 프롬프트를 따릅니다.
스포티파이
재생목록/앨범 URL 또는 'spotify-likes': Spotify 재생목록, 앨범 또는 좋아하는 노래를 다운로드하세요. 비공개 재생목록이나 좋아요 표시한 음악을 다운로드하려면 자격 증명이 필요합니다.
자격 증명 사용
펼치려면 클릭하세요.
https://developer.spotify.com/dashboard/applications에서 리디렉션 URL http://localhost:48721/callback을 사용하여 Spotify 애플리케이션을 생성합니다. 생성된 애플리케이션 대시보드에서 애플리케이션 ID와 비밀번호를 얻습니다.
Spotify 앱 로그인 흐름을 트리거하기 위해 획득한 자격 증명과 승인된 작업으로 sldl을 시작합니다.
여기서 "일부 입력"은 위의 입력 유형 중 하나입니다. 필드에 공백이 없으면 따옴표를 생략할 수 있습니다. 조건 필드는 구성된 조건 위에 추가되며 생략할 수도 있습니다. 목록 입력은 --input-type=list를 사용하여 수동으로 활성화해야 합니다. 또한 앨범 다운로드에 대한 약칭인 a:"Artist - Album" 허용합니다. a: 는 따옴표 밖에 표시되어야 합니다.
다운로드 모드
정상
기본값입니다. 모든 입력 항목에 대해 단일 파일을 다운로드합니다.
앨범
sldl은 앨범을 검색하고 오디오가 아닌 파일을 포함한 전체 폴더를 다운로드합니다. 입력이 Spotify 또는 밴드캠프 앨범에 대한 링크일 때, 입력 문자열 또는 csv 행에 트랙 제목이 없을 때, 또는 -a/--album이 활성화될 때 활성화됩니다.
골재
-g/--aggregate를 사용하면 sldl은 입력에 대한 일반적인 검색을 수행한 다음 결과를 고유한 노래로 그룹화하고 가장 많은 사용자가 공유하는 노래부터 시작하여 각 종류 중 하나를 다운로드하려고 시도합니다. --min-shares-aggregate는 기본적으로 2입니다. 이는 한 명의 사용자만 공유한 노래가 무시된다는 의미입니다.
앨범 집계
--album 및 --aggregate가 모두 활성화되면 활성화됩니다. sldl은 공유를 그룹화하고 가장 많은 사용자가 공유한 앨범부터 시작하여 각 앨범 중 하나를 다운로드합니다. --interactive와 함께 사용하는 것이 좋습니다. --min-shares-aggregate는 기본적으로 2입니다. 즉, 한 명의 사용자만 공유하는 앨범은 무시됩니다.
수색
검색어
검색어는 다음과 같이 결정됩니다.
앨범 다운로드의 경우: 앨범 필드가 비어 있지 않은 경우 '아티스트 앨범'을 검색하세요. 그렇지 않으면 '아티스트 제목'을 검색하세요.
기타 모든 다운로드 유형의 경우: 제목 필드가 비어 있지 않은 경우 '아티스트 제목'을 검색하세요. 그렇지 않으면 '아티스트 앨범'을 검색하세요.
Soulseek의 속도 제한
짧은 시간 내에 너무 많은 검색이 수행되면 서버는 30분 동안 귀하를 차단합니다. 이 프로그램에는 --searches-per-time 및 --searches-renew-time을 사용하여 조정할 수 있는 검색 제한기가 있습니다(제한에 도달하면 다운로드 상태가 "대기 중"이 됩니다). 기본적으로 220초마다 최대 34개의 검색을 허용하도록 구성되어 있습니다. 기본값은 실험을 통해 결정되었으므로 정확하지 않을 수 있습니다.
작업 속도 향상
다음 옵션을 사용하면 속도가 빨라지지만 검색 결과 품질이 저하되거나 불안정해질 수 있습니다.
--fast-search 검색이 완료될 때까지 기다리지 않고 기본 조건과 일치하는 파일이 발견되는 즉시 다운로드합니다.
--concurrent-downloads - 4개 이상으로 설정
--max-stale-time은 기본적으로 50초로 설정되어 있으므로 파일을 포기하기까지 오랜 시간을 기다립니다.
--시간당 검색 수 - 금지될 위험이 있으므로 증가합니다.
파일 조건
필수 조건을 만족하지 않는 파일은 다운로드되지 않습니다. 사전 조건을 만족하는 파일이 선호됩니다. --pref-format "flac,wav"를 설정하면 가능한 경우 무손실 파일을 다운로드하고, 다른 것이 없으면 손실이 있는 파일만 다운로드하게 됩니다.
따라서 sldl은 비트 전송률이 200~2500kbps이고 길이가 제공된 길이와 3초 이내 차이가 나는 mp3 파일을 선호합니다. 또한 경로에 제공된 제목과 앨범(대소문자 무시, 경계 문자로 구분)이 포함되고 길이가 null이 아닌 파일을 선호합니다. 마지막 세 가지 선호 조건을 변경하는 것은 권장되지 않습니다. 기본 조건의 하위 집합을 충족하는 파일은 어떤 조건도 충족하지 않는 파일보다 여전히 선호되지만 일부 조건은 다른 조건보다 우선합니다. 예를 들어, 엄격한 제목(활성화된 경우)만 충족하는 파일은 형식 조건만 충족하는 파일보다 항상 선호됩니다. --print "results-full"을 사용하여 실행하면 정렬 논리가 표시됩니다.
조건은 --cond 및 --pref를 사용하여 세미콜론으로 구분된 문자열로 제공될 수도 있습니다(예: --cond "br >= 320; format = mp3,ogg; sr < 96000").
관련 없는 결과 필터링
--strict-title, --strict-artist 및 --strict-album 옵션은 파일 이름에 제목/아티스트/앨범이 포함되지 않은 모든 파일을 필터링합니다(대소문자 무시, 경계 문자로 제한). 잘못된 다운로드를 방지하는 또 다른 방법은 --length-tol을 3 이하로 설정하여 입력과 3초 이상 다른 노래를 무시하도록 하는 것입니다. 그러나 4가지 옵션은 모두 기본적으로 이미 '선호' 조건으로 활성화되어 있습니다. 즉, 해당 파일은 어쨌든 최후의 수단으로만 다운로드됩니다. 따라서 허위 다운로드를 최대한 최소화해야 하는 경우나 이름이 한두 글자로 구성된 트랙이나 앨범과 같은 특수한 경우에만 활성화하는 것이 좋습니다.
중요사항
피어가 사용하는 클라이언트에 따라 일부 정보를 사용하지 못할 수도 있습니다. 예를 들어 표준 Soulseek 클라이언트는 파일 비트 전송률을 공유하지 않습니다. 예를 들어 --min-bitrate가 설정된 경우 sldl은 알 수 없는 비트 전송률을 가진 파일을 계속 허용합니다. --strict-condition을 활성화하면 확인된 속성 중 하나 이상이 null(알 수 없음)인 모든 파일을 거부하도록 구성할 수 있습니다. 결과적으로 --min-bitrate도 설정되면 사용자가 기본 클라이언트와 공유하는 모든 파일은 무시됩니다. 또한 기본 선호 조건은 비트 전송률 및 샘플링 속도 확인으로 인해 이 옵션의 순위에 이미 영향을 미칩니다.
이름 형식
{}로 묶인 변수는 해당 파일 태그 값으로 대체됩니다. 이름 형식은 {tag1|tag2}와 같은 조건식은 물론 하위 디렉터리도 지원합니다. tag1이 null인 경우 tag2를 사용하세요. 괄호로 묶인 문자열 리터럴은 null 검사에서 무시됩니다.
예:
"{아티스트} - {제목}" 항상 '아티스트 - 제목'으로 이름을 지정하세요. Soulseek의 일부 파일에는 태그가 지정되지 않았기 때문에 일반적으로 다음이 선호됩니다:
"{아티스트( - )제목|파일 이름}" 아티스트와 제목이 null이 아닌 경우 이름을 'Artist - Title'로 지정하고, 그렇지 않으면 원래 파일 이름을 사용합니다.
"{앨범 아티스트(/)앨범(/)트랙(. )제목|(누락된 태그/)폴더 이름(/)파일 이름}" 모든 태그가 있으면 파일을 아티스트/앨범 폴더로 정렬하고, 그렇지 않으면 'missing-tags' 폴더에 넣습니다.
사용 가능한 변수:
artist First artist (from the file tags)
sartist Source artist (as on CSV/Spotify/YouTube/etc)
artists Artists, joined with '&'
albumartist First album artist
albumartists Album artists, joined with '&'
title Track title
stitle Source track title
album Album name
salbum Source album name
year Track year or date
track Track number
disc Disc number
filename Soulseek filename without extension
foldername Soulseek folder name
extractor Name of the extractor used (CSV/Spotify/YouTube/etc)
default-folder Default sldl folder name (usually the playlist name)
위 프로필을 활성화하려면 --profile "lossless"를 실행하세요. 사용 가능한 모든 프로필을 나열하려면 --profile "help"를 실행하세요. 프로필은 몇 가지 간단한 조건에 따라 자동으로 활성화될 수 있습니다.
[no-stale]
profile-cond = interactive && download-mode == "album"
max-stale-time = 999999
# album downloads will never be automatically cancelled in interactive mode
[youtube]
profile-cond = input-type == "youtube"
path = ~/downloads/sldl-youtube
# download to another location for youtube
profile-cond에서 사용할 수 있는 연산자는 &&, ||, ==, !=, !{bool}입니다. 다음 변수를 사용할 수 있습니다.
wishlist.txt 라는 파일을 만들고 입력 유형: 목록에 설명된 대로 일부 항목을 추가합니다.
" Artist - My Favorite Song "
a: " Artist - Some Album, album-track-count=5 "" format=flac "
sldl.conf 에 프로필을 추가하세요.
[wishlist]
input = ~/sldl/wishlist.txt
input-type = list
index-path = ~/sldl/wishlist-index.sldl
이렇게 하면 이미 다운로드된 위시리스트 항목을 건너뛰기 위해 sldl이 실행될 때마다 검색되는 글로벌 인덱스 파일 wishlist-index.sldl 생성됩니다. 선호하는 조건을 만족하는 버전이 다운로드될 때까지 검색을 계속하려면 skip-check-pref-cond = true 도 추가하세요(이렇게 하려면 다운로드 후 파일이 동일한 위치에 남아 있어야 합니다). 마지막으로 다음 옵션을 사용하여 sldl을 주기적으로 실행하도록 cron 작업(또는 Windows의 예약된 작업)을 설정합니다.
sldl --profile wishlist
메모
macOS 빌드의 경우 게시.sh를 사용하여 앱을 빌드할 수 있습니다. https://dotnet.microsoft.com/en-us/download/dotnet/6.0에서 dotnet을 다운로드한 다음 chmod +x publish.sh && sh publish.sh 실행합니다. Intel Mac의 경우 x64의 주석 처리를 제거하고 게시.sh의 arm64 섹션에 주석을 추가합니다.
인쇄된 출력은 일부 구성(새 Windows 터미널, git bash)에서 중복되거나 겹치거나 업데이트되지 않을 수 있습니다. 문제가 있는 경우 다른 터미널을 사용하거나 --no-progress 사용하세요.
도커
sldl 실행하기 위한 Docker 컨테이너는 이 저장소에서 구축할 수 있습니다. 이미지는 Linux x86/ARM을 지원합니다.
컨테이너를 빌드하고 시작하려면 다음 안내를 따르세요.
clone https://github.com/fiso64/slsk-batchdl
cd slsk-batchdl
docker compose up -d
sldl 사용을 시작하려면 컨테이너에 exec .
docker compose exec sldl sh
sldl --help
Compose 스택은 파일 관리에 사용할 수 있는 docker-compose.yml 이 있는 위치를 기준으로 두 개의 디렉터리를 마운트합니다.
/config (호스트의 ./config ) - sldl.conf 구성을 이 디렉터리에 넣은 다음 sldl -c /config ... 사용하여 컨테이너에서 구성을 사용합니다.
/data (호스트의 ./data ) - 다운로드 디렉터리로 사용 IE sldl -p /data ...
파일 권한
Linux 호스트 에서 Docker를 실행하는 경우 docker 파일 권한 문제를 방지하려면 호스트의 구성 및 데이터 디렉터리를 소유한 사용자의 user:group 권한을 지정해야 합니다. 이는 환경 변수 PUID 및 PGID를 사용하여 지정할 수 있습니다.
현재 사용자의 UID 및 GID를 얻으려면 터미널에서 다음 명령을 실행하십시오.
id -u -- UID를 인쇄합니다.
id -g -- GID를 인쇄합니다.
이를 docker-compose.yml 의 해당 변수( PUIDPGID )로 바꿉니다.
크론
컨테이너에 내장된 cron을 사용하여 일정에 따라 하나 이상의 sldl 명령을 실행할 수 있습니다.
일정을 만들려면 호스트 ./config/crontabs/abc 에 새 파일을 만들고 표준 crontab 구문과 함께 사용하세요.
cron 파일을 변경한 후에는 컨테이너를 다시 시작해야 합니다.
예 => 매주 일요일 오전 1시에 sldl 실행하고 지정된 Spotify 재생 목록에서 누락된 트랙을 검색합니다.