An automation script to download Spotify exported songs using yt-dlp
/ youtube-dl
and FFMPEG
.
✔️ Customizable
✔️ Parallel downloads
✔️ Full metadata handling
✔️ No additional overhead
✔️ No need to deal with the Spotify API
Be aware, that this script is only an automation of yt-dlp
/ youtuble-dl
.
All laws regarding the download of copyrighted content also apply here.
- Visit Exportify, sign in with your Spotify credentials and export your desired playlists as a
.csv
file. - Install a downloader (
yt-dlp
oryoutube-dl
→ Check for a recent version! ) andFFMPEG
with your prefered package manager. - Get the script and make it executable:
wget https://raw.githubusercontent.com/Daenges/Spotify-Downloader-Bash/main/Downloader.sh &&\
chmod +x Downloader.sh
- Check the script one last time with your favourite editor before execution.
↪️ ./Downloader.sh "Path/To/YourPlaylist.csv"
starts the script with default parameters.
These parameters are:
csvFile=""
downloader=""
processNumber=5
musicPath="./"
additionalKeywords=""
💡 Execution with Parameters: ./Downloader.sh "Path/To/YourPlaylist.csv" --additionalKeywords clean --processNumber 10
Parameter | Usage |
---|---|
csvFile |
Must be entered as first parameter on execution and sets the path of your playlist file. |
downloader |
Sets the download command. There is an automatic detection (prefering yt-dlp ), that can be overwritten with: --downloader youtube-dl |
processNumber |
Number of parallel started Downloadprocesses. Can be altered with: --processNumber 10 |
musicPath |
Sets the path where the music is saved, default is the execution path of the script. Can be changed with: --musicPath /Your/New/Path/ |
additionalKeywords |
Since we are performing Youtube searches with Title and Author , some additional keywords(e.g. clean , lyrics , ...) might improve the results.Can be set with: --additionalKeywords clean |
If you got any error, check the version of your downloader against their latest release (yt-dlp or youtube-dl). Most errors arise through Youtube updating their page which needs to be implemented into the downloaders. If you have a recent downloader version and still get errors, feel free to create an issue here.
- Reading all parameters
- Getting the column number for the according data fields (
Artist Name
,Track Name
, ...) - Creating an array containing all lines of data
- Starting parallel jobs that handle the download process
- download picture and
.mp3
into/temp/
- merge them with
FFMPEG
while also applying metadata
- download picture and
Copyright 2023 Daenges
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.