• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Via Perl auf iTunes zugreifen

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Was ich bereits habe:
- ein Utility-Set zum generischen Transfer von Playlisten
- hierbei muss die Playlist im XSPF-Format (XML) vorliegen
- alle Utilities sind in Perl implementiert

Beispiele für den Einsatz der Playlist-Transfer-Utilities:
- last.fm nach iTunes (Win)
- iTunes (Win) nach last.fm
- Amarok (Unix) nach iTunes (Win)
- VLC nach last.fm
- usw.

Für Interessierte hier ein Link:
Generic Playlist Transfer - Utility Set (for Windows, Linux and OS X)

Ich möchte nun das Playlist-Utility-Set auf iTunes (Mac) erweitern:
- XSPF nach iTunes (Mac)
- iTunes (Mac) nach XSPF
- idealerweise würde ich dies via Perl realisieren wollen (um das Set konsitent zu halten)
- alle Utilities werden über die Kommandozeile bedient (keine GUI)

Meine Fragen:
- Hat jemand Erfahrung mit einem Perl-iTunes-Interface?
- Ist der Perl-Ansatz strategisch überhaupt sinnvoll?
- Wäre möglicherweise ein anderer Lösungsansatz sinnvoller bzw. einfacher?

Danke für euer Feedback - Klaus
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Die Playlisten von iTunes auf dem Mac liegen auch in einem XML Format (Plist) vor.

Neue Playlisten in iTunes würde ich über AppleScript erzeugen. Das musst Du aus perl dann mit dem Systembefehl "osascript" aufrufen.

Ich würde, soweit es geht, den perl Ansatz behalten, und die Kommunikation mit iTunes über AppleScript machen.

Alex
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Zunächst Danke für die Antwort. Strategische Fragen zu beantworten ist recht schwierig, da man den konkreten Anwendungsfall in der Regel gar nicht so genau kennt.

Konkret möchte ich z.B. folgendes machen:
- last.fm kennt sogenannte "loved tracks" (z.B. 300 Lieder die man besonders gerne hört)
- diese "loved tracks" sind durch Titel und Künstler definiert (XML-Format)
- ich möchte mir nun eine iTunes-Playlist "lfm-loved" erzeugen
- dies geht natürlich nur für die Tracks, die ich auch in meiner Musiksammlung habe
- es ist also erforderlich einen entsprechenden Resolver zu schreiben
- der Resolver würde zunächst alle meine iTunes-Tracks einlesen
- anschließend würde ich für die vorhandenen Tracks eine Playlist erstellen

Bei z.B. 20.000 Titeln durchaus eine Herausforderung für das Utility.

Was wäre günstiger?
- Eine Kombination "Perl + AppleScript" (wie vorgeschlagen)?
- Eine Lösung nur mit "Perl" (z.B. indem die AppleEvents innerhalb von Perl ausgewertet werden)?
- Eine Lösung nur mit "AppleScript" (ein XML-Addon für AppleScript gibt es wohl)?

Interessieren würde mich eine strategische Beurteilung der verschiedenen Ansätze.

Danke für euer Feedback - Klaus
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Eine Frage, die ich nicht beantworten kann ist, ob Veränderungen an der XML Datei von iTunes auch von iTunes erkannt werden, oder ob Du es über AS machen musst.

Probier das doch mal aus.

Alex
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

ich würde eher davon abraten das XML-File als Grundlage für das Vorhaben zu verwenden.
Egal ob Lesen oder Schreiben (funktioniert auch nicht "korrekt"). Bitte nur mit ApplEvents arbeiten.
Das ist zwar langsamer, aber wesentlich sicherer. Wenn Apple etwas am XML-Format ändert, dann bist zu erst einmal beschäftigt.
Ich habe meine Erfahrung damit durch. AS gewährleistet Dir "immer" die korrekte Funktionalität.

Weiterer Nachteil ist, dass iTunes dann immer dazu geöffnet sein muss.

Für AS brauchst Du keine Erweiterungen um XML-Files verarbeiten zu können.
Das ist in der SystemEvents-Suite bereits alles fertig implementiert.

Viele Grüße
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.512
Verstehe ich das recht, daß du aus einer vorhandenen externen Liste eine Wiedergabeliste in iTunes erstellen willst mit der Schnittmenge aus deinen iTunes-Songs und der externen Liste?
Wäre toll, wenn du die Lösung hinterher veröffentlichst!
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

auf seiner genannten Seite kann Du den bisherigen Stand herunterladen.
Ich vermute, dass er dort die Neuerungen ebenfalls bereitstellen wird.

Finde das auch toll.

Viele Viele Grüße
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Hallo,

bezüglich des XML-Formates habe ich mich vermutlich ungünstig ausgedrückt. Meine eigene Inputdatei (Playlist im XSPF-Format) liegt in einem XML-Format vor. D.h. ich habe nicht vor, die iTunes-interne XML-Datei zu ändern. Hier stimme ich "LittlePixel" vollumfänglich zu: Morgen könnte Apple den Aufbau dieser internen Datei ändern. Deshalb kommt auch für mich nur die "offizielle" Programmierschnittstelle via iTunes-AppleEvents in Frage.

