scripts/spotifydl.sh

33 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
#depends on ffmpeg, youtube-dl, curl, jq
spotifylist="12i9fRZF3DG4J5KfMIS675" # The Spotify playlist id
spotifyauth="Bearer BQBcsUG3bGZmBnSK..." # spotify token .. get with firefox network view -> any request against api.spotify.com -> http header authentication
spotifylimit="100"
outdir="ytdl/" # outputdirectory
total=$(curl -s -H "authorization: $spotifyauth" "https://api.spotify.com/v1/playlists/$spotifylist/tracks?offset=0&limit=100&market=from_token" | jq '.total')
off="0"
while [ "$off" -lt "$total" ]; do
echo "get data: $off"
curl -s -H "authorization: $spotifyauth" "https://api.spotify.com/v1/playlists/$spotifylist/tracks?offset=$off&limit=$spotifylimit&market=from_token" | jq '.items | .[] | .track | (.artists | .[0] | .name) + " - " + (.name)' >> data
off=$((off+spotifylimit))
done
echo "loaded Songs:"
wc -l data
youtube-dl --default-search "ytsearch" -f 251 -a data -o "$outdir%(creator)s%(title)s.%(ext)s" --restrict-filenames -w -x --audio-format mp3 --embed-thumbnail --add-metadata --xattrs # | grep --color=never "youtube:search"
#ytmdl --disable-file --quiet --ignore-errors --choice 1 --format mp3 --list data
#while read in; do
# in=$(echo "$in" | sed 's/"//g')
# artist=$(echo "$in" | sed 's/###.*//')
# song=$(echo "$in" | sed 's/.*###//')
# echo "Download $song by $artist"
# ytmdl --disable-file --quiet --choice 1 -t --format mp3 --artist "$artist" "$song"
#done < data
rm -i data