Skip to content

Commit

Permalink
v4.2.2
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
9 people authored Nov 18, 2023
2 parents 4f5d9b6 + 7ff0af0 commit c2b322c
Show file tree
Hide file tree
Showing 43 changed files with 14,931 additions and 7,944 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/standard-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- name: Check for docstring's
run: |
poetry run pylint --limit-inference-results 0 --disable all --enable missing-function-docstring missing-module-docstring missing-class-docstring empty-docstring ./spotdl
poetry run pylint --limit-inference-results 0 --enable missing-function-docstring missing-module-docstring missing-class-docstring empty-docstring --disable=all ./spotdl
- name: Run Pylint check
run: |
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v3

- name: Install poetry
run: pipx install poetry==1.3.2
run: pipx install poetry

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
Expand All @@ -27,6 +27,7 @@ jobs:
- name: Install dependencies
run: |
poetry env use ${{ matrix.python-version }}
pip install -U pip setuptools
poetry install
- uses: FedericoCarboni/setup-ffmpeg@v2
Expand Down
14 changes: 14 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Required
version: 2

build:
os: ubuntu-22.04
tools:
python: "3.11"

mkdocs:
configuration: mkdocs.yml

python:
install:
- requirements: scripts/docs/requirements.txt
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,11 @@ Check the [Audio Formats](docs/usage.md#audio-formats-and-quality) page for more
Interested in contributing? Check out our [CONTRIBUTING.md](docs/CONTRIBUTING.md) to find
resources around contributing along with a guide on how to set up a development environment.

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

help support the development and maintenance of the software ❤️
Expand Down
4 changes: 3 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,12 @@ For a list of all **options** use ```spotdl -h```
`spotdl save [query] --save-file {filename}.spotdl`
- `web`: Starts a web interface instead of using the command line. However, it has limited features and only supports downloading single songs.
- Usage:
`spotdl web`
- `url`: Get direct download link for each song from the query.
- Usage:
`spotdl web [query]`
`spotdl url [query]`
- `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.
Expand Down
6 changes: 3 additions & 3 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spotDL is a free and open source tool that downloads your Spotify playlists & mu

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

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

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

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

### Download the executable

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

### Running Web UI
Expand Down
76 changes: 43 additions & 33 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@
spotdl download all-user-playlists --user-auth
```

??? info "All user saved albums"
To download all user saved albums run
> `--user-auth` is required

```bash
spotdl download all-user-saved-albums --user-auth
```

You can queue up multiple download tasks by separating the arguments with spaces

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

To download music in higher quality follow the steps below:

1. Get cookies.txt for https://music.youtube.com.
1. Change quality in YouTube Music settings to highest possible.

2. Get cookies.txt for https://music.youtube.com.
> 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)
2. Add `--cookie-file cookies.txt` option to your spotDL command line options
3. Add `--cookie-file cookies.txt` option to your spotDL command line options
> Replace cookies.txt with the actual name of your cookies file
4. Change the audio format to either **M4A** or **OPUS** to get the raw HQ file

