Nun gut, entweder man nutzt Spotify oder hat ein iPhone, welches das (vielleicht) irgendwie ab Werk kann oder iTunes ist für einen sowieso ein Fremdbegriff, weil man immer das neuste System verwendet, wo es kein iTunes mehr gibt (sollte aber auch mit "Music" funktionieren)...jedenfalls habe ich mir da etwas gebastelt, um eine bestimmte iTunes-Playlist auf mein Android-Handy zu schieben.
Früher ging das mal ganz bequem: Ein Google-Programm hat im Hintergrund immer mein iTunes im Auge behalten und neue Tracks und Playlist-Änderungen zu "Google Play Music" geschoben. Auf dem Handy konnte ich eine Playlist auswählen, die immer auf mein Handy in den lokalen Speicher geladen wurde, so dass ich unterwegs bestimmte Titel ohne Datenverbindung anhören konnte.
Doch dann wurde "Google Play Music" eingestellt, beziehungsweise durch etwas "neues besseres" ersetzt, bei dem diese Funktion allerdings leider fehlt.
Da ich sowieso schon auf Syncthing setze, um unter anderem meine Handyfotos auf den Computer zu schieben, nutze ich hier nun auch den anderen Weg, um meine Musik vom Computer auf's Handy zu schieben...und bei Änderungen aktuell zu halten.
Alles schön lokal im heimischen Netzwerk ohne Umweg einmal um die Welt und fremde Server... ;-)
Ablauf
Da ich meine Playlist nicht all zu oft ändere, werden einmal am Tag alle MP3s einer gewünschten Playlist (sofern dort noch nicht vorhanden) in einen Ordner kopiert und nicht mehr in der Playlist vorhandene MP3s entfernt.Syncthing synchronisiert diesen Ordner dann mit meinem Handy, so dass hinzugefügte Titel automatisch dort im Speicher landen.
Teil 1: AppleScript kopiert MP3s einer Playlist in Verzeichnis
Folgendes AppleScript kopiert die MP3-Dateien (ich habe dies hier auf ausschließlich MP3-Dateien beschränkt, da ich dem Player auf dem Handy keine AAC und MP4-Dateien zumuten wollte) einer vorgegebenen Playlist in einen vorgegebenen Ordner:set outputPath to "Macintosh HD:syncthing:handy-music" -- Pfad zum Ordner, in welchem die MP3s abgelegt werden sollen
tell application "Finder"
set allFiles to list folder outputPath
end tell
tell application "iTunes"
-- Neue Tracks hinzufügen
set theTracks to every track in playlist playListName
repeat with aTrack in theTracks
set fileLocation to location of aTrack
set newFileName to (artist of aTrack) & " - " & (get name of aTrack) & ".mp3"
set theExtension to ""
tell application "System Events"
set theExtension to name extension of fileLocation
end tell
if theExtension is "mp3" then
-- Wenn noch nicht existent, dann kopieren
tell application "Finder"
if not (file (outputPath & ":" & newFileName) exists) then
set duplicatedFile to duplicate file fileLocation to folder outputPath
set name of duplicatedFile to newFileName
end if
end tell
-- Von Liste aller vorhandenen Dateien streichen
if (allFiles contains newFileName) then
repeat with i from 1 to count of allFiles
if item i of allFiles is newFileName then set item i of allFiles to ""
end repeat
end if
end if
end repeat
end tell
-- Nicht mehr vorhandene Tracks entfernen
tell application "Finder"
repeat with i from 1 to count of allFiles
set theFileName to item i of allFiles
if not (theFileName is "") and not (theFileName is ".DS_Store") and not (theFileName begins with ".") then
delete file (outputPath & ":" & theFileName)
end if
end repeat
end tell
Regelmäßige Ausführung
Über launchd können wir dieses Script regelmäßig ausführen. Einmal am Tag sollte ausreichen.Dazu eine neue Datei im Verzeichnis ~/Library/LaunchAgents erstellen:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>musicsync</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>/pfad/zu/applescript/playlist-nach-ordner.scpt</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>4</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</dict>
</plist>
...und LaunchAgent scharf schalten:
launchctl load ~/Library/LaunchAgents/de.apfelz.musicsync.plist
Als Zeit habe ich mal 4 Uhr morgens gewählt...kann natürlich auch jede andere Uhrzeit sein.
Wenn man mal nicht bis 4 Uhr morgens warten möchte, weil man vor der Abreise noch schnell ein paar MP3s rüber schieben möchte, kann man natürlich auch einfach das Skript mit Hilfe des Skripteditors ausführen.
Teil 2: Syncthing synchronisiert mit Handy
Bis jetzt landen nur die MP3-Dateien, die ich irgendwo auf einer Festplatte habe, als Kopie in einem weiteren Verzeichnis der Festplatte.Mit Hilfe von Syncthing sollen sie auf's Handy gelangen.
Ich gehe mal davon aus, dass Syncthing auf Handy und Computer eingerichtet sind – die Einrichtung von Syncthing ist nicht Bestandteil dieses Artikels aber eigentlich recht schnell geschehen und selbsterklärend.
Auf dem Computer neuen Ordner hinzufügen und als Ordnerpfad den Pfad unseres erstellten Musik-Ordners eintragen.
Teilen mit dem Handy (welches bereits als Externes Gerät hinzugefügt sein sollte).
Als Ordnertyp habe ich "Senden und Empfangen" gewählt. Mit nur "Senden" hatte es mir die in der iTunes-Playlist gelöschten MP3s nicht aus dem Handyspeicher gelöscht. Sollte man auf dem Handy versehentlich eine MP3-Datei löschen, so wird sie nachts um Vier wieder hinzugefügt. Blöd nur, wenn man auf dem Handy über andere Wege noch MP3s hinzufügt, denn die werden dann nachts um Vier auf dem Computer gelöscht und bei der nächsten Synchronisierung auch auf dem Handy gelöscht. Hier sollte man dann vielleicht besser mit zwei verschiedenen Unterordnern im Musik-Verzeichnis des Handys arbeiten.
![]() ![]() ![]() ![]() |
|
Erstellt am: 08.09.2021 unter den Kategorien Selbstgehostet Aufgebohrt . | Kommentieren |