是否有任何從iTunes中捕獲事件的良好解決方案?iTunes插件編程:攔截事件
我想建立一個插件,它位於iTunes內部,對特定歌曲的評分變化做出反應。對於Windows他們有一個我還沒有研究過的SDK,但我想爲Mac找到一些東西。
有什麼建議嗎?
是否有任何從iTunes中捕獲事件的良好解決方案?iTunes插件編程:攔截事件
我想建立一個插件,它位於iTunes內部,對特定歌曲的評分變化做出反應。對於Windows他們有一個我還沒有研究過的SDK,但我想爲Mac找到一些東西。
有什麼建議嗎?
據我所知,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)]
但是請注意,改變收視率似乎並沒有影響到修改日期。
Mac iTunes發佈了關於音軌更改和其他一些重要興趣事件的分發通知。不過,我懷疑它會發送通知,以便對跟蹤信息進行微小更改。作爲德說,iTunes的插件支持僅限於可視化工具,讓你的其他選擇是:
定期地從外部進行查詢,但是那將既花費你和iTunes,如果用戶的播放列表是大
也許考慮使用預製的UI操作來據爲己有到iTunes的UI組件,並觸發的AppleScript
看到,如果你可以將一個FSEvent通知到iTunes Music Library.xml文件的iTunes保持在用戶的音樂庫夾。假設iTunes在設置更改時立即更新該文件,您可能可以從中瞭解自上次以來發生了哪些變化。
其中沒有一個是理想的,但你說的是那種基於插件的可擴展性是真的之間的Mac應用程序相當罕見,所以你可能會不得不雜牌它這種或那種方式,或者重新考慮你的需求。