2009-11-16 93 views
3

是否有任何從iTunes中捕獲事件的良好解決方案?iTunes插件編程:攔截事件

我想建立一個插件,它位於iTunes內部,對特定歌曲的評分變化做出反應。對於Windows他們有一個我還沒有研究過的SDK,但我想爲Mac找到一些東西。

有什麼建議嗎?

回答

2

據我所知,Apple爲0123x提供免費(如零成本)SDK適用於OS X和Windows的可視插件。如果你通過它不能得到你需要的東西,你可以使用iTunes Apple的腳本界面通過使用OSA兼容界面(如AppleScript或Python,Ruby或Objective)的另一個OS X應用程序進行輪詢來監控iTunes 38388 -C。這可能不是你想要的,但它被記錄和支持。

例如,PY-appscript,這裏是如何訪問當前曲目,並在最近播放SmartList的的那些:

>>> from appscript import * 
>>> it = app('iTunes') 
>>> it.current_track.rating() # 40 == 2 stars 
40 
>>> len(it.playlists['Recently Played'].tracks()) 
80 
>>> it.playlists['Recently Played'].tracks[1].rating() 
40 
>>> it.playlists['Recently Played'].tracks[1].rating.set(to=100) 
>>> it.playlists['Recently Played'].tracks[1].rating() # 100 = 5 stars 
100 

它也可以對各種元數據字段進行過濾(開iTunes.app在AppleScript腳本編輯器腳本定義瀏覽):

>>> import datetime 
>>> an_hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1) 
>>> it.playlists['Library'].tracks[its.modification_date >= an_hour_ago]() 
[app(u'/Applications/iTunes.app').sources.ID(45).library_playlists.ID(49347).file_tracks.ID(72017)] 

但是請注意,改變收視率似乎並沒有影響到修改日期。

0

Mac iTunes發佈了關於音軌更改和其他一些重要興趣事件的分發通知。不過,我懷疑它會發送通知,以便對跟蹤信息進行微小更改。作爲德說,iTunes的插件支持僅限於可視化工具,讓你的其他選擇是:

  1. 定期地從外部進行查詢,但是那將既花費你和iTunes,如果用戶的播放列表是大

  2. 也許考慮使用預製的UI操作來據爲己有到iTunes的UI組件,並觸發的AppleScript

  3. 看到,如果你可以將一個FSEvent通知到iTunes Music Library.xml文件的iTunes保持在用戶的音樂庫夾。假設iTunes在設置更改時立即更新該文件,您可能可以從中瞭解自上次以來發生了哪些變化。

其中沒有一個是理想的,但你說的是那種基於插件的可擴展性是真的之間的Mac應用程序相當罕見,所以你可能會不得不雜牌它這種或那種方式,或者重新考慮你的需求。