Skip to content

Commit c2b322c

Browse files
xnetcatbharat-nairTungliesMuhammadNizamaniAniketP04
authored
v4.2.2
Co-authored-by: kuba <[email protected]> Co-authored-by: Bharat Nair <[email protected]> Co-authored-by: Tunglies <[email protected]> Co-authored-by: Muhammad Ishaque Nizamani <[email protected]> Co-authored-by: Aniket Patil <[email protected]> Co-authored-by: Biresh Biswas <[email protected]> Co-authored-by: Ibukun Ekunwe <[email protected]> Co-authored-by: Ed <[email protected]> Co-authored-by: Edin O <[email protected]>
2 parents 4f5d9b6 + 7ff0af0 commit c2b322c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+14931
-7944
lines changed

.github/workflows/standard-checks.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
2727
- name: Check for docstring's
2828
run: |
29-
poetry run pylint --limit-inference-results 0 --disable all --enable missing-function-docstring missing-module-docstring missing-class-docstring empty-docstring ./spotdl
29+
poetry run pylint --limit-inference-results 0 --enable missing-function-docstring missing-module-docstring missing-class-docstring empty-docstring --disable=all ./spotdl
3030
3131
- name: Run Pylint check
3232
run: |

.github/workflows/tests.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- uses: actions/checkout@v3
1717

1818
- name: Install poetry
19-
run: pipx install poetry==1.3.2
19+
run: pipx install poetry
2020

2121
- name: Set up Python ${{ matrix.python-version }}
2222
uses: actions/setup-python@v4
@@ -27,6 +27,7 @@ jobs:
2727
- name: Install dependencies
2828
run: |
2929
poetry env use ${{ matrix.python-version }}
30+
pip install -U pip setuptools
3031
poetry install
3132
3233
- uses: FedericoCarboni/setup-ffmpeg@v2

