2013-05-10 53 views
0

基本上,標題所說的是什麼。我的電腦使用VAC在Teamspeak中播放itunes歌曲,但是我希望它也可以將歌曲名稱和藝術家以及可能的專輯輸入聊天內容中,我想在Windows上,特別是Windows 7上做到這一點。如果這可以在Python中完成,我寧願看到這是幾乎所有我知道的語言。如果它已經完成/可以很容易地用任何其他語言完成,我可以接受任何其他語言。從iTunes獲取當前播放歌曲並自動輸入TeamSpeak聊天

編輯:當我運行代碼abarnert給,我得到這個錯誤。

Traceback (most recent call last): 
File "C:\Users\Grant\Documents\AllDerProgramming\ItunesStuffz.py", line 2, in <module> 
itunes = win32com.client.Dispatch("iTunes") 
File "C:\Python33\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch 
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx) 
File "C:\Python33\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName 
return (_GetGoodDispatch(IDispatch, clsctx), userName) 
File "C:\Python33\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch 
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch) 
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None) 

回答

1

這可能不是你想要做什麼,但如果VAC沒有任何方法來訪問這些信息,您可能沒有任何其他選擇,所以:

你可以得到通過使用其COM接口從iTunes中獲取正在播放的信息。

首先,您必須install the SDK,這可能需要(免費)developer.apple.com會員資格。

接下來,您需要一些方法來與來自Python的COM服務交談。最簡單的可能性是(a)使用Python for Windows extensions中的COM綁定/綁定生成器,或者(b)使用IronPython而不是CPython,它可以像其他.NET語言一樣進行COM互操作。

最後,您需要編寫代碼以從COM接口獲取所需的信息。

如果你google了一下,你可以找到一些示例代碼,然後通過閱讀文檔(在一個名爲「iTunes COM Interface.chm」的文件中找到想要從iTunes中獲得什麼的細節。 SDK)。但僞應該是這個樣子:

itunes = win32com.client.Dispatch("iTunes") 
track = itunes.CurrentTrack() 
return track.Name(), track.Artist(), track.Album() 

我不知道如何將其輸入到一個TeamSpeak聊天,但在這一點上,你剛剛得到了三根弦,我假設你知道如何處理他們。


如果您希望每當iTunes的開始,而不是手動觸發一個新的歌曲,這自動發生,看看_IiTunesEvents.OnPlayerPlayEvent。當這個火災發生時,它會給你一個IITTrack對象,就像你從呼叫CurrentTrack回來。唯一困難的部分是註冊來自Python的COM事件,pywin32有教程。 (如果您選擇使用IronPython/.NET ...我認爲它更容易,但我不知道任何細節。)