Ich hatte ein Problem. Die Festplatte meines iPod ist genauso groß wie die Festplatte von meinem Powerbook. Nachdem ich all meine CDs gerippt hatte, war das Powerbook voll. Drum habe ich einfach die Dateien auf einen anderen Rechner ausgelagert und mounte jetzt immer das entsprechende Laufwerk, wenn ich zu Hause bin. So weit, so gut.
Ein wenig blöd ist es nur, dass ich jetzt keine Musik mehr auf dem Rechner habe. iTunes ist da gar nicht so. Ich könnte die neue Musik jetzt lokal speichern und den Rest dort lassen, wo er ist. Hat dann den Nachteil, dass mir trotzdem alle Lieder innerhalb von iTunes angezeigt werden, auch wenn ich gar keinen Zugriff auf sie habe.
Weiter möchte ich das Ganze gerne trennen. Zum einen meine CDs-Sammlung, zum anderen ein bisschen Musik hier und da, die dann aber auch bitte auf keinen Fall auf meinen iPod übertragen werden soll. Also benötige ich zwei iTunes-Profile (alternativ könnte ich auch ein zweites User-Profil anlegen. Es gibt schon Lösungen, um Bibliotheken von anderen Usern zu benutzen, das finde ich aber auch eher suboptimal). Mal sehen, was man da so machen kann.
Auf der Suche nach Informationen
Als erstes habe ich erstmal ganz platt meine Powerbook-Platte nach dem Begriff iTunes durchsucht. Da findet man so allerhand. Neben dem Programm selbst ( iTunes.app ) eben das Verzeichnis ~/Music/iTunes, in dem zumindest zwei Dateien liegen, sowie noch ein paar Dateien unter ~/Library/Preferences unter anderem com.apple.iTunes. Meines Wissen werden diese Dateien eingelesen und liegen dann dem System als default-Einstellungen vor. Mit dem Kommando defaults kann man sich die Einstellungen ausgeben lassen und auch setzen. ich öffne also fix eine Shell und sende
me@buch:~$ defaults read > ~/Desktop/defaults.txt
Sämtliche Umgebungsvariablen werden jetzt auf dem Desktop in die Datei defaults.txt gespeichert. Diese Datei öffne ich jetzt einfach mit Textedit. Ich suche nach iTunes und finde folgende Key, die ich nochmal einzeln auslese:
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabasePaths
("~/Music/iTunes/iTunes Music Library.xml")
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabases
("file://localhost/Users/DER_USER_NAME/Music/iTunes/iTunes%20Music%20Library.xml")
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:PutFile:0:Path
file://localhost/Volumes/iTunes/
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:ChooseFolder:0:Path
"file://localhost/ITUNES/mac/"
In der Datei com.apple.iApps kann man zwei Einstellungen finden, gleiches gilt für die Datei com.apple.iTunes. Ebenfalls behalten wir im Hinterkopf, dass man alles, was man oben ausgelesen hat auch mit dem gleichen Kommando ( defaults write ) manipulieren kann.
Wenn ich einen Blick in das Verzeichnis file://localhost/Users/DER_USER_NAME/Music/iTunes werfe, dann sehe ich neben der editierbaren XML-Datei iTunes Music Library.xml eine Binär-Datei namens iTunes 4 Music Library die in etwas die gleiche Grösse hat, wie die XML-Datei – auf jeden Fall aber einen ziemlich identischen Zeitstempel. Öffnet man die XML-Datei (Achtung, meine ist 8MB gross, da kann sich ein Editor schon mal verschlucken), so finden sich da ein paar Keys, die man vielleicht auch noch beachten muss:
<key>Music Folder</key>
<string>file://localhost/Volumes/iTunes/mac/</string>
<key>Library Persistent ID</key>
<string>F4724A075992D8DE</string>
Danach sind dann die einzelnen Lieder-Dateien gelistet – wo man auch nochmal einen möglicherweise relevanten Eintrag findet:
<key>Location</key>
<string>file://localhost/Volumes/iTunes/mac/New%20Model%20Army/Impurity/01%20Get%20Me%20Out.m4a</string>
Hm. ok. Was ist nun mit dieser Binär-Datei? Ich dubliziere mal eben das iTunes-Verzeichnis. Das Orginal benenne ich um in iTunes_home, das Duplikat nenne ich iTunes2go. Weiter lege ich einen symbolischen Link iTunes an, der auf iTunes2go zeigt (shell: ln -s ~/Music/iTunes2go ~/Music/iTunes ) und lösche dann diese Binär-Datei. Nach dem Starten zeigt sich iTunes jungfräulich. *bummer* Aus meiner 8MB-XML-Datei ist eine 8kb-XML-Datei geworden. Aha. Ein Blick hinein:
<key>Music Folder</key>
<string>file://localhost/Users/DER_USER_NAME/Music/iTunes2go/iTunes%20Music/</string>
<key>Library Persistent ID</key>
<string>8F5F9B2F69197988</string>
Hmm, der Trick mit dem symbolischen Link scheint nur bedingt zu klappen. Netter Nebeneffekt ist doch trotzdem, das ich eine leere Library erhalten habe. Jetzt einfach mal ein Doppelclick auf ein beliebiges MP3. Ah wird importiert und fein säuberlich unter /Users/DER_USER_NAME/Music/iTunes2go/iTunes%20Music/ abgelegt.
Jetzt schauen wir mal just, was die Umgebungsvariablen so sagen …
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabasePaths
("~/Music/iTunes2go/iTunes Music Library.xml")
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabases
("file://localhost/Users/DER_USER_NAME/Music/iTunes2go/iTunes%20Music%20Library.xml")
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:PutFile:0:Path
file://localhost/Users/DER_USER_NAME/Music/iTunes2go/
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:ChooseFolder:0:Path
"file://localhost/Users/DER_USER_NAME/Music/iTunes/iTunes Music/"
Hmmm. Das sieht ja so aus, als würde der Inhalt der Binär-Datei möglicherweise die Umgebungsvariablen verändern. Also flugs mal wieder iTunes beendet und den symbolischen Link auf das Ursprungsverzzeichnis gesetzt (shell: rm ~/Music/iTunes; ln -s ~/Music/iTunes_home ~/Music/iTunes). Nach dem Start zeigt mir iTunes wieder alle meine Lieder. Und was sagen die defaults?
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabasePaths
("~/Music/iTunes_home/iTunes Music Library.xml")
me@buch:~$ defaults read com.apple.iApps iTunesRecentDatabases
("file://localhost/Users/DER_USER_NAME/Music/iTunes_home/iTunes%20Music%20Library.xml")
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:PutFile:0:Path
file://localhost/Users/DER_USER_NAME/Music/iTunes2go/
me@buch:~$ defaults read com.apple.iTunes AppleNavServices:ChooseFolder:0:Path
"file://localhost/Users/DER_USER_NAME/Music/iTunes/iTunes Music/"
Aha, also einzig und allein der key in muss irgendwie verändert werden, damit iTunes die neu hinzugefügten Stücke auch wirklich dort ablegt, wo sie gespeichert werden sollen.
Somit müssten mir eigentlich zwei Scripte reichen, um einen bequemen Wechsel zwischen zwei iTunes-Konfigurationen wechslen zu können.
iT2go.sh:
#!/bin/bash
rm ~/Music/iTunes
ln -s ~/Music/iTunes_home ~/Music/iTunes
defaults write com.apple.iTunes AppleNavServices:PutFile:0:Path "file://localhost/Users/DER_USER_NAME/Music/iTunes2go/"
iThome.sh
#!/bin/bash
rm ~/Music/iTunes
ln -s ~/Music/iTunes_home ~/Music/iTunes
defaults write com.apple.iTunes AppleNavServices:PutFile:0:Path "file://localhost/Volumes/iTunes/"
Auf diese Art müsste man sich dann noch weitere Libraries basteln können. So weit so gut so unkomfortabel. Nach kurzem Studium von Technical Note TN2065: do shell script in AppleScript und AppleScript – Dialogboxen habe ich mir dann fix dieses AppleScript zusammengezimmert, was das ganze wohl ganz ordentlich macht:
-- iTunes erstmal schliessen
-- damit es nicht durcheinanderkommt
tell application "iTunes" to quit
display dialog "Wo bist Du gerade?" buttons ¬
{"zu Hause", "unterwegs"}
if button returned of result = "zu hause" then
do shell script "rm ~/Music/iTunes"
do shell script "ln -s ~/Music/iTunes_home ~/Music/iTunes"
do shell script "defaults write com.apple.iTunes AppleNavServices:PutFile:0:Path \"file://localhost/Volumes/iTunes/\""
else if button returned of result = "unterwegs" then
do shell script "rm ~/Music/iTunes"
do shell script "ln -s ~/Music/iTunes2go ~/Music/iTunes"
do shell script "defaults write com.apple.iTunes AppleNavServices:PutFile:0:Path \"file://localhost/Users/USER_NAME/Music/iTunes2go/\""
end if
tell application "iTunes"
-- wake up!
activate
-- Ich weiss nicht ob das was bringt
set the focus to application "iTunes"
end tell
Soweit scheint ganz zu funktionieren. Nachmachen auf eigene Gefahr. Verbesserungsvorschläge werden gerne entgegengenommen.
16. Oktober 2004 um 08:01 Uhr
eine andere Möglichkeit wäre es natürlich, einfach die automatische Synchronisation des iPod abzuschalten und dann nur die Titel, die Du „2go“ mit dabeihaben willst, von Hand per drag’n’drop von der Library auf den iPod ziehst. Ja, das ist lang nicht so komfortabel wie Deine Lösung und früher oder später vergisst man etwas. Aber meine Musiksammlung ist auch kleiner als mein iPod…
Ach ja, noch eine Möglichkeit: jeder Titel hat ja ein Häkchen vornedran. Es gibbt auch noch die Möglichkeit, nur die Titel mit Häkchen auf den iPod zu synchen. Wenn Du also (mühsam, mühsam) bei allen nicht-„2go“-Titeln den Haken wegmachst, kommst Du auch dahin.
Das wären also Bordmittel. Aber Deine Skript- & default-Mittel finde ich sehr klasse.
17. Oktober 2004 um 00:20 Uhr
So ich realisier das ganze jetzt auch…:) Danke für die Anregung!
Bei mir sieht´s aber so aus das ich auch die Mount-Befehle für meine Rechner alle formschön in ein Script packe…:)
Mal sehen ob das alles so klappt wie geplant
MfG:
doc
11. November 2005 um 15:06 Uhr
gleiches Problem, andere Lösung Moin,
bei mir ist es so, dass meine Bibliothek 120GB gross ist, d.h. sie passt weder auf mein PB noch auf den iPod (mini). Stattdessen liegt sie auf einem zentralen FileServer (alter G4), und iTunes streamt die Musik an die Rechner im Haus. Mein Hauptrechner greift allerdings per AFP auf das Musik-Volume zu, das ständig gemountet ist. So kann ich dort auch Playlisten erstellen und CDs brennen (was an den anderen Rechnern ja nicht geht).
Das PowerBook wiederum hat eine kleine, sich ständig ändernde Auswahl der Bibliothek an Bord, von der ich dann manuell den iPod füttere (bis auf die Podcasts, die werden automatisch synchronisiert). Wenn ich dann zuhause bin, höre ich sowieso keine Musik mit dem PowerBook, sondern mit einem der im Haus verteilten Macs. Wenn ich dochmal was hören will, was nicht lokal im PB gespeichert ist, zapfe ich per iTunes Sharing eben den G4 oben unterm Dach an.
Für mich die einfachste Lösung.