Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v4.2.1 #1896

Merged
merged 28 commits into from
Sep 1, 2023
Merged

v4.2.1 #1896

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2921e96
Playlist, artist and album download from web app. (#1865)
oscarvx00 Jul 13, 2023
249cce2
dropped support for python 3.7
xnetcat Aug 18, 2023
be2d135
Update poetry.lock
xnetcat Aug 25, 2023
1525fea
Update test_matching.py
xnetcat Aug 25, 2023
589f643
updating workflows
xnetcat Aug 25, 2023
8949b9a
check if track is a song when downloading playlists
xnetcat Aug 25, 2023
f879f63
bump version to v4.2.1
xnetcat Aug 25, 2023
992d30b
Random changes and fixes. (#1897)
Piripe Sep 1, 2023
b1a48de
fixed bandcamp
xnetcat Sep 1, 2023
2a615ff
black/isort code
xnetcat Sep 1, 2023
0a692c7
use downloader settings when parsing query
xnetcat Sep 1, 2023
920442e
added option to save errors
xnetcat Sep 1, 2023
5e34b21
added more checks for sync file
xnetcat Sep 1, 2023
8a8891e
respect detect-formats option when using m3u option
xnetcat Sep 1, 2023
ce2bce6
added ability to print to stdout when using save
xnetcat Sep 1, 2023
f9f110f
all-user-followed-artists
xnetcat Sep 1, 2023
eeb935b
fixing tests
xnetcat Sep 1, 2023
a4c6e8d
fixed bandcamp provider for python 3.8
xnetcat Sep 1, 2023
f8d7490
updated packages
xnetcat Sep 1, 2023
4334396
cleaned up pyproject.toml
xnetcat Sep 1, 2023
a2cd337
use master branch for web ui in production
xnetcat Sep 1, 2023
c9466b0
removed debug print
xnetcat Sep 1, 2023
8afa3dc
added information about file location for web ui
xnetcat Sep 1, 2023
db11f71
fixed search term matching
xnetcat Sep 1, 2023
828d2c3
updated documentation
xnetcat Sep 1, 2023
06f1e9e
fixed tests
xnetcat Sep 1, 2023
b39572b
black/isort
xnetcat Sep 1, 2023
b536b8f
update cassettes
xnetcat Sep 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/docker-hub-image-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ jobs:

steps:
- name: Checkout dev branch for nightly build
uses: actions/checkout@v2
uses: actions/checkout@v3
if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && !inputs.wants_production_build) }}
with:
ref: "refs/heads/dev"

- name: Checkout main branch for production build
uses: actions/checkout@v2
uses: actions/checkout@v3
if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && inputs.wants_production_build) }}
with:
ref: "refs/heads/master"
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
Expand Down Expand Up @@ -86,13 +86,14 @@ jobs:
runs-on: ubuntu-latest
name: Build on ubuntu-latest aarch64
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: uraimo/run-on-arch-action@v2
name: Run commands
id: runcmd
with:
arch: aarch64
distro: ubuntu_latest
githubToken: ${{ github.token }}
dockerRunArgs: |
--volume "${PWD}/:/spotdl"

Expand All @@ -102,10 +103,11 @@ jobs:
apt update
apt install python3 python3-pip -y
pip install poetry
cd /spotdl
poetry install

run: |
cd /spotdl
poetry install
poetry run python ./scripts/build.py
for file in dist/spotdl*; do cp "$file" "${file}-aarch64"; done

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
max-parallel: 4
matrix:
platform: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: [ "3.7", "3.10" ]
python-version: [ "3.8", "3.10" ]

steps:
- uses: actions/checkout@v3
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*.opus
*.spotdl
*.m3u
*.m3u8
*.ipynb
*.lrc
.spotdl-cache
Expand Down
61 changes: 36 additions & 25 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,8 +352,8 @@ Main options:
For album/playlist/artist searching, include 'album:', 'playlist:', 'artist:'
(ie. 'album:the album name' you can mix these options to get more accurate results).

To download liked songs use 'saved' as the query, or to download all user playlists
use 'all-user-playlists'.
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'

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,12 +362,14 @@ 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 @@ -387,42 +389,49 @@ 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/preload/sync
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 {force,skip,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. )
--restrict [{strict,ascii,none}]
--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. )
--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
--save-errors SAVE_ERRORS
Save errors (wrong songs, failed downloads etc) to a file
--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 @@ -438,15 +447,17 @@ 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
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)

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:
Expand Down
Loading
Loading