.readthedocs.yaml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Required
2+
version: 2
3+
4+
build:
5+
os: ubuntu-22.04
6+
tools:
7+
python: "3.11"
8+
9+
mkdocs:
10+
configuration: mkdocs.yml
11+
12+
python:
13+
install:
14+
- requirements: scripts/docs/requirements.txt

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ Check the [Audio Formats](docs/usage.md#audio-formats-and-quality) page for more
149149
Interested in contributing? Check out our [CONTRIBUTING.md](docs/CONTRIBUTING.md) to find
150150
resources around contributing along with a guide on how to set up a development environment.
151151

152+
#### Join our amazing community as a code contributor, and help accelerate
153+
<br><br>
154+
<a href="https://github.com/spotDL/spotify-downloader/graphs/contributors">
155+
<img class="dark-light" src="https://contrib.rocks/image?repo=spotDL/spotify-downloader&anon=0&columns=25&max=100&r=true" />
156+
</a>
152157
## Donate
153158

154159
help support the development and maintenance of the software ❤️

docs/index.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ For a list of all **options** use ```spotdl -h```
109109
`spotdl save [query] --save-file {filename}.spotdl`
110110
111111
- `web`: Starts a web interface instead of using the command line. However, it has limited features and only supports downloading single songs.
112+
- Usage:
113+
`spotdl web`
112114
113115
- `url`: Get direct download link for each song from the query.
114116
- Usage:
115-
`spotdl web [query]`
117+
`spotdl url [query]`
116118
117119
- `sync`: Updates directories. Compares the directory with the current state of the playlist. Newly added songs will be downloaded and removed songs will be deleted. No other songs will be downloaded and no other files will be deleted.
118120

docs/installation.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ spotDL is a free and open source tool that downloads your Spotify playlists & mu
88

99
> This is our recommended installation method.
1010
11-
If you are on Windows, Install Visual C++ Redistributible (link below) and then proceed to
11+
If you are on Windows, Install Visual C++ Redistributable (link below) and then proceed to
1212
install Python & FFmpeg
1313

1414
### Prerequisites to spotDL
@@ -46,7 +46,7 @@ pip install spotdl
4646
If using FFmpeg only for spotDL, you can install FFmpeg to your local directory.
4747
`spotdl --download-ffmpeg` will download FFmpeg to your spotDL installation directory.
4848

49-
We reccomend the above option, but if you want to install FFmpeg system-wide,
49+
We recommend the above option, but if you want to install FFmpeg system-wide,
5050

5151
- [Windows Tutorial](https://windowsloop.com/install-ffmpeg-windows-10/)
5252
- OSX - `brew install ffmpeg`
@@ -60,7 +60,7 @@ If you require further help, ask in our [Discord Server](https://discord.gg/xCa2
6060

6161
### Download the executable
6262

63-
You can download the latest version from from the
63+
You can download the latest version from the
6464
[Releases Tab](https://github.com/spotDL/spotify-downloader/releases)
6565

6666
### Running Web UI

docs/usage.md

+43-33
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@
9797
spotdl download all-user-playlists --user-auth
9898
```
9999

100+
??? info "All user saved albums"
101+
To download all user saved albums run
102+
> `--user-auth` is required
103+
104+
```bash
105+
spotdl download all-user-saved-albums --user-auth
106+
```
107+
100108
You can queue up multiple download tasks by separating the arguments with spaces
101109

102110
```bash
@@ -127,12 +135,16 @@ YouTube Music Premium users can use their account to download songs with a highe
127135

128136
To download music in higher quality follow the steps below:
129137

130-
1. Get cookies.txt for https://music.youtube.com.
138+
1. Change quality in YouTube Music settings to highest possible.
139+
140+
2. Get cookies.txt for https://music.youtube.com.
131141
> You can use [Get cookies.txt extension](https://chrome.google.com/webstore/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc) or [cookies.txt](https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/) for this. More info [here](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp)
132142
133-
2. Add `--cookie-file cookies.txt` option to your spotDL command line options
143+
3. Add `--cookie-file cookies.txt` option to your spotDL command line options
134144
> Replace cookies.txt with the actual name of your cookies file
135145
146+
4. Change the audio format to either **M4A** or **OPUS** to get the raw HQ file
147+
136148
> **Note**
137149
> To get the best audio possible you should use **M4A**/**OPUS** audio format
138150
> with `--bitrate disable`
@@ -353,7 +365,7 @@ Main options:
353365
(ie. 'album:the album name' you can mix these options to get more accurate results).
354366
355367
To download liked songs use 'saved' as the query, to download all user playlists
356-
use 'all-user-playlists, to download all songs from all followed artists use 'all-user-followed-artists'
368+
use 'all-user-playlists, to download all songs from all followed artists use 'all-user-followed-artists', to download all user saved albums use 'all-user-saved-albums'
357369
358370
For manual audio matching, you can use the format 'YouTubeURL|SpotifyURL'
359371
You can only use album/playlist/tracks urls when downloading/matching youtube urls.
@@ -362,14 +374,12 @@ Main options:
362374
--audio [{youtube,youtube-music,slider-kz,soundcloud,bandcamp,piped} ...]
363375
The audio provider to use. You can provide more than one for fallback.
364376
--lyrics [{genius,musixmatch,azlyrics,synced} ...]
365-
The lyrics provider to use. You can provide more than one for fallback. Synced lyrics might not work correctly with
366-
some music players. For such cases it's better to use `--generate-lrc` option.
367-
--config Use the config file to download songs. It's located under C:\Users\user\.spotdl\config.json or
368-
~/.spotdl/config.json under linux
377+
The lyrics provider to use. You can provide more than one for fallback. Synced lyrics might not work correctly with some music players. For such cases it's better to use `--generate-lrc`
378+
option.
379+
--config Use the config file to download songs. It's located under C:\Users\user\.spotdl\config.json or ~/.spotdl/config.json under linux
369380
--search-query SEARCH_QUERY
370-
The search query to use, available variables: {title}, {artists}, {artist}, {album}, {album-artist}, {genre},
371-
{disc-number}, {disc-count}, {duration}, {year}, {original-date}, {track-number}, {tracks-count}, {isrc}, {track-
372-
id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
381+
The search query to use, available variables: {title}, {artists}, {artist}, {album}, {album-artist}, {genre}, {disc-number}, {disc-count}, {duration}, {year}, {original-date}, {track-number},
382+
{tracks-count}, {isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
373383
--dont-filter-results
374384
Disable filtering results.
375385
--only-verified-results
@@ -389,38 +399,34 @@ Spotify options:
389399
--max-retries MAX_RETRIES
390400
The maximum number of retries to perform when getting metadata.
391401
--headless Run in headless mode.
392-
--use-cache-file Use the cache file to get metadata. It's located under C:\Users\user\.spotdl\.spotify_cache or
393-
~/.spotdl/.spotify_cache under linux. It only caches tracks and gets updated whenever spotDL gets metadata from
394-
Spotify. (It may provide outdated metadata use with caution)
402+
--use-cache-file Use the cache file to get metadata. It's located under C:\Users\user\.spotdl\.spotify_cache or ~/.spotdl/.spotify_cache under linux. It only caches tracks and gets updated whenever spotDL gets
403+
metadata from Spotify. (It may provide outdated metadata use with caution)
395404
396405
FFmpeg options:
397406
--ffmpeg FFMPEG The ffmpeg executable to use.
398407
--threads THREADS The number of threads to use when downloading songs.
399408
--bitrate {auto,disable,8k,16k,24k,32k,40k,48k,64k,80k,96k,112k,128k,160k,192k,224k,256k,320k,0,1,2,3,4,5,6,7,8,9}
400-
The constant/variable bitrate to use for the output file. Values from 0 to 9 are variable bitrates. Auto will use
401-
the bitrate of the original file. Disable will disable the bitrate option. (In case of m4a and opus files, auto and
402-
disable will skip the conversion)
409+
The constant/variable bitrate to use for the output file. Values from 0 to 9 are variable bitrates. Auto will use the bitrate of the original file. Disable will disable the bitrate option. (In
410+
case of m4a and opus files, auto and disable will skip the conversion)
403411
--ffmpeg-args FFMPEG_ARGS
404412
Additional ffmpeg arguments passed as a string.
405413
406414
Output options:
407415
--format {mp3,flac,ogg,opus,m4a,wav}
408416
The format to download the song in.
409417
--save-file SAVE_FILE
410-
The file to save/load the songs data from/to. It has to end with .spotdl. If combined with the download operation,
411-
it will save the songs data to the file. Required for save/sync (use - to print to stdout when using save).
418+
The file to save/load the songs data from/to. It has to end with .spotdl. If combined with the download operation, it will save the songs data to the file. Required for save/sync (use - to
419+
print to stdout when using save).
412420
--preload Preload the download url to speed up the download process.
413-
--output OUTPUT Specify the downloaded file name format, available variables: {title}, {artists}, {artist}, {album}, {album-
414-
artist}, {genre}, {disc-number}, {disc-count}, {duration}, {year}, {original-date}, {track-number}, {tracks-count},
415-
{isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
416-
--m3u [M3U] Name of the m3u file to save the songs to. Defaults to {list[0]}.m3u8 If you want to generate a m3u for each list
417-
in the query use {list}, If you want to generate a m3u file based on the first list in the query use {list[0]}, (0
418-
is the first list in the query, 1 is the second, etc. songs don't count towards the list number)
421+
--output OUTPUT Specify the downloaded file name format, available variables: {title}, {artists}, {artist}, {album}, {album-artist}, {genre}, {disc-number}, {disc-count}, {duration}, {year}, {original-date},
422+
{track-number}, {tracks-count}, {isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
423+
--m3u [M3U] Name of the m3u file to save the songs to. Defaults to {list[0]}.m3u8 If you want to generate a m3u for each list in the query use {list}, If you want to generate a m3u file based on the first
424+
list in the query use {list[0]}, (0 is the first list in the query, 1 is the second, etc. songs don't count towards the list number)
419425
--cookie-file COOKIE_FILE
420426
Path to cookies file.
421427
--overwrite {skip,force,metadata}
422-
How to handle existing/duplicate files. (When combined with --scan-for-songs force will remove all duplicates, and
423-
metadata will only apply metadata to the latest song and will remove the rest. )
428+
How to handle existing/duplicate files. (When combined with --scan-for-songs force will remove all duplicates, and metadata will only apply metadata to the latest song and will remove the
429+
rest. )
424430
--restrict [{ascii,strict,none}]
425431
Restrict filenames to a sanitized set of characters for better compatibility
426432
--print-errors Print errors (wrong songs, failed downloads etc) on exit, useful for long playlist
@@ -429,9 +435,8 @@ Output options:
429435
--sponsor-block Use the sponsor block to download songs from yt/ytm.
430436
--archive ARCHIVE Specify the file name for an archive of already downloaded songs
431437
--playlist-numbering Sets each track in a playlist to have the playlist's name as its album, and album art as the playlist's icon
432-
--scan-for-songs Scan the output directory for existing files. This option should be combined with the --overwrite option to control
433-
how existing files are handled. (Output directory is the last directory that is not a template variable in the
434-
output template)
438+
--scan-for-songs Scan the output directory for existing files. This option should be combined with the --overwrite option to control how existing files are handled. (Output directory is the last directory that
439+
is not a template variable in the output template)
435440
--fetch-albums Fetch all albums from songs in query
436441
--id3-separator ID3_SEPARATOR
437442
Change the separator used in the id3 tags. Only supported for mp3 files.
@@ -447,23 +452,28 @@ Output options:
447452
--yt-dlp-args YT_DLP_ARGS
448453
Arguments to pass to yt-dlp
449454
--detect-formats [{mp3,flac,ogg,opus,m4a,wav} ...]
450-
Detect already downloaded songs with file format different from the --format option (When combined with --m3u
451-
option, only first detected format will be added to m3u file)
455+
Detect already downloaded songs with file format different from the --format option (When combined with --m3u option, only first detected format will be added to m3u file)
456+
--redownload to redownload the local song in diffrent format using --format for meta operation
457+
--ignore-albums [IGNORE_ALBUMS ...]
458+
ignores the song of the given albums
459+
--skip-explicit Skip explicit songs
460+
--proxy PROXY Http(s) proxy server for download song. Example: http://host:port
452461
453462
Web options:
454463
--host HOST The host to use for the web server.
455464
--port PORT The port to run the web server on.
456465
--keep-alive Keep the web server alive even when no clients are connected.
457466
--allowed-origins [ALLOWED_ORIGINS ...]
458467
The allowed origins for the web server.
459-
--web-use-output-dir Use the output directory instead of the session directory for downloads. (This might cause issues if you have
460-
multiple users using the web-ui at the same time)
468+
--web-use-output-dir Use the output directory instead of the session directory for downloads. (This might cause issues if you have multiple users using the web-ui at the same time)
461469
--keep-sessions Keep the session directory after the web server is closed.
462470
463471
Misc options:
464472
--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,MATCH,DEBUG,NOTSET}
465473
Select log level.
466474
--simple-tui Use a simple tui.
475+
--log-format LOG_FORMAT
476+
Custom logging format to use. More info: https://docs.python.org/3/library/logging.html#logrecord-attributes
467477
468478
Other options:
469479
--download-ffmpeg Download ffmpeg to spotdl directory.

0 commit comments

Comments
 (0)