# Alle Songs, die Dieter gespielt hat, in eine bsaber-Playlist packen:

1. YouTube-API-key hier abholen: https://console.cloud.google.com/apis/credentials/key/
2. YouTube-API-Kontingent ist knapp. Deshalb sollte jeder Request gecached werden.
3. Beatsaver-API-Kontingent hingegen ist endlos vorhanden. Also im Zweifelsfall einfach den letzten Befehl nochmal ausführen, das ist kein Problem.
4. Na gut ganz endlos ist es doch nicht, daher prüfen wir, ob wir gedrosselt wurden und versuchen dann den jeweiligen Download nochmal.
5. Manche Songs wurden auch wieder heruntergenommen. Daher durfte ich lernen, dass es in bash ein `continue 2` gibt. Coole Sache. Könnte sich die ein oder andere Sprache Mal eine Scheibe von abschneiden.
```
KEY="[YouTube-API-Key]"
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&key=$KEY' --header 'Accept: application/json' --compressed > dieter1.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter1.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter2.json && less dieter2.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter2.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter3.json && less dieter3.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter3.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter4.json && less dieter4.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter4.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter5.json && less dieter5.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter5.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter6.json && less dieter6.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter6.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter7.json && less dieter7.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter7.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter8.json && less dieter8.json
curl 'https://youtube.googleapis.com/youtube/v3/search?part=id&channelId=UCbXjQecIReDgxsn7FUf4Tbw&maxResults=50&order=date&pageToken=$(jq -r ".nextPageToken" dieter8.json)&key=$KEY' --header 'Accept: application/json' --compressed > dieter9.json && less dieter9.json
for i in $(seq 1 9); do for j in $(seq 0 49); do curl "https://youtube.googleapis.com/youtube/v3/videos?part=snippet&id=$(jq -r ".items[$j].id.videoId" dieter$i.json)&key=$KEY" --header 'Accept: application/json' --compressed > dieter-video$i$j.json; done; done
for i in $(seq 1 9); do for j in $(seq 0 49); do jq -r ".items[0].snippet.description" dieter-video$i$j.json | grep -o -P "(https:\\/\\/beatsaver.com\\/beatmap\\/\\w*)" >> beatmaps.txt; done; done
echo "{\"playlistTitle\": \"Dieter - gesammelte Werke\", \"playlistAuthor\": \"MaxMatti\", \"image\": \"\", \"songs\": [" > dieter.bplist; for i in $(cat beatmaps.txt); do echo "${i#"https://beatsaver.com/beatmap/"}"; while true; do curl "https://beatsaver.com/api/maps/detail/${i#"https://beatsaver.com/beatmap/"}" -A 'Wget/1.20.3 (linux-gnu)' -s > tmp.json; [ "$(jq -r ".hash" tmp.json)" != "null" ] && [ "$(jq -r ".hash" tmp.json)" != "" ] && break; [ "$(cat tmp.json)" = "Not Found" ] && continue 2; sleep 1; done; echo "{\"hash\": \"$(jq -r ".hash" tmp.json)\", \"songName\": \"$(jq -r ".metadata.songName" tmp.json)\"}," >> dieter.bplist; done; echo "]}" >> dieter.bplist;
```