11 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
[2.0.0] -
Migrating from v1.2.6 to v2.0.0
It is highly recommended to remove your previous config.yml due to breaking changes
in v2.0.0 (marked as [Breaking] in the below sections), new options being added, and old
ones being removed. You may want to first backup your old configuration for reference.
You can then install spotdl v2.0.0 and remove your current configuration by running:
$ spotdl --remove-config
spotdl will automatically generate a new configuration file on the next run. You can then replace the appropriate fields in the newly generated configuration file by referring to your old configuration file.
All the below changes were made as a part of #690.
Added
-inow acceptsautomaticwhich would automatically select the best available stream irrespective of the format.- Added parameter
-q(--quality {best,worst}) to select best (default) or worst audio quality. - Added
-ne(--no-encode) to disable encoding. - Output to STDOUT with
-f -. - Read tracks from STDIN in
-sparameter. - Display a combined download & encode progress bar.
Changed
- [Breaking] Tracks are now downloaded in the current working directory (instead of Music directory) by default.
- [Breaking] Short for
--albumis now-ainstead of-b. - [Breaking] Short for
--all-albumsis now-aainstead of-ab. - Allow "&" character in filenames.
- [Breaking] Merge parameters
-ffand-fto-f(--output-file). - [Breaking] Do not prefix formats with a dot when specifying
-iand-oparameters Such as-o .mp3is now written as-o mp3. - Partial re-write and internal API refactor.
- Enhance debug log output readability.
- Internally adapt to latest changes made in Spotipy library.
- Switch to
logging+coloredlogsinstead oflogzero. Our loggers weren't being setup properly withlogzero. - Simplify checking for an already track. Previously it also analyzed metadata for the already downloaded track to determine whether to overwrite the already downloaded track, which caused unexpected behvaiours at times.
- Codebase is now more modular making it easier to use spotdl in python scripts.
Optimized
- Track download and encoding now happen parallely instead of sequentially making spotdl faster.
- Lyrics and albumart are now downloaded in the background while the track is being downloaded instead of in the end. This reduces additional delays if we are to download them while applying metadata.
--write-m3unow only scrapes YouTube for required metadata making it much faster. Previously, it was also required to parse it via an external YouTube parsing library which was slow.- Switch to PyTube from Pafy. PyTube is faster and relies only on scraping.
Removed
- [Breaking] Removed Avconv support. Only FFmpeg is supported now.
- [Breaking] Removed
--no-fallback-metadataparameter since not many people seem to find it useful. - [Breaking] Removed apparently misleading
--download-only-metadataparameter. - [Breaking] Removed ability to set YouTube API key since we now use PyTube instead of Pafy, and PyTube does not require an API key.
- [Breaking] As a side effect of above,
--music-videos-onlyis also removed as this feature worked only with YouTube API.
[1.2.6] (Hotfix Release) - 2020-03-02
Fixed
- Embed release date metadata only when available (follow up of #672) (@ritiek) (#674)
[1.2.5] - 2020-03-02
Fixed
- Skip crash when accessing YouTube-API-only fields in scrape mode (@ritiek) (#672)
Changed
- Changed FFMPEG args to convert to 48k quality audio instead of the current 44k audio. (@AvinashReddy3108) (#667)
[1.2.4] - 2020-01-10
Fixed
- Fixed a crash occuring when lyrics for a track are not yet released on Genius (@ritiek) (#654)
- Fixed a regression where a track would fail to download if it isn't found on Spotify (@ritiek) (#653)
[1.2.3] - 2019-12-20
Added
- Added
--no-remove-original-file(@NightMachinary) (#580) - Added leading Zeros in
track_numberfor correct sorting (@Dsujan) (#592) - Added
track_idkey for--file-formatparameter (@kadaliao) (#568)
Fixed
- Some tracks randomly fail to download with Pafy v0.5.5 (@ritiek) (#638)
- Generate list error --write-m3u (@arthurlutz) (#559)
Changed
- Fetch lyrics from Genius and fallback to LyricWikia if not found (@ritiek) (#585)
[1.2.2] - 2019-06-03
Fixed
- Patch bug in Pafy to prefer secure HTTPS (@ritiek) (#558)
[1.2.1] - 2019-04-28
Fixed
- Patch bug in Pafy when fetching audiostreams with latest youtube-dl (@ritiek) (#539)
Changed
- Removed duplicate debug log entry from
internals.trim_song(@ritiek) (#519) - Fix YAMLLoadWarning (@cyberboysumanjay) (#517)
[1.2.0] - 2019-03-01
Added
--write-toparameter for setting custom file to write Spotify track URLs to (@ritiek) (#507)- Set custom Spotify Client ID and Client Secret via config.yml (@ManveerBasra) (#502)
- Use YouTube as fallback metadata if track not found on Spotify. Also added
--no-fallback-metadatato preserve old behaviour (@ritiek) (#457)
Fixed
- Fix already downloaded prompt when using "/" in
--file-formatto create sub-directories (@ritiek) (#503) - Fix writing playlist tracks to file (@ritiek) (#506)
[1.1.2] - 2019-02-10
Changed
- Fetch all artist albums by default instead of only fetching the "album" type (@ritiek) (#493)
- Option
-f(--folder) is used when exporting text files using-p(--playlist) for playlists or-b(--album) for albums (@Silverfeelin) (#476) - Use first artist from album object for album artist (@tillhainbach)
Fixed
- Fix renaming files when encoder is not found (@ritiek) (#475)
- Add missing
import time(@ifduyue) (#465)
[1.1.1] - 2019-01-03
Added
- Output informative message in case of no result found in YouTube search (@Amit-L) (#452)
- Ability to pass multiple tracks with
-soption (@ritiek) (#442)
Changed
- Allowed to fetch metadata from Spotify upon searching Spotify-URL and
--no-metadatato gather YouTube custom-search fields (@Amit-L) (#452) - Change FFmpeg to use the built-in encoder
aacinstead of 3rd partylibfdk-aacwhich does not ship with the apt package (@ritiek) (#448) - Monkeypatch ever-changing network-relying tests (@ritiek) (#448)
- Correct
.m4acontainer before writing metadata so metadata fields shows up properly in media players (especially iTunes) (@ritiek with thanks to @Amit-L!) (#453) - Refactored core downloading module (@ritiek) (#410)
Fixed
- Workaround conversion conflicts when input and output filename are same (@ritiek) (#459)
- Applied a check on result in case of search using Spotify-URL
--no-metadataoption (@Amit-L) (#452) - Included a missing
import spotipyin downloader.py (@ritiek) (#440)
1.1.0 - 2018-11-13
Added
- Output error details when track download fails from list file (@ManveerBasra) (#406)
- Add support for
.m3uplaylists (@ritiek) (#401) - Introduce usage of black (code formatter) (@linusg) (#393)
- Added command line option for getting all artist's songs (@AlfredoSequeida) (#389)
- Added command line options for skipping tracks file and successful downloads file and place newline before track URL when appending to track file (@linusg) (#386)
- Overwrite track file with unique tracks (@ritiek) (#380)
- Embed comment metadata in
.m4a(@ritiek) (#379) - Added check for publisher tag before adding publisher id3 tag to audio file (@gnodar01) (#377)
Changed
--listflag accepts only text files using mimetypes (@ManveerBasra) (#414)- Refactored Spotify token refresh (@ManveerBasra) (#408)
- Don't search song on Spotify if
--no-metadatais passed (@ManveerBasra) (#404) - Changed test track to one whose lyrics are found (@ManveerBasra) (#400)
- Windows - 'My Music' folder won't be assumed to be on C drive but looked up in Registry (@SillySam) (#387)
- Updated
setup.py(fix PyPI URL, add Python 3.7 modifier) (@linusg) (#383) - Updated dependencies to their newest versions (as of 2018-10-02) (@linusg) (#382)
- Remove duplicates from track file while preserving order (@ritiek) (#369)
- Moved a lot of content from
README.mdto the repository's GitHub wiki (@sdhutchins, @ritiek) (#361) - Refactored internal use of logging (@arryon) (#358)
Fixed
- Check and replace slashes with dashes to avoid directory creation error (@ManveerBasra) (#402)
- Filter unwanted text from Spotify URLs when extracting information (@ritiek) (#394)
- Correctly embed metadata in
.m4a(@arryon) (#372) - Slugify will not ignore the
'character (single quotation mark) anymore (@jimangel2001) (#357)
1.0.0 - 2018-09-09
Added
- Initial complete release, recommended way to install is now from PyPI
1.0.0-beta.1 - 2018-02-02
Added
- Initial release, prepare for 1.0.0