> **Note**
> To get the best audio possible you should use **M4A**/**OPUS** audio format
> with `--bitrate disable`
Expand Down Expand Up @@ -353,7 +365,7 @@ Main options:
(ie. 'album:the album name' you can mix these options to get more accurate results).
To download liked songs use 'saved' as the query, to download all user playlists
use 'all-user-playlists, to download all songs from all followed artists use 'all-user-followed-artists'
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'
For manual audio matching, you can use the format 'YouTubeURL|SpotifyURL'
You can only use album/playlist/tracks urls when downloading/matching youtube urls.
Expand All @@ -362,14 +374,12 @@ Main options:
--audio [{youtube,youtube-music,slider-kz,soundcloud,bandcamp,piped} ...]
The audio provider to use. You can provide more than one for fallback.
--lyrics [{genius,musixmatch,azlyrics,synced} ...]
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` option.
--config Use the config file to download songs. It's located under C:\Users\user\.spotdl\config.json or
~/.spotdl/config.json under linux
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`
option.
--config Use the config file to download songs. It's located under C:\Users\user\.spotdl\config.json or ~/.spotdl/config.json under linux
--search-query SEARCH_QUERY
The search query to use, available variables: {title}, {artists}, {artist}, {album}, {album-artist}, {genre},
{disc-number}, {disc-count}, {duration}, {year}, {original-date}, {track-number}, {tracks-count}, {isrc}, {track-
id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
The search query to use, available variables: {title}, {artists}, {artist}, {album}, {album-artist}, {genre}, {disc-number}, {disc-count}, {duration}, {year}, {original-date}, {track-number},
{tracks-count}, {isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
--dont-filter-results
Disable filtering results.
--only-verified-results
Expand All @@ -389,38 +399,34 @@ Spotify options:
--max-retries MAX_RETRIES
The maximum number of retries to perform when getting metadata.
--headless Run in headless mode.
--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 metadata from
Spotify. (It may provide outdated metadata use with caution)
--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
metadata from Spotify. (It may provide outdated metadata use with caution)
FFmpeg options:
--ffmpeg FFMPEG The ffmpeg executable to use.
--threads THREADS The number of threads to use when downloading songs.
--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}
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 case of m4a and opus files, auto and
disable will skip the conversion)
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
case of m4a and opus files, auto and disable will skip the conversion)
--ffmpeg-args FFMPEG_ARGS
Additional ffmpeg arguments passed as a string.
Output options:
--format {mp3,flac,ogg,opus,m4a,wav}
The format to download the song in.
--save-file SAVE_FILE
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 print to stdout when using save).
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
print to stdout when using save).
--preload Preload the download url to speed up the download process.
--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}, {track-number}, {tracks-count},
{isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
--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 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)
--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},
{track-number}, {tracks-count}, {isrc}, {track-id}, {publisher}, {list-length}, {list-position}, {list-name}, {output-ext}
--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
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)
--cookie-file COOKIE_FILE
Path to cookies file.
--overwrite {skip,force,metadata}
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 rest. )
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
rest. )
--restrict [{ascii,strict,none}]
Restrict filenames to a sanitized set of characters for better compatibility
--print-errors Print errors (wrong songs, failed downloads etc) on exit, useful for long playlist
Expand All @@ -429,9 +435,8 @@ Output options:
--sponsor-block Use the sponsor block to download songs from yt/ytm.
--archive ARCHIVE Specify the file name for an archive of already downloaded songs
--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
--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 is not a template variable in the
output template)
--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
is not a template variable in the output template)
--fetch-albums Fetch all albums from songs in query
--id3-separator ID3_SEPARATOR
Change the separator used in the id3 tags. Only supported for mp3 files.
Expand All @@ -447,23 +452,28 @@ Output options:
--yt-dlp-args YT_DLP_ARGS
Arguments to pass to yt-dlp
--detect-formats [{mp3,flac,ogg,opus,m4a,wav} ...]
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)
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)
--redownload to redownload the local song in diffrent format using --format for meta operation
--ignore-albums [IGNORE_ALBUMS ...]
ignores the song of the given albums
--skip-explicit Skip explicit songs
--proxy PROXY Http(s) proxy server for download song. Example: http://host:port
Web options:
--host HOST The host to use for the web server.
--port PORT The port to run the web server on.
--keep-alive Keep the web server alive even when no clients are connected.
--allowed-origins [ALLOWED_ORIGINS ...]
The allowed origins for the web server.
--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)
--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)
--keep-sessions Keep the session directory after the web server is closed.
Misc options:
--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,MATCH,DEBUG,NOTSET}
Select log level.
--simple-tui Use a simple tui.
--log-format LOG_FORMAT
Custom logging format to use. More info: https://docs.python.org/3/library/logging.html#logrecord-attributes
Other options:
--download-ffmpeg Download ffmpeg to spotdl directory.
Expand Down
Loading

0 comments on commit c2b322c

Please sign in to comment.