Wer seine Google Play Music Titel per Takeout runterladen will, sollte Zeit einplanen

TL;DR
Google Takeouts haben bei mir nicht mit dem Downloadmanager funktioniert, Downloads lassen sich nicht wiederaufnehmen und werden nicht viel schneller wenn man es parallelisiert.


Google Play Music wird eingestellt, User können ihre Titel zu YouTube Music übertragen
https://support.google.com/youtubemusic/answer/9698084?hl=de

das klappt auch soweit, nur ist YouTube Music nicht benutzbar (tristes schwarz, Nag-Screen für Premium, ohne kosten­pflich­tiges Abo kein Hinter­grundbetrieb, kein direkter Einstieg zum Player ...)

Man kann mit Google Takeout seine bei Google Play Music hochgeladenen Titel runterladen.
https://google.com/takeout und dann "Deselect all" und nur "Google Play Music " wieder aktivieren
das ganze kommt als gesplittetes ZIP in wählbarer Größe von 1,2,4,10 oder 50 GB

Zuerst habe ich 2 GB probiert, um den Download möglichst gut parallelisieren zu können.

Die Vorbereitung bei Google hat ein paar Stunden gedauert, dann kam eine eMail.


Diese 125 Links in der eMail kann man jetzt nicht einfach rauskopieren bzw. vom Downloadmanager übernehmen lassen, denn das sind nur Links die wiederum erst die Generierung des finalen Links anstoßen.

Aus jedem Link in der eMail
https :// accounts.google.com/AccountChooser?continue=https://takeout.google.com/settings/takeout/download?j%3D4711ac22-1234-1234-1234-efefefeffefefeffefefefefef%26i%3D0&Email=meine.email@gmail.com

generiert Google so etwas
https :// aae9e64bac6371253c34e34f6d1ee555cf4212ac8c1cfdebfff5-apidata.googleusercontent.com/download/storage/v1/b/takeout-eu/o/20200706T201512Z%2F8925029452921930405%2F8120fe8e-387d-44d8-9ba0-95fa519f06223%2F2%2F6ddc0248-3113-42121-9420-1b4aee6d3813?qk=BF5uMEts-[16 weitere Zeilen]-BQL0ItjV_g3d2WDC2vLBXIEGk4FcY&isca=1

Alle Links sind intern mit einem Gültigkeitszeitraum und einem Downloadcounter versehen.

Schlimmer ist jedoch, daß wenn man die Dateien mit einem Downloadmanager nacheinander holen lassen möchte, die Links in der Queue bereits ungültig geworden sind, wenn die Datei an der Reihe ist.

Beim Herumexperimentieren mit der 2 GB Splitgröße hieß es dann auch noch sinngemäß "Limit der Backupdownloads erreicht, Downloadlink kann nicht erstellt werden"

Ich habe dann bei dem Versuch mit 10 GB Splitgröße und Verwendung das normalen Browserdownloads (nur noch 25 Dateien statt der 125) genau das gehabt, was ich vermeiden wollte. Abends alle 25 Downloads im Browser manuell angestoßen und die Downloads sind irgendwann in der Nacht stehen geblieben mit 5 fertigen ZIPs und 20 halbfertigen, die sich nicht erneut starten ließen, weil die Gültigkeit abgelaufen ist (Screenshot aus meinem letzten Versuch mit 50 GB Splitgröße)


Mir ist aufgefallen, daß die Downloadgeschwindigkeit sehr stark schwankt, mal sind es die kompletten 50 MBit/s meines VDSL Anschlußes, mal geht es bis auf ein paar 100 KB/s runter, um dann irgendwann wieder zu steigen.

Letztendlich mache ich es jetzt so: der Download läuft auf dem 'headless' C2D MacMini, den ich per VNC steuere. Die Speicherung der Dateien erfolgt gleich auf eine externe Platte, die ich wenn der Download fertig ist, an den iMac zur 'Bearbeitung' anschließe.

