mirror of
https://github.com/fiso64/slsk-batchdl.git
synced 2025-01-08 06:22:43 +00:00
update readme
This commit is contained in:
parent
13072ecc79
commit
b5e7e58a9c
2 changed files with 177 additions and 199 deletions
197
README.md
197
README.md
|
@ -186,7 +186,7 @@ Usage: sldl <input> [OPTIONS]
|
|||
#### Album Download Options
|
||||
```
|
||||
-a, --album Album download mode: Download a folder
|
||||
-t, --interactive Interactive mode, allows to select the folder and images
|
||||
-t, --interactive Interactively select folders. See --help shortcuts.
|
||||
--album-track-count <num> Specify the exact number of tracks in the album. Add a + or
|
||||
- for inequalities, e.g '5+' for five or more tracks.
|
||||
--album-art <option> Retrieve additional images after downloading the album:
|
||||
|
@ -222,25 +222,25 @@ Flags can be explicitly disabled by setting them to false, e.g '--interactive fa
|
|||
|
||||
## Input types
|
||||
|
||||
The input type is usually determined automatically. To force a specific input type, set
|
||||
--input-type [spotify|youtube|csv|string|bandcamp|list]. The following input types are available:
|
||||
The input type is usually determined automatically, however it's possible to manually set it
|
||||
with `--input-type`. The following input types are available:
|
||||
|
||||
### CSV file
|
||||
Path to a local CSV file: Use a csv file containing track info of the songs to download.
|
||||
The names of the columns should be Artist, Title, Album, Length, although alternative names
|
||||
are usually detected as well. Only the title or album column is required, but extra info may
|
||||
improve search result ranking. Every row that does not have a title column text will be treated
|
||||
as an album download.
|
||||
Path to a local CSV file. Use a csv file containing track information to download a list of
|
||||
songs or albums. Only the title or album column is required, but extra info may improve search
|
||||
result ranking. If the columns have common names ('Artist', 'Title', 'Album', 'Length', etc)
|
||||
then it's not required to manually specify them. Rows that do not have any text in the title
|
||||
column will be treated as album downloads.
|
||||
|
||||
### YouTube
|
||||
A playlist url: Download songs from a youtube playlist.
|
||||
The default method to retrieve playlists doesn't always return all videos, especially not
|
||||
the ones which are unavailable. To get all video titles, you can use the official API by
|
||||
providing a key with --youtube-key. Get it here https://console.cloud.google.com. Create a
|
||||
new project, click "Enable Api" and search for "youtube data", then follow the prompts.
|
||||
A YouTube playlist url. Download songs from a youtube playlist.
|
||||
The default method to retrieve playlists does not reliably return all videos. To get all
|
||||
video titles, you can use the official API by providing a key with `--youtube-key`. A key can
|
||||
be obtained at https://console.cloud.google.com. Create a new project, click 'Enable Api' and
|
||||
search for 'youtube data', then follow the prompts.
|
||||
|
||||
### Spotify
|
||||
A playlist/album url or 'spotify-likes': Download a spotify playlist, album, or your
|
||||
A playlist/album url, or 'spotify-likes'. Download a spotify playlist, album, or your
|
||||
liked songs. Credentials are required when downloading a private playlist or liked music.
|
||||
|
||||
#### Using Credentials
|
||||
|
@ -267,62 +267,59 @@ spotify-token access is only valid for 1 hour. spotify-refresh will enable sldl
|
|||
</details>
|
||||
|
||||
### Bandcamp
|
||||
A bandcamp url: Download a single track, an album, or an artist's entire discography.
|
||||
Extracts the artist name, album name and sets --album-track-count="n+", where n is the
|
||||
number of visible tracks on the bandcamp page.
|
||||
A bandcamp track, album, or artist url. Download a single track, an album, or an artist's
|
||||
entire discography.
|
||||
|
||||
### Search string
|
||||
Name of the track, album, or artist to search for: Can either be any typical search string
|
||||
(like what you would enter into the soulseek search bar), or a comma-separated list of
|
||||
properties like 'title=Song Name, artist=Artist Name, length=215'.
|
||||
Name of the track, album, or artist to search for. The input can either be an arbitrary
|
||||
search string (like what you would type in the soulseek search bar), or a comma-separated
|
||||
list of properties of the form `title=Song Name, artist=Artist Name, length=215`.
|
||||
|
||||
The following properties are accepted: title, artist, album, length (in seconds),
|
||||
artist-maybe-wrong, album-track-count.
|
||||
|
||||
Example inputs and their interpretations:
|
||||
Example inputs:
|
||||
| Input String | Artist | Title | Album | Length |
|
||||
|-----------------------------------------|----------|----------|----------|--------|
|
||||
| 'Foo Bar' (without any hyphens) | | Foo Bar | | |
|
||||
| 'Foo - Bar' | Foo | Bar | | |
|
||||
| 'Foo - Bar' (with --album enabled) | Foo | | Bar | |
|
||||
| 'Artist - Title, length=42' | Artist | Title | | 42 |
|
||||
| 'artist=AR, title=T, album=AL' | AR | T | AL | |
|
||||
| Foo Bar (without hyphens) | | Foo Bar | | |
|
||||
| Foo - Bar | Foo | Bar | | |
|
||||
| Foo - Bar (with --album) | Foo | | Bar | |
|
||||
| Artist - Title, length=42 | Artist | Title | | 42 |
|
||||
| artist=AR, title=T, album=AL | AR | T | AL | |
|
||||
|
||||
### List
|
||||
A path to a text file where each line has the following form:
|
||||
List input must be manually activated with `--input-type=list`. The input is a path to a text
|
||||
file containing lines of the following form:
|
||||
```bash
|
||||
# input conditions pref. conditions
|
||||
"artist=Artist, album=Album" "format=mp3; br > 128" "br >= 320"
|
||||
artist=Artist,album=Album format=mp3;br>128 "br >= 320"
|
||||
```
|
||||
Where "some input" is any of the above input types. The quotes can be omitted if the field
|
||||
contains no spaces. The condition fields are added on top of the
|
||||
configured conditions and can also be omitted. List input must be manually activated with
|
||||
--input-type=list.
|
||||
It also accepts a shorthand for album downloads: `a:"Artist - Album"`. Note that the `a:` must appear outside the quotes.
|
||||
The inputs can be any of the above input types. The conditions are added on top of the
|
||||
configured conditions and can be omitted.
|
||||
For album downloads, the above example can be written briefly as `a:"Artist - Album"` (note
|
||||
that `a:` must appear outside the quotes).
|
||||
|
||||
## Download modes
|
||||
|
||||
### Normal
|
||||
The default. Downloads a single file for every input entry.
|
||||
The default. Downloads a single file for every input entry.
|
||||
|
||||
### Album
|
||||
sldl will search for the album and download an entire folder including non-audio
|
||||
files. Activated when the input is a link to a spotify or bandcamp album, when the input
|
||||
string or csv row has no track title, or when -a/--album is enabled.
|
||||
sldl will search for the album and download an entire folder including non-audio
|
||||
files. Activated when the input is a link to a spotify or bandcamp album, when the input
|
||||
string or csv row has no track title, or when `-a/--album` is enabled.
|
||||
|
||||
### Aggregate
|
||||
With -g/--aggregate, sldl performs an ordinary search for the input then attempts to
|
||||
group the results into distinct songs and download one of each kind, starting with the one
|
||||
shared by the most users.
|
||||
Note that --min-shares-aggregate is 2 by default, which means that songs shared by only
|
||||
one user will be ignored.
|
||||
With `-g/--aggregate`, sldl performs an ordinary search for the input, then attempts to
|
||||
group the results into distinct songs and download one of each, starting with the one shared
|
||||
by the most users. Note that `--min-shares-aggregate` is 2 by default, meaning that songs
|
||||
shared by only one user will be ignored.
|
||||
|
||||
### Album Aggregate
|
||||
Activated when both --album and --aggregate are enabled. sldl will group shares and download
|
||||
one of each distinct album, starting with the one shared by the most users. It is
|
||||
recommended to pair this with --interactive.
|
||||
Note that --min-shares-aggregate is 2 by default, which means that albums shared by only
|
||||
one user will be ignored.
|
||||
Activated when both `--album` and `--aggregate` are enabled. sldl will group shares and
|
||||
download one of each distinct album, starting with the one shared by the most users. It is
|
||||
recommended to pair this with `--interactive`. Note that `--min-shares-aggregate` is 2 by
|
||||
default, meaning that albums shared by only one user will be ignored.
|
||||
|
||||
|
||||
## Searching
|
||||
|
@ -336,28 +333,28 @@ The search query is determined as follows:
|
|||
Otherwise, search for 'Artist Album'
|
||||
|
||||
### Soulseek's rate limits
|
||||
The server will ban you for 30 minutes if too many searches are performed within a short
|
||||
timespan. The program has a search limiter which can be adjusted with --searches-per-time
|
||||
and --searches-renew-time (when the limit is reached, the status of the downloads will be
|
||||
"Waiting"). By default it is configured to allow up to 34 searches every 220 seconds.
|
||||
The default values were determined through experimentation, so they may be incorrect.
|
||||
The server may ban users for 30 minutes if too many searches are performed within a short
|
||||
timespan. sldl has a search limiter which can be adjusted with `--searches-per-time`
|
||||
and `--searches-renew-time` (when the limit is reached, the status of the downloads will be
|
||||
'Waiting'). By default it is configured to allow up to 34 searches every 220 seconds.
|
||||
The default values were determined through experimentation, so they may be incorrect.
|
||||
|
||||
### Speeding things up
|
||||
The following options will make it go faster, but may decrease search result quality or cause
|
||||
instability:
|
||||
- --fast-search skips waiting until the search completes and downloads as soon as a file
|
||||
matching the preferred conditions is found
|
||||
- --concurrent-downloads - set it to 4 or more
|
||||
- --max-stale-time is set to 50 seconds by default, so it will wait a long time before giving
|
||||
up on a file
|
||||
- --searches-per-time - increase at the risk of bans
|
||||
- --album-parallel-search - enables parallel searching for album entries
|
||||
The following options will make it go faster, but may decrease search result quality or cause
|
||||
instability:
|
||||
- `--fast-search` skips waiting until the search completes and downloads as soon as a file
|
||||
matching the preferred conditions is found
|
||||
- `--concurrent-downloads` - set it to 4 or more
|
||||
- `--max-stale-time` is set to 50 seconds by default, sldl will wait a long time before giving
|
||||
up on a file
|
||||
- `--searches-per-time` - increase at the risk of bans, see above
|
||||
- `--album-parallel-search` - enables parallel searching for album entries
|
||||
|
||||
## File conditions
|
||||
|
||||
Files not satisfying the required conditions will not be downloaded. Files satisfying pref-
|
||||
conditions will be preferred; setting --pref-format "flac,wav" will make it download lossless
|
||||
files if available, and only download lossy files if there's nothing else.
|
||||
Files not satisfying the required conditions will be ignored. Files satisfying pref-conditions
|
||||
will be preferred: With `--pref-format flac,wav` sldl will try to download lossless files if
|
||||
available, but still accept lossy files.
|
||||
|
||||
There are no default required conditions. The default preferred conditions are:
|
||||
```
|
||||
|
@ -371,36 +368,32 @@ pref-strict-album = true
|
|||
pref-accept-no-length = false
|
||||
```
|
||||
sldl will therefore prefer mp3 files with bitrate between 200 and 2500 kbps, and whose length
|
||||
differs from the supplied length by no more than 3 seconds. It will also prefer files whose
|
||||
paths contain the supplied title and album (ignoring case, and bounded by boundary characters)
|
||||
and which have non-null length. Changing the last three preferred conditions is not recommended.
|
||||
Note that files satisfying a subset of the preferred conditions will still be preferred over files
|
||||
that don't satisfy any condition, but some conditions have precedence over others. For instance,
|
||||
a file that only satisfies strict-title (if enabled) will always be preferred over a file that
|
||||
only satisfies the format condition. Run with --print "results-full" to reveal the sorting logic.
|
||||
differs from the supplied length by no more than 3 seconds. Additionally, it will prefer files
|
||||
whose paths contain the supplied title and album and which have non-null length. Changing the
|
||||
last three preferred conditions is not recommended.
|
||||
|
||||
Conditions can also be supplied as a semicolon-delimited string with --cond and --pref, e.g
|
||||
`--cond "br >= 320; format = mp3,ogg; sr < 96000"`.
|
||||
Note that files satisfying only a subset of the conditions will be preferred over files that don't
|
||||
satisfy any condition. Run a search with `--print results-full` to reveal the sorting logic.
|
||||
|
||||
Conditions can also be supplied as a semicolon-delimited string with `--cond` and `--pref`, e.g
|
||||
`--cond "br>=320; format=mp3,ogg; sr<96000"`.
|
||||
|
||||
### Filtering irrelevant results
|
||||
The options --strict-title, --strict-artist and --strict-album will filter any file that
|
||||
does not contain the title/artist/album in the filename (ignoring case, bounded by boundary
|
||||
chars).
|
||||
Another way to prevent false downloads is to set --length-tol to 3 or less to make it ignore
|
||||
any songs that differ from the input by more than 3 seconds. However, all 4 options are already
|
||||
enabled as 'preferred' conditions by default, meaning that such files will only be downloaded
|
||||
as a last resort anyways. Hence it is only recommended to enable them if you need to minimize
|
||||
false downloads as much as possible, or for special cases like tracks or albums whose name
|
||||
is just one or a two characters.
|
||||
The options `--strict-title`, `--strict-artist` and `--strict-album` will filter any file that
|
||||
does not contain the title/artist/album in the path (ignoring case, bounded by boundary chars).
|
||||
Another way to prevent false downloads is to set `--length-tol` to 3 or less to make it ignore
|
||||
any songs that differ from the input by more than 3 seconds. However, all 4 options are already
|
||||
enabled as 'preferred' conditions by default. Hence it is only recommended to enable them for
|
||||
special cases, like albums whose name is just one or two characters.
|
||||
|
||||
### Important note
|
||||
Some info may be unavailable depending on the client used by the peer. For example, the standard
|
||||
Soulseek client does not share the file bitrate. If (e.g) --min-bitrate is set, then sldl will
|
||||
still accept any file with unknown bitrate. You can configure it to reject all files where one
|
||||
or more of the checked properties is null (unknown) by enabling --strict-conditions.
|
||||
As a consequence, if --min-bitrate is also set then any files shared by users with the default
|
||||
client will be ignored. Also note that the default preferred conditions will already affect
|
||||
ranking with this option due to the bitrate and samplerate checks.
|
||||
Some info may be unavailable depending on the client used by the peer. If (e.g) `--min-bitrate`
|
||||
is set, then sldl will still accept any file with unknown bitrate. To reject all files where one
|
||||
or more of the checked properties is null (unknown), enable `--strict-conditions`.
|
||||
As a consequence, if `--min-bitrate` is also set then any files shared by users with the default
|
||||
client will be ignored, since the default client does not broadcast the bitrate. Also note that
|
||||
the default preferred conditions will already affect ranking with this option due to the bitrate
|
||||
and samplerate checks.
|
||||
|
||||
## Name format
|
||||
|
||||
|
@ -441,33 +434,33 @@ default-folder Default sldl folder name (usually the playlist n
|
|||
|
||||
## Configuration
|
||||
### Config Location
|
||||
sldl will look for a file named sldl.conf in the following locations:
|
||||
sldl will look for a file named sldl.conf in the following locations:
|
||||
```
|
||||
~/AppData/Roaming/sldl/sldl.conf
|
||||
~/.config/sldl/sldl.conf
|
||||
```
|
||||
as well as in the directory of the executable.
|
||||
as well as in the directory of the executable.
|
||||
|
||||
### Syntax
|
||||
Example config file:
|
||||
Example config file:
|
||||
```
|
||||
username = your-username
|
||||
password = your-password
|
||||
pref-format = flac
|
||||
fast-search = true
|
||||
```
|
||||
Lines starting with hashtags (#) will be ignored. Tildes in paths are expanded as the user
|
||||
directory. The path variable `{bindir}` stores the directory of the sldl binary.
|
||||
Lines starting with hashtags (#) will be ignored. Tildes in paths are expanded as the user
|
||||
directory. The path variable `{bindir}` stores the directory of the sldl binary.
|
||||
|
||||
### Configuration profiles
|
||||
Profiles are supported:
|
||||
Profiles are supported:
|
||||
```
|
||||
[lossless]
|
||||
pref-format = flac,wav
|
||||
```
|
||||
To activate the above profile, run --profile "lossless". To list all available profiles,
|
||||
run --profile "help".
|
||||
Profiles can be activated automatically based on a few simple conditions:
|
||||
To activate the above profile, run `--profile lossless`. To list all available profiles,
|
||||
run `--profile help`.
|
||||
Profiles can be activated automatically based on a few simple conditions:
|
||||
```
|
||||
[no-stale]
|
||||
profile-cond = interactive && download-mode == "album"
|
||||
|
@ -479,8 +472,8 @@ profile-cond = input-type == "youtube"
|
|||
path = ~/downloads/sldl-youtube
|
||||
# download to another location for youtube
|
||||
```
|
||||
The following operators are supported for use in profile-cond: &&, ||, ==, !=, !{bool}.
|
||||
The following variables are available:
|
||||
The following operators are supported for use in profile-cond: &&, ||, ==, !=, !{bool}.
|
||||
The following variables are available:
|
||||
```
|
||||
input-type ("youtube"|"csv"|"string"|"bandcamp"|"spotify")
|
||||
download-mode ("normal"|"aggregate"|"album"|"album-aggregate")
|
||||
|
@ -528,7 +521,7 @@ sldl "Some Album" -a -t
|
|||
```
|
||||
<br>
|
||||
|
||||
Download a specific song by name, preferring lossless:
|
||||
Download a specific song by name and length, preferring lossless:
|
||||
```
|
||||
sldl "MC MENTAL @ HIS BEST, length=242" --pref-format "flac,wav"
|
||||
```
|
||||
|
@ -572,7 +565,7 @@ input-type = list
|
|||
index-path = ~/sldl/wishlist-index.sldl
|
||||
album-parallel-search = true
|
||||
```
|
||||
This will create a global index file `wishlist-index.sldl` which will be scanned every time sldl is run to skip wishlist items that have already been downloaded. If you want to continue searching until a version satisfying the preferred conditions is downloaded, also add `skip-check-pref-cond = true` (note that this requires the files to remain in the same spot after being downloaded).
|
||||
This will create a global index file `wishlist-index.sldl` which will be scanned every time sldl is run to skip wishlist items that have already been downloaded. If you want to continue searching until a version satisfying the preferred conditions is found, also add `skip-check-pref-cond = true` (note that this requires the files to remain in the same spot after being downloaded).
|
||||
Finally, set up a cron job (or a scheduled task on windows) to periodically run sldl with the following option:
|
||||
```
|
||||
sldl --profile wishlist
|
||||
|
|
|
@ -155,7 +155,7 @@ public static class Help
|
|||
|
||||
Album Download
|
||||
-a, --album Album download mode: Download a folder
|
||||
-t, --interactive Interactive mode, allows to select the folder and images
|
||||
-t, --interactive Interactively select folders. See --help shortcuts.
|
||||
--album-track-count <num> Specify the exact number of tracks in the album. Add a + or
|
||||
- for inequalities, e.g '5+' for five or more tracks.
|
||||
--album-art <option> Retrieve additional images after downloading the album:
|
||||
|
@ -197,29 +197,26 @@ public static class Help
|
|||
const string inputHelp = @"
|
||||
Input types
|
||||
|
||||
The input type is usually determined automatically. To force a specific input type, set
|
||||
--input-type [spotify|youtube|csv|string|bandcamp|list]. The following input types are available:
|
||||
The input type is usually determined automatically, however it's possible to manually set it
|
||||
with `--input-type`. The following input types are available:
|
||||
|
||||
CSV file
|
||||
Path to a local CSV file: Use a csv file containing track info of the songs to download.
|
||||
The names of the columns should be Artist, Title, Album, Length, although alternative names
|
||||
are usually detected as well. Only the title or album column is required, but extra info may
|
||||
improve search result ranking. Every row that does not have a title column text will be treated
|
||||
as an album download.
|
||||
Path to a local CSV file. Use a csv file containing track information to download a list of
|
||||
songs or albums. Only the title or album column is required, but extra info may improve search
|
||||
result ranking. If the columns have common names ('Artist', 'Title', 'Album', 'Length', etc)
|
||||
then it's not required to manually specify them. Rows that do not have any text in the title
|
||||
column will be treated as album downloads.
|
||||
|
||||
YouTube
|
||||
A playlist url: Download songs from a youtube playlist.
|
||||
The default method to retrieve playlists doesn't always return all videos, especially not
|
||||
the ones which are unavailable. To get all video titles, you can use the official API by
|
||||
providing a key with --youtube-key. Get it here https://console.cloud.google.com. Create a
|
||||
new project, click ""Enable Api"" and search for ""youtube data"", then follow the prompts.
|
||||
A YouTube playlist url. Download songs from a youtube playlist.
|
||||
The default method to retrieve playlists does not reliably return all videos. To get all
|
||||
video titles, you can use the official API by providing a key with `--youtube-key`. A key can
|
||||
be obtained at https://console.cloud.google.com. Create a new project, click 'Enable Api' and
|
||||
search for 'youtube data', then follow the prompts.
|
||||
|
||||
Spotify
|
||||
A playlist/album url or 'spotify-likes': Download a spotify playlist, album, or your
|
||||
liked songs. --spotify-id and --spotify-secret are required in addition when downloading
|
||||
a private playlist or liked music.
|
||||
The id and secret can be obtained at https://developer.spotify.com/dashboard/applications.
|
||||
Create an app and add http://localhost:48721/callback as a redirect url in its settings.
|
||||
A playlist/album url, or 'spotify-likes'. Download a spotify playlist, album, or your
|
||||
liked songs. Credentials are required when downloading a private playlist or liked music.
|
||||
|
||||
Using Credentials
|
||||
Create a Spotify application at https://developer.spotify.com/dashboard/applications with a
|
||||
|
@ -242,42 +239,37 @@ public static class Help
|
|||
access every time it is run (and can be used without including spotify-token).
|
||||
|
||||
Bandcamp
|
||||
A bandcamp url: Download a single track, an album, or an artist's entire discography.
|
||||
Extracts the artist name, album name and sets --album-track-count=""n+"", where n is the
|
||||
number of visible tracks on the bandcamp page.
|
||||
A bandcamp track, album, or artist url. Download a single track, an album, or an artist's
|
||||
entire discography.
|
||||
|
||||
Search string
|
||||
Name of the track, album, or artist to search for: Can either be any typical search string
|
||||
(like what you would enter into the soulseek search bar), or a comma-separated list of
|
||||
properties like 'title=Song Name, artist=Artist Name, length=215'.
|
||||
Name of the track, album, or artist to search for. The input can either be an arbitrary
|
||||
search string (like what you would type in the soulseek search bar), or a comma-separated
|
||||
list of properties of the form `title=Song Name, artist=Artist Name, length=215`.
|
||||
|
||||
The following properties are accepted: title, artist, album, length (in seconds),
|
||||
artist-maybe-wrong, album-track-count.
|
||||
|
||||
Example inputs and their interpretations:
|
||||
Input String | Artist | Title | Album | Length
|
||||
---------------------------------------------------------------------------------
|
||||
'Foo Bar' (without any hyphens) | | Foo Bar | |
|
||||
'Foo - Bar' | Foo | Bar | |
|
||||
'Foo - Bar' (with --album enabled) | Foo | | Bar |
|
||||
'Artist - Title, length=42' | Artist | Title | | 42
|
||||
'artist=AR, title=T, album=AL' | AR | T | AL |
|
||||
Example inputs:
|
||||
| Input String | Artist | Title | Album | Length |
|
||||
|-----------------------------------------|----------|----------|----------|--------|
|
||||
| Foo Bar (without hyphens) | | Foo Bar | | |
|
||||
| Foo - Bar | Foo | Bar | | |
|
||||
| Foo - Bar (with --album) | Foo | | Bar | |
|
||||
| Artist - Title, length=42 | Artist | Title | | 42 |
|
||||
| artist=AR, title=T, album=AL | AR | T | AL | |
|
||||
|
||||
List
|
||||
A path to a text file where each line has the following form:
|
||||
List input must be manually activated with `--input-type=list`. The input is a path to a text
|
||||
file containing lines of the following form:
|
||||
|
||||
""some input"" ""conditions"" ""preferred conditions""
|
||||
# input conditions pref. conditions
|
||||
artist=Artist,album=Album format=mp3;br>128 ""br >= 320""
|
||||
|
||||
for example:
|
||||
|
||||
""artist=Artist, album=Album"" ""format=mp3; br > 128"" ""br >= 320""
|
||||
|
||||
Where ""some input"" is any of the above input types. The quotes can be omitted if the field
|
||||
contains no spaces. The condition fields are added on top of the
|
||||
configured conditions and can also be omitted. List input must be manually activated with
|
||||
--input-type=list.
|
||||
It also accepts a shorthand for album downloads: a:""Artist - Album"". Note that the a: must
|
||||
appear outside the quotes.
|
||||
The inputs can be any of the above input types. The conditions are added on top of the
|
||||
configured conditions and can be omitted.
|
||||
For album downloads, the above example can be written briefly as `a:""Artist - Album""` (note
|
||||
that `a:` must appear outside the quotes).
|
||||
";
|
||||
|
||||
const string downloadModesHelp = @"
|
||||
|
@ -287,23 +279,21 @@ public static class Help
|
|||
The default. Downloads a single file for every input entry.
|
||||
|
||||
Album
|
||||
sldl will search for the album and download an entire folder including non-audio files.
|
||||
Activated when the input is a link to a spotify or bandcamp album, when the input string
|
||||
or csv row has no track title, or when -a/--album is enabled.
|
||||
sldl will search for the album and download an entire folder including non-audio
|
||||
files. Activated when the input is a link to a spotify or bandcamp album, when the input
|
||||
string or csv row has no track title, or when `-a/--album` is enabled.
|
||||
|
||||
Aggregate
|
||||
With -g/--aggregate, sldl performs an ordinary search for the input then attempts to
|
||||
group the results into distinct songs and download one of each kind, starting with the one
|
||||
which is shared by the most users.
|
||||
Note that --min-shares-aggregate is 2 by default, which means that songs shared by only
|
||||
one user will be ignored.
|
||||
With `-g/--aggregate`, sldl performs an ordinary search for the input, then attempts to
|
||||
group the results into distinct songs and download one of each, starting with the one shared
|
||||
by the most users. Note that `--min-shares-aggregate` is 2 by default, meaning that songs
|
||||
shared by only one user will be ignored.
|
||||
|
||||
Album Aggregate
|
||||
Activated when both --album and --aggregate are enabled. sldl will group shares and download
|
||||
one of each distinct album, starting with the one shared by the most users. It's
|
||||
recommended to pair this with --interactive.
|
||||
Note that --min-shares-aggregate is 2 by default, which means that albums shared by only
|
||||
one user will be ignored.
|
||||
Activated when both `--album` and `--aggregate` are enabled. sldl will group shares and
|
||||
download one of each distinct album, starting with the one shared by the most users. It is
|
||||
recommended to pair this with `--interactive`. Note that `--min-shares-aggregate` is 2 by
|
||||
default, meaning that albums shared by only one user will be ignored.
|
||||
";
|
||||
|
||||
const string searchHelp = @"
|
||||
|
@ -318,32 +308,31 @@ public static class Help
|
|||
Otherwise, search for 'Artist Album'
|
||||
|
||||
Soulseek's rate limits
|
||||
The server will ban you for 30 minutes if too many searches are performed within a short
|
||||
timespan. The program has a search limiter which can be adjusted with --searches-per-time
|
||||
and --searches-renew-time (when the limit is reached, the status of the downloads will be
|
||||
""Waiting""). By default it is configured to allow up to 34 searches every 220 seconds.
|
||||
The server may ban users for 30 minutes if too many searches are performed within a short
|
||||
timespan. sldl has a search limiter which can be adjusted with `--searches-per-time`
|
||||
and `--searches-renew-time` (when the limit is reached, the status of the downloads will be
|
||||
'Waiting'). By default it is configured to allow up to 34 searches every 220 seconds.
|
||||
The default values were determined through experimentation, so they may be incorrect.
|
||||
|
||||
Speeding things up
|
||||
The following options will make it go faster, but may decrease search result quality or cause
|
||||
instability:
|
||||
|
||||
--fast-search skips waiting until the search completes and downloads as soon as a file
|
||||
matching the preferred conditions is found
|
||||
--concurrent-downloads - set it to 4 or more
|
||||
--max-stale-time is set to 50 seconds by default, so it will wait a long time before giving
|
||||
up on a file
|
||||
--searches-per-time - increase at the risk of bans
|
||||
--album-parallel-search - enables parallel searching for album entries
|
||||
- `--fast-search` skips waiting until the search completes and downloads as soon as a file
|
||||
matching the preferred conditions is found
|
||||
- `--concurrent-downloads` - set it to 4 or more
|
||||
- `--max-stale-time` is set to 50 seconds by default, sldl will wait a long time before giving
|
||||
up on a file
|
||||
- `--searches-per-time` - increase at the risk of bans, see above
|
||||
- `--album-parallel-search` - enables parallel searching for album entries
|
||||
";
|
||||
|
||||
const string fileConditionsHelp = @"
|
||||
File conditions
|
||||
|
||||
Files not satisfying the required conditions will not be downloaded. Files satisfying pref-
|
||||
conditions will be preferred; setting --pref-format ""flac,wav"" will make it download lossless
|
||||
files if available, and only download lossy files if there's nothing else.
|
||||
|
||||
Files not satisfying the required conditions will be ignored. Files satisfying pref-conditions
|
||||
will be preferred: With `--pref-format flac,wav` sldl will try to download lossless files if
|
||||
available, but still accept lossy files.
|
||||
|
||||
There are no default required conditions. The default preferred conditions are:
|
||||
|
||||
pref-format = mp3
|
||||
|
@ -356,36 +345,32 @@ public static class Help
|
|||
pref-accept-no-length = false
|
||||
|
||||
sldl will therefore prefer mp3 files with bitrate between 200 and 2500 kbps, and whose length
|
||||
differs from the supplied length by no more than 3 seconds. It will also prefer files whose
|
||||
paths contain the supplied title and album (ignoring case, and bounded by boundary characters)
|
||||
and which have non-null length. Changing the last three preferred conditions is not recommended.
|
||||
Note that files satisfying a subset of the preferred conditions will still be preferred over files
|
||||
that don't satisfy any condition, but some conditions have precedence over others. For instance,
|
||||
a file that only satisfies strict-title (if enabled) will always be preferred over a file that
|
||||
only satisfies the format condition. Run with --print ""results-full"" to reveal the sorting logic.
|
||||
differs from the supplied length by no more than 3 seconds. Additionally, it will prefer files
|
||||
whose paths contain the supplied title and album and which have non-null length. Changing the
|
||||
last three preferred conditions is not recommended.
|
||||
|
||||
Conditions can also be supplied as a semicolon-delimited string with --cond and --pref, e.g
|
||||
--cond ""br >= 320; format = mp3,ogg; sr < 96000"".
|
||||
Note that files satisfying only a subset of the conditions will be preferred over files that don't
|
||||
satisfy any condition. Run a search with `--print results-full` to reveal the sorting logic.
|
||||
|
||||
Conditions can also be supplied as a semicolon-delimited string with `--cond` and `--pref`, e.g
|
||||
`--cond ""br>=320; format=mp3,ogg; sr<96000""`.
|
||||
|
||||
Filtering irrelevant results
|
||||
The options --strict-title, --strict-artist and --strict-album will filter any file that
|
||||
does not contain the title/artist/album in the filename (ignoring case, bounded by boundary
|
||||
chars).
|
||||
Another way to prevent false downloads is to set --length-tol to 3 or less to make it ignore
|
||||
The options `--strict-title`, `--strict-artist` and `--strict-album` will filter any file that
|
||||
does not contain the title/artist/album in the path (ignoring case, bounded by boundary chars).
|
||||
Another way to prevent false downloads is to set `--length-tol` to 3 or less to make it ignore
|
||||
any songs that differ from the input by more than 3 seconds. However, all 4 options are already
|
||||
enabled as 'preferred' conditions by default, meaning that such files will only be downloaded
|
||||
as a last resort anyways. Hence it is only recommended to enable them if you need to minimize
|
||||
false downloads as much as possible, or for special cases like tracks or albums whose name
|
||||
is just one or a two characters.
|
||||
enabled as 'preferred' conditions by default. Hence it is only recommended to enable them for
|
||||
special cases, like albums whose name is just one or two characters.
|
||||
|
||||
Important note
|
||||
Some info may be unavailable depending on the client used by the peer. For example, the standard
|
||||
Soulseek client does not share the file bitrate. If (e.g) --min-bitrate is set, then sldl will
|
||||
still accept any file with unknown bitrate. You can configure it to reject all files where one
|
||||
or more of the checked properties is null (unknown) by enabling --strict-conditions.
|
||||
As a consequence, if --min-bitrate is also set then any files shared by users with the default
|
||||
client will be ignored. Also note that the default preferred conditions will already affect
|
||||
ranking with this option due to the bitrate and samplerate checks.
|
||||
Some info may be unavailable depending on the client used by the peer. If (e.g) `--min-bitrate`
|
||||
is set, then sldl will still accept any file with unknown bitrate. To reject all files where one
|
||||
or more of the checked properties is null (unknown), enable `--strict-conditions`.
|
||||
As a consequence, if `--min-bitrate` is also set then any files shared by users with the default
|
||||
client will be ignored, since the default client does not broadcast the bitrate. Also note that
|
||||
the default preferred conditions will already affect ranking with this option due to the bitrate
|
||||
and samplerate checks.
|
||||
";
|
||||
|
||||
const string nameFormatHelp = @"
|
||||
|
|
Loading…
Reference in a new issue