2010-05-02 6 views
5

Ich möchte suchen für Titel in iTunes mit einem Python-Skript auf Mac OS/X. Ich fand einen Weg, um die iTunes-Anwendung für den Zugriff durch:Suche nach einem Titel auf iTunes

iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")

aber ich habe nicht herausgefunden (noch) nicht die Art und Weise Suchen durchführen. Eine kleine Hilfe geschätzt.

Haftungsausschluss: OS/X Neuling hier.

Hinweis: Ich bin nicht auf der Suche nach Möglichkeiten zum direkten Zugriff auf die XML/Plist-Datenbank.

+0

Es ist wahrscheinlich erwähnenswert, dass SBApplication von PyObjC ist. Sie können möglicherweise über das Applescript-Wörterbuch von iTunes schauen, um zu sehen, welche Befehle verfügbar sind, und über diese Brücke auf die Syntax zugreifen: http://pyobjc.sourceforge.net/documentation/pyobjc-framework-ScriptingBridge/api-notes-ScriptingBridge. html Mehr hier: http://pyobjc.sourceforge.net/documentation/pyobjc-core/tutorial_embed/index.html –

+1

Und Suchsyntax hier: http://www.devdaily.com/blog/post/mac-os- x/search-for-song-in-itunes-library-using-applescript –

Antwort

4

Sie möchten vielleicht appscript (beachten Sie, Sie brauchen ASDictionary für Online-Hilfe):

>>> import appscript 
>>> iTunes = appscript.app("iTunes") 
>>> lib = iTunes.playlists['Library'] 
>>> for trk in lib.tracks(): 
...  if re.search("test", trk.name()): 
...   print trk.name() 

Dies könnte Ihnen die beste Kontrolle von über jedes Element laufen, aber es gibt eine viel schneller zu Art und Weise, von Apple Haken mit der Suche zu tun:

>>> trks = lib.tracks[appscript.its.name.contains('test')] 
>>> print trks.name() 

Schauen Sie sich diese appscript usage examples out sowie .

+0

Cool! Danke vielmals! +1 – jldupont

+0

kein Problem. Ich habe die objc-Antwort, die etwas früher erwähnt wurde, nicht bemerkt, aber ich vermute, dass dies eine clientere API für den Zugriff auf skriptfähige Anwendungen bereitstellen könnte. Die Dokumente sind ein wenig spärlich, aber sobald Sie sich Gedanken darüber machen, wie appscript strukturiert ist, ist es nicht schwer, sich ein AppleScript-Beispiel anzusehen und zu übersetzen, wie man es mit appscript machen würde. –

0

Es könnte sinnlose Antwort sein, aber ich würde Ihnen raten, AppleScript anstelle von Python zu verwenden. Werfen Sie einen Blick auf diesem Stück Code: http://macscripter.net/viewtopic.php?id=25631

+0

Danke, aber ich bleibe lieber bei Python. – jldupont

+0

und Python mit SBApplication verwendet die gleichen Aufrufe Applescript macht, so ist es nur eine andere Syntax – Mark

0

Was Sie denken:

tell application "iTunes" 
repeat with bTrack in (every track of playlist 7 whose artist contains "Golden") 
... 

Perfekt Tutorials hier gefunden werden könnten


script = '''tell application "iTunes" 
    repeat with bTrack in (every track of playlist 7 whose artist contains "Golden") 
    print bTrack 
    end repeat 
end tell''' 
tracks,_ = subprocess.Popen("osascript -e %s" % script, stdout=subprocess.PIPE).communicate() 
trackList = tracks.split('\n') 

ich dies nie getestet, obwohl .. ..