iTunes Parent für alle Playlists ermitteln (Performance)

Drive4711

Mitglied
Thread Starter
Mitglied seit
18.05.2014
Beiträge
9
Guten Tag,

ich versuche verzweifelt eine Möglichkeit zu finden, um den Parent von iTunes Playlists schneller zu ermitteln.
Anbei mein Skript, was aber bei einer Playlist-Anzahl > 1000 zwischen 30-60 Sekunden dauern kann.

AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
Meine Hoffnung lag in etwa solch einem Befehl, was leider nicht funktioniert, bzw. ich finde einfach keine Möglichkeit direkt alle Parents zu allen Playlists zu ermitteln.
AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
Parent ist kein Textobjekt, das ist mir klar, sondern ein Playlist Objekt.
Aber auch so etwas klappt nicht:
AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.

Vielleicht hat ja jemand eine tolle Idee, um den Parent von allen Playlists möglichst schnell zu ermitteln.

Vielen Dank.
Leon
 

Drive4711

Mitglied
Thread Starter
Mitglied seit
18.05.2014
Beiträge
9
Hallo Olivetti,
erstmal vielen Dank für die Antwort.

Bin mir nicht sicher, ob wir uns missverstehen. Also mein Skript funktioniert schon. Für Playlists, die keinen Parent haben läuft der Versuch bei try endtry in einen Fehler, weil es keinen Vorgänger gibt und plParent bleibt entsprechend "".
Und für alle anderen Playlists, die einen Parent haben, kommt der entsprechende Parent Name zurück.

Beispiel:
Musik
MeinOrdner
Playlist1
Playlist2​
Zuletzt hinzugefügt
Ergebnis:
Musik -> ""
MeinOrdner-> ""
Playlist1 -> "MeinOrdner"
Playlist2 -> "MeinOrdner"
Zuletzt hinzugefügt -> ""

Meine Intension bei dem Post hier ist eher, dass der REPEAT über alle Playlists mit den vielen "Einzelabfragen" für Parent so lange dauert.
Aber natürlich auch nur dann, wenn es wirklich sehr viele Playlists (> 1000) gibt.

Deshalb wollte ich möglichst versuchen, gleich sämtliche Parents (im Beispiel "" und "MeinOrdner") für alle Playlists direkt zu ermitteln, so wie das für die Playlistnamen ja auch funktioniert.
Ein einziger Befehl holt hier ja sofort eine Liste an Playlistnamen, d.h. es ist kein REPEAT notwendig.
AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
Oder als weiteres Beispiel, gleich eine Liste mit allen Namen und Ausprägung Special Kind:
AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
Ich hätte halt so etwas auch für Parent irgendwie erhofft.

Leon
 

Olivetti

Mitglied
Mitglied seit
09.12.2005
Beiträge
11.697
Bin mir nicht sicher, ob wir uns missverstehen.
deswegen ja die nachfrage. :p

nein, du kannst nur klassen mit every abfragen, die auch die property enthalten und parent ist halt nicht überall dabei.
(wobei mir das jetzt selber nicht so ganz einleuchtet, aber anders kenne ich es auch nicht)
 

Drive4711

Mitglied
Thread Starter
Mitglied seit
18.05.2014
Beiträge
9
Oder wer kennt sich denn gut mit Multithreading in Applescript aus? Mein Skript müsste sich ja theoretisch innerhalb des REPEATs auf Multithreading (NSThread) umstellen lassen. Hat hier zufällig jemand Erfahrung?

Also dieses Skript:

AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
 

Drive4711

Mitglied
Thread Starter
Mitglied seit
18.05.2014
Beiträge
9
Hey @little_pixel ,
danke für den Hinweis, aber das gilt nur ab MacOS 10.13 (Sierra). D.h. für alle älteren OS wird das nicht laufen. Brauche auch eine gewisse Kompatibilität :) Und das Thema Signieren spielt dann auch eine Rolle.
Schwierig.
 

kermitd

Mitglied
Mitglied seit
16.02.2006
Beiträge
5.587
Hab das spaßeshalber trotzdem mal in ASObjC umgeschrieben. Eine richtig schnelle Ausführung scheint aber offenbar nur in Objective C gegeben (500 Wiedergabelisten – in beiden Fenstern im Prinzip der gleiche Code ausgeführt). Wenn würde ich es also wahrscheinlich auch direkt in letzterem machen. Oder man muss es einfach noch intelligenter schreiben. Wobei ASObjC da ja auch nur eingeschränkte Möglichkeiten bietet. In purem AppleScript hätte ich jetzt auch keine andere Idee.

AppleScript:
Inhalt nur für registrierte User sichtbar  Logge dich ein oder registriere dich jetzt.
 

Drive4711

Mitglied
Thread Starter
Mitglied seit
18.05.2014
Beiträge
9
@kermitd Vielen Dank für die Mühe. Leider ist das keine Alternative für mich :(

Ich habe jetzt anderweitig versucht die AppleScript Kommandos einzeln per Multithreading abzusetzen.
Sprich eine Anwendung startet bis zu 10 AppleScripts parallel (ein AppleScript holt sozusagen einen Parent zu einer einzigen Playlist).
Nur leider scheint das nicht wirklich mit AppleScript kompatibel zu sein, denn es dauert abhängig von der Anzahl an Listen sogar länger, im Vergleich zu den Einzelläufen (Skripte einzeln nacheinander).
Beispielsweise für 100 Playlists dauert die Einzelverarbeitung rund 9-10 Sekunden. Per 10 Threads parallel dauert es auch 10 Sekunden. Per 2 Threads sogar 11 Sekunden. Bei 50 Threads merkt man, dass AppleScript das nicht mehr bedienen kann, weil innerhalb 1 Sekunde nicht alle Antworten kommen.
 
Oben