2010-05-09 12 views
2

Objective-C를 통해 iTunes를 제어하고 싶습니다 (필자는 OS/X 10.6.3 시스템에 Python appscript을 올바르게 설치할 수 없습니다.). 나는 코코아에 IPC가 애플 이벤트을 기반으로 수집 것과iTunes Apple Events API

는 : 아이튠즈/애플 이벤트 API에

  1. 온라인 문서 : 중 하나가?
  2. Instrospection 메커니즘이 iTunes API를 사용합니까?

나는 AppleScript를 편집기 열기/사전 기능에 대해 알고하지만 난 내가 IPC 호출에 볼 수있는 정보를 번역 하는 방법을 알아낼 수 없습니다.

참고 : 이미 PyObjC를 통해 솔루션을 작업을 시도했지만 주요 기능은 내가 이후 내가 알아낼 수 없습니다을 검색 트랙입니다.

면책 조항 : OS/X 슈퍼 초보자는 여기.

답변

11

Scripting Bridge을 사용해 보았습니까? OS에 내장되어 있으며 PyObjC에서도 작동합니다. Scripting Bridge에서 NSPredicate에 매핑되는 AppleScript (whose clauses)에 검색 기능이 내장되어 있으므로 별개의 검색 API가 없습니다. 당신이 애플 스크립트를 처음 사용하는 경우

>>> from Foundation import * 
>>> from ScriptingBridge import * 
>>> itunes = SBApplication.applicationWithBundleIdentifier_(u"com.apple.itunes") 
>>> tracks = itunes.sources()[0].libraryPlaylists()[0].tracks() 
<SBElementArray @0x468a630: every ITunesTrack of ITunesLibraryPlaylist 0 of ITunesSource 0 of application "iTunes" (157)> 
>>> predicate = NSPredicate.predicateWithFormat_(u'artist == "Pink Floyd"') 
>>> tracks.filteredArrayUsingPredicate_(predicate) 
<SBElementArray @0x457b6c0: ITunesTrack whose 'cmpd'{ 'relo':'= ', 'obj1':'obj '{ 'want':'prop', 'from':'exmn'($$), 'form':'prop', 'seld':'pArt' }, 'obj2':'utxt'("Pink Floyd") } of ITunesLibraryPlaylist 0 of ITunesSource 0 of application "iTunes" (157)> 

또한, 나는 매우 스크립트 디버거의 dictionary explorer을 추천합니다.

+0

와우! 너무 나쁘다 나는 +1 만 받아 들인다! 감사. – jldupont

+0

안녕하세요 jldupont, OS X을 사용하지 마십시오. OS/X ... OS/2가 아닙니다! 내 관련없는 의견에 대해 유감스럽게 생각하지만 저항 할 수 없었습니다. p – Yuji

+2

SB의 장점은 OS에 포함되어 있다는 것입니다. 단점은 AppleScript (또는 appscript)만큼 좋지 않다는 것입니다. 돈을 지불하고 선택을합니다 ... 사실, iTunes는''''''''''''''''''''''''''''''''''''''' 특정 작업에 가장 적합한 작업은 수행하려는 작업에 따라 다릅니다. 예 : ''who' 절 사용하기 :'app ('iTunes'). tracks [its.artist == 'Pink Floyd']. name()'; library_playlists [1] .search (_ = 'Pink Floyd', = k.artists 만 해당)' – has

3

py-appscript에 문제가있는 경우 저자에게 문제 해결을 요청하십시오. 사용중인 Python 설치 정보, Xcode 버전, 문제가 appscript에만 해당되는지 또는 C 확장이 포함 된 타사 모듈 또는 타사 모듈에 영향을 미치는지 여부에 대한 정보를 포함하십시오. 또한 내장 Python이 아닌 python.org 프레임 워크 빌드를 사용하는 경우 옵션 OS X 10.4 SDK가 설치되어 있는지 확인하십시오.

API 문서는 OS X의 AppleScript 편집기 (파일> 열기 사전), appscript의 ASDictionary 또는 다른 타사 AS 편집기를 통해 사용할 수 있습니다. ASDictionary가 설치된 경우 appscript의 기본 제공 help() 메서드를 사용하여 사전을 대화 형으로 찾아 볼 수도 있습니다.

스크립트 가능한 응용 프로그램의 API 문서는 잘 알려지지 않았으므로 일반적으로 AppleScript와 응용 프로그램 스크립팅이 어떻게 작동하는지 잘 이해해야합니다. 애플 자신의 AppleScript Language Guide은 관련된 다양한 기능을 설명하고 있지만 실용화에 대해서는별로 언급하지 않았다. 약간의 현금을 기꺼이 내면 기꺼이 사용할 수있는 여러 권의 책이 있습니다 (면책 조항 : 나는 단지 저 자신을 공동 작성했습니다).

단서를 찾기 위해 온라인 기사, 토론 포럼 및 기존 스크립트를 통해 상당한 양의 파고를 할 것으로 예상됩니다. Doug's AppleScripts for iTunes은 iTunes 스크립트의 훌륭한 소스입니다. 물론 AppleScript로 작성되었지만 대부분 AppleScript 편집기에서 읽을 수 있으므로 좋은 팁이 있습니다. appscript를 사용하는 경우 ASTranslate를 사용하여 AppleScript에서 appscript 구문을 시작점으로 변환 할 수 있습니다 자신의 서면으로.

+0

... 또 다시, 많은 많은 감사합니다! +1 – jldupont