Als Splitgröße habe ich 50 GB, bei mir dann 5 Dateien, gewählt. Jeweils zwei Dateien lasse ich parallel runterladen. Auch dort ist mir eine einfach "stehengeblieben" (siehe Screenhot oben)

Auf dem MacMini läuft ein kleines Skript, das erkennt wenn der Download fertig ist und mir dann eine eMail schickt, damit ich über VNC im Browser auf dem Mini die nächsten zwei Links generieren lassen kann.

Show Plain Text
  1. #!/bin/bash
  2. zipsoll=$1
  3.  
  4. ### Info eMail verschicken
  5. # $1 Empfänger $2 Subject $3 Body
  6. compose_email () {
  7. echo "tell application \"Mail\"
  8.    activate
  9.    set MyEmail to make new outgoing message with properties {visible:true, subject:\"$2\", content:\"$3\"}
  10.    tell MyEmail
  11.        make new to recipient at end of to recipients with properties {address:\"$1\"}
  12.        send
  13.    end tell
  14. end tell
  15. " | osascript
  16. }
  17.  
  18. if [ -z $zipsoll ]; then
  19.     echo "Angabe der ZIPs fehlt z.B. $0 4"
  20. else
  21.     zips=0
  22.     while [ $zips -lt $zipsoll ]; do
  23.         zips=$(ls /Volumes/MusicBackup/GTO/ | grep -c zip)
  24.         sleep 60
  25.     done
  26.  
  27.     echo "Mail wird verschickt"
  28.     compose_email meine.email@gmail.com "Download ist fertig" "Google Takeout auf MacMini"
  29. fi
  30. exit 0


Zusätzlich lasse ich mir am iMac die aktuelle Downloadrate des Minis anzeigen, um die zu ermitteln läuft in BitBar [github.com] eine kleines Skript, das die Größe des Downloadordners auf der am Mini angeschlossenen Platte ermittelt und anhand der Differenz und der Zeit seit letztem Skriptlauf, die DLrate errechnet - das Skript läuft aktuell alle 60 Sekunden.


Show Plain Text
  1. #!/bin/bash
  2.  
  3. BitBarDarkMode=${BitBarDarkMode}
  4. if [ "$BitBarDarkMode" ]; then
  5.   COLOR0="#666666"
  6.   COLOR1="#ffffff"
  7. else
  8.   COLOR0="#333333"
  9.   COLOR1="#000000"
  10. fi
  11.  
  12. dl_alt_loc="/Volumes/RamDiskCache/dl_alt.txt"
  13.  
  14. ts_akt=$(date +"%s")
  15. mb_akt=$(echo "$(ssh -q mini@192.168.666.666 du -s /Volumes/MusicBackup/GTO | grep -o [^/]*)/2048" | bc)
  16.  
  17. if [ -f "$dl_alt_loc" ]; then
  18.     mb_loc=$(cat $dl_alt_loc)   # utime mb
  19.     ts_alt="${mb_loc% *}"       # utime
  20.     mb_alt="${mb_loc##* }"      # mb
  21.  
  22.     dif_sec=$((ts_akt-ts_alt))
  23.     dif_mb=$((mb_akt-mb_alt))
  24.     echo "$mb_akt $(echo "scale=1; $dif_mb/$dif_sec" |bc) MB/s"
  25.     echo "---"
  26.     echo "Dif $dif_sec s $dif_mb MB"
  27. else
  28.     echo "n/a"
  29.     echo "---"
  30.     echo "Ermittele Daten, bitte warten"
  31. fi
  32.     echo "$ts_akt $mb_akt" > "$dl_alt_loc"
  33. exit 0


Das 'ssh -q mini@192' in Zeile 15 (SSH Login per Keyfile und nicht per Passwort) funktioniert natürlich nur wenn man vorher seinen eigenen SSH-Key mit ssh-copy-id user@MacIP übertragen hat.