2021-10-20 09:09:40 +02:00
![Stars ](https://img.shields.io/github/stars/Footsiefat/zspotify.svg )
![Forks ](https://img.shields.io/github/forks/Footsiefat/zspotify.svg )
![Size ](https://img.shields.io/github/repo-size/Footsiefat/zspotify )
2021-10-20 09:02:33 +02:00
# ZSpotify
2021-10-20 08:39:37 +02:00
### A Spotify downloader needing only a python interpreter and ffmpeg.
< p align = "center" >
< img src = "https://user-images.githubusercontent.com/12180913/138040605-c9d46e45-3830-4a4b-a7ac-c56bb0d76335.png" >
< / p >
2021-10-18 07:51:25 +02:00
2021-10-22 06:26:28 +02:00
[Discord Server ](https://discord.gg/skVNQKtyFq ) - [Matrix Server ](https://matrix.to/#/#zspotify:matrix.org ) - [Gitea Mirror ](https://git.robinsmediateam.dev/Footsiefat/zspotify ) - [Main Site ](https://footsiefat.github.io/ )
2021-10-13 09:30:07 +02:00
```
2021-10-18 07:51:25 +02:00
Requirements:
2021-10-18 07:50:10 +02:00
Binaries
2021-10-18 07:51:25 +02:00
- Python 3.8 or greater
- ffmpeg*
2021-10-13 09:30:07 +02:00
2021-10-18 07:50:10 +02:00
Python packages:
2021-10-18 10:08:54 +02:00
- pip install -r requirements.txt
2021-10-18 07:51:25 +02:00
```
2021-10-20 09:01:47 +02:00
2021-10-18 07:53:17 +02:00
\*ffmpeg can be installed via apt for Debian-based distros or by downloading the binaries from [ffmpeg.org ](https://ffmpeg.org ) and placing them in your %PATH% in Windows.
2021-10-20 09:01:47 +02:00
```
Command line usage:
2021-10-23 02:40:35 +02:00
python zspotify.py Loads search prompt to find then download a specific track, album or playlist
2021-10-20 22:50:34 +02:00
python zspotify.py < track / album / playlist / episode url > Downloads the track, album, playlist or podcast episode specified as a command line argument
2021-10-23 02:40:35 +02:00
python zspotify.py < artist url > Downloads all albums by specified artist
2021-10-20 09:01:47 +02:00
Extra command line options:
-p, --playlist Downloads a saved playlist from your account
-ls, --liked-songs Downloads all the liked songs from your account
2021-10-19 02:44:00 +02:00
2021-10-23 08:28:23 +02:00
Options that can be configured in zs_config.json:
2021-10-21 09:32:42 +02:00
ROOT_PATH Change this path if you don't like the default directory where ZSpotify saves the music
ROOT_PODCAST_PATH Change this path if you don't like the default directory where ZSpotify saves the podcasts
2021-10-23 08:28:23 +02:00
SKIP_EXISTING_FILES Set this to false if you want ZSpotify to overwrite files with the same name rather than skipping the song
2021-10-21 09:32:42 +02:00
MUSIC_FORMAT Set this to "ogg" if you would rather that format audio over "mp3"
2021-10-23 08:28:23 +02:00
RAW_AUDIO_AS_IS Set this to true to only stream the audio to a file and do no re-encoding or post processing
FORCE_PREMIUM Set this to true if ZSpotify isn't automatically detecting that you are using a premium account
2021-10-21 09:32:42 +02:00
ANTI_BAN_WAIT_TIME Change this setting if the time waited between bulk downloads is too high or low
2021-10-23 08:28:23 +02:00
OVERRIDE_AUTO_WAIT Change this to true if you want to completely disable the wait between songs for faster downloads with the risk of instability
2021-10-20 09:01:47 +02:00
```
2021-10-23 02:40:35 +02:00
### Will my account get banned if I use this tool?
Currently no user has reported their account getting banned after using ZSpotify.
2021-10-23 10:16:53 +02:00
This isn't to say _you_ won't get banned as it is technically against Spotify's TOS.
2021-10-23 02:40:35 +02:00
**Use ZSpotify at your own risk**, the developers of ZSpotify are not responsible if your account gets banned.
2021-10-19 02:18:53 +02:00
2021-10-23 10:16:53 +02:00
### Contributing
Please be sure to lint your code with pylint before issuing a pull-request, thanks!
2021-10-19 02:18:53 +02:00
## **Changelog:**
2021-10-23 10:36:42 +02:00
**v2.1 (23 Oct 2021):**
- Moved configuration from hard-coded values to separate zs_config.json file.
- Add subfolders for each disc.
- Can now search and download all songs by artist.
- Show single progress bar for entire album.
- Added song number at start of track name in albums.
2021-10-23 08:28:23 +02:00
2021-10-22 10:38:49 +02:00
**v2.0 (22 Oct 2021):**
- Added progress bar for downloads.
- Added multi-select support for all results when searching.
- Added GPLv3 Licence.
2021-10-23 08:28:23 +02:00
- Changed welcome banner and removed unnecessary debug print statements.
2021-10-22 10:38:49 +02:00
2021-10-22 00:47:11 +02:00
**v1.9 (22 Oct 2021):**
- Added Gitea mirror for when the Spotify Glowies come to DMCA the shit out of this.
- Changed the discord server invite to a matrix server so that won't get swatted either.
- Added option to select multiple of our saved playlists to download at once.
- Added support for downloading an entire show at once.
2021-10-21 09:32:42 +02:00
**v1.8 (21 Oct 2021):**
- Improved podcast downloading a bit.
- Simplified the code that catches crashes while downloading.
- Cleaned up code using linter again.
- Added option to just paste a url in the search bar to download it.
- Added a small delay between downloading each track when downloading in bulk to help with downloading issues and potential bans.
2021-10-20 22:48:28 +02:00
**v1.7 (21 Oct 2021):**
- Rewrote README.md to look a lot more professional.
- Added patch to fix edge case crash when downloading liked songs.
- Made premium account check a lot more reliable.
2021-10-20 22:50:34 +02:00
- Added experimental podcast support for specific episodes!
2021-10-20 22:48:28 +02:00
2021-10-19 21:50:15 +02:00
**v1.6 (20 Oct 2021):**
- Added Pillow to requirements.txt.
- Removed websocket-client from requirements.txt because librespot-python added it to their dependency list.
- Made it hide your password when you type it in.
- Added manual override to force premium quality if zspotify cannot auto detect it.
- Added option to just download the raw audio with no re-encoding at all.
- Added Shebang line so it runs smoother on Linux.
2021-10-20 19:13:20 +02:00
- Made it download the entire track at once now so it is more efficient and fixed a bug users encountered.
2021-10-19 21:50:15 +02:00
2021-10-19 09:19:06 +02:00
**v1.5 (19 Oct 2021):**
- Made downloading a lot more efficient and probably faster.
- Made the sanitizer more efficient.
- Formatted and linted all the code.
2021-10-19 02:44:00 +02:00
**v1.4 (19 Oct 2021):**
- Added option to encode the downloaded tracks in the "ogg" format rather than "mp3".
- Added small improvement to sanitation function so it catches another edge case.
2021-10-19 02:18:53 +02:00
**v1.3 (19 Oct 2021):**
- Added auto detection about if the current account is premium or not. If it is a premium account it automatically sets the quality to VERY_HIGH and otherwise HIGH if we are using a free account.
- Fixed conversion function so it now exports to the correct bitrate.
- Added sanitation to playlist names to help catch an edge case crash.
2021-10-19 21:50:15 +02:00
- Added option to download all your liked songs into a sub-folder.
2021-10-19 02:18:53 +02:00
**v1.2 (18 Oct 2021):**
- Added .gitignore.
- Replaced dependency list in README.md with a proper requirements.txt file.
- Improved the readability of README.md.
**v1.1 (16 Oct 2021):**
- Added try/except to help catch crashes where a very few specific tracks would crash either the downloading or conversion part.
**v1.0 (14 Oct 2021):**
2021-10-20 19:13:20 +02:00
- Adjusted some functions so it runs again with the newer version of librespot-python.
2021-10-19 02:18:53 +02:00
- Improved my sanitization function so it catches more edge cases.
2021-10-20 19:13:20 +02:00
- Fixed an issue where sometimes spotify wouldn't provide a song id for a track we are trying to download. It will now detect and skip these invalid tracks.
2021-10-19 02:18:53 +02:00
- Added additional check for tracks that cannot be "played" due to licence(and similar) issues. These tracks will be skipped.
**v0.9 (13 Oct 2021):**
- Initial upload, needs adjustments to get working again after backend rewrite.