2013-05-10 51 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 ...我认为它更容易,但我不知道任何细节。)