@MacAlzenau:
>Verstehe ich das recht, daß du aus einer vorhandenen externen Liste eine Wiedergabeliste in
>iTunes erstellen willst mit der Schnittmenge aus deinen iTunes-Songs und der externen Liste?
Ja, genau das möchte ich machen. Für iTunes (Win) gibt es dieses Utility bereits.

Da ich leider erst jetzt auf den "richtigen Apfelpfad" gefunden habe, verfüge ich derzeit nicht über ausreichend Erfahrungen, die strategisch "beste" Vorgehensweise auswählen zu können. An diesem Punkt würde ich gerne von euren Erfahrungen profitieren, um nicht aufs "falsche Pferd" zu setzen.

Rein programmtechnisch läßt sich das Vorhaben wie folgt abstrahieren:
- externe XSPF-Playlist einlesen
- alle iTunes-Tracks einlesen
- iTunes-Playlist mit Schnittmenge erstellen

Bezüglich der konkreten Umsetzung sehe ich folgende Möglichkeiten:
- Perl mit AppleEvents
- AppleScript
- Perl + AppleScript (wie vorgeschlagen)

Da ich mich mit Perl bestens auskenne, würde ich zur Variante "Perl mit AppleEvents" tendieren. Einarbeiten müßte ich mich dann "nur" in die iTunes-AppleEvents. Bei der Variante "AppleScript" müßte ich AppleScript lernen, vermutlich aber nicht so tief in die AppleEvents einsteigen. Die Variante "Perl + AppleScript" kann ich eigentlich gar nicht beurteilen.

Was würdet ihr mit raten?

Gruß Klaus

PS: Sobald es ein entsprechendes Utility gibt, würde ich dies natürlich veröffentlichen (auch hier).
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Würde etwas gegen Cocoa/Objective-C sprechen?
Das würde ich Dir nämlich dann im Zusammenhang mit der Scripting Bridge anraten.
... ca. 93459345 ist das schneller als AS.

Leider kann ich Dir aus zeitlichen Gründen keine umfangreiche Hilfe anbieten.
Bei zielgerichteten Fragen hingegen helfe ich Dir aber gerne weiter. Schreibe mir bei Bedarf einfach eine E-Mail.

Mit iTunes unter Mac OS X bin ich einigermaßen vertraut.

bezüglich des XML-Formates habe ich mich vermutlich ungünstig ausgedrückt.
Vermutlich habe ich es falsch verstanden.

Viele Grüße
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Mit Cocoa Objective-C kann man auch wunderbar XML Parsen, sogar mit XQuery und ähnlichem Spass

Alex
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.512
@MacAlzenau:
>Verstehe ich das recht, daß du aus einer vorhandenen externen Liste eine Wiedergabeliste in
>iTunes erstellen willst mit der Schnittmenge aus deinen iTunes-Songs und der externen Liste?
Ja, genau das möchte ich machen. Für iTunes (Win) gibt es dieses Utility bereits.
Na, das müsste sich doch portieren lassen, oder?
Ich bin zu jeder Hilfe bereit. Mangels hochqualifizierter Computerkenntnisse (ewig zurückliegende GFABasic-Kenntnisse nützen ziemlich sicher nichts) und trotz allerallererster Blicke Richtung PERL wird das allerdings wenig nützen, es sei denn, du wohnst in meiner Nähe und ich kann dir durch einfache Hilfsarbeiten wir Straßekehren Zeit verschaffen für das Programmieren....
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Eine technische Portierung des Utilities von iTunes (Win) nach iTunes (Mac) halte ich nicht für möglich. iTunes (Win) verwendet OLE als Interface - iTunes (Mac) hingegen AppleEvents.

Aus Wikipedia:
Object Linking and Embedding (OLE, engl. Objekt-Verknüpfung und -Einbettung) ist ein von Microsoft entwickeltes Objektsystem und Protokoll, das die Zusammenarbeit unterschiedlicher (OLE-fähiger) Applikationen und damit die Erstellung heterogener Verbunddokumente ermöglichen soll.

Auf das Unterstützungsangebot komme ich -sobald es "etwas" zu testen gibt- gerne zurück.
Danke hierfür - Klaus
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Die in diesem Thread diskutierten Utilities für iTunes sind inzwischen verfügbar (Link und Grafik: http://www.easyclasspage.de/lastfm/seite-13.html). Nachfolgend eine kurze Beschreibung:

I have written two AppleScript for iTunes. Both scripts (applets with source) are dealing with XSPF playlists (XSPF is the XML format for sharing playlists).

iTunesMac2xspf (0.1) - This utility exports your current iTunes playlist (can be a smart playlist) to a XSPF file.
Usage: Please select an iTunes playlist and play a track. This marks a playlist as your current playlist. The current playlist will then be saved as XSPF playlist file.

xspf2iTunesMac (0.1) - This utility imports the contents of a XSPF playlist file into a new iTunes playlist (in other words - it acts as a resolver).
Usage: Please load a XSPF playlist file and choose a name for a new iTunes playlist. Every XSPF playlist entry which already exists in your iTunes library will then be duplicated into the new created iTunes playlist.

Both scripts are part of an utility set I have written for better usage of last.fm. But I think they are also useful as standalone utilities. E.g.: If you have VLC media player on your system you could doubleclick a generated XSPF playlist which will then be played directly in VLC.

Vielleicht sind die Utilities ja auch hier für den einen oder anderen nützlich.

Gruß Klaus