By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,034 Members | 1,325 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,034 IT Pros & Developers. It's quick & easy.

Accessing iTunes with Python via the Windows SDK

P: n/a
I've been playing with the iTunes sdk on windows, and have come across
a strange problem. With the following code:

import win32com.client
iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Ap plication")
curr = iTunes.CurrentTrack
name = curr.Name
skipped = curr.SkippedCount
skipdate = curr.SkippedDate
print name
print skipped
print skipdate

I get an error indicating that SkippedCount isn't a valid attribute:

File "C:\bin\skiptest.py", line 5, in <module>
skipped = curr.SkippedCount
File "C:\Python25\Lib\site-packages\win32com\client\__init__.py", line
454, in
__getattr__
raise AttributeError, "'%s' object has no attribute '%s'" %
(repr(self), att
r)
AttributeError: '<win32com.gen_py.iTunes 1.9 Type Library.IITTrack
instance at 0>
x14463944>' object has no attribute 'SkippedCount'
If I comment out the lines referring to SkippedCount and SkippedDate,
it works just fine. As far as I can tell from testing the same code in
VBS, there should be no difference in how SkippedCount is accessed vs.
how Name is accessed. I'm new to Python. Is anyone out there using
iTunes that may have an idea?

Thanks
Den

May 24 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
On May 24, 4:23 pm, Denrael <lear...@gmail.comwrote:
I've been playing with the iTunes sdk on windows, and have come across
a strange problem. With the following code:

import win32com.client
iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Ap plication")
curr = iTunes.CurrentTrack
name = curr.Name
skipped = curr.SkippedCount
[...]
I get an error indicating that SkippedCount isn't a valid attribute:
[...]

The object you get back from iTunes.CurrentTrack (the traceback shows
this) is an IITTrack. If you check the iTunes SDK, you'll see that
IITTrack objects don't have a "SkippedCount" attribute -
IITFileOrCDTrack objects do (from memory, this excludes things like
radio links). You need to conver the IITrack object to a
IITFileOrCDTrack object (assuming that it is one); you can do this
with win32com.client.CastTo, as follows:

"""
import win32com.client
iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Ap plication")
curr = win32com.client.CastTo(iTunes.CurrentTrack, "IITFileOrCDTrack")
name = curr.Name
skipped = curr.SkippedCount
skipdate = curr.SkippedDate
print name
print skipped
print skipdate
"""

Cheers,
Tony

May 24 '07 #2

P: n/a
On May 24, 12:17 am, Tony Meyer <tony.me...@gmail.comwrote:
On May 24, 4:23 pm, Denrael <lear...@gmail.comwrote:I've been playing with the iTunes sdk on windows, and have come across
a strange problem. With the following code:

The object you get back from iTunes.CurrentTrack (the traceback shows
this) is an IITTrack. If you check the iTunes SDK, you'll see that
IITTrack objects don't have a "SkippedCount" attribute -
IITFileOrCDTrack objects do (from memory, this excludes things like
radio links). You need to conver the IITrack object to a
IITFileOrCDTrack object (assuming that it is one); you can do this
with win32com.client.CastTo, as follows:

Cheers,
Tony
Thanks Tony!

I had a suspicion it had to do with casting it, but I was missing some
synapses to figure out exactly how to do that. Things have changed
from my Assembly Language PL/1 and REXX days. :) I figure if I'm
gonna learn a new language, Python's a lot more usable than VBS, and
it has an elegance to it that I already appreciate. I'm working my way
thru Learning Python ... I suppose I better find some doc on the Win32
COM stuff too.

May 24 '07 #3

P: n/a
On May 24, 12:59 am, Denrael <lear...@gmail.comwrote:
On May 24, 12:17 am, Tony Meyer <tony.me...@gmail.comwrote:
On May 24, 4:23 pm, Denrael <lear...@gmail.comwrote:I've been playing with the iTunes sdk on windows, and have come across
a strange problem. With the following code:
The object you get back from iTunes.CurrentTrack (the traceback shows
this) is an IITTrack. If you check the iTunes SDK, you'll see that
IITTrack objects don't have a "SkippedCount" attribute -
IITFileOrCDTrack objects do (from memory, this excludes things like
radio links). You need to conver the IITrack object to a
IITFileOrCDTrack object (assuming that it is one); you can do this
with win32com.client.CastTo, as follows:
Cheers,
Tony

Thanks Tony!

I had a suspicion it had to do with casting it, but I was missing some
synapses to figure out exactly how to do that. Things have changed
from my Assembly Language PL/1 and REXX days. :) I figure if I'm
gonna learn a new language, Python's a lot more usable than VBS, and
it has an elegance to it that I already appreciate. I'm working my way
thru Learning Python ... I suppose I better find some doc on the Win32
COM stuff too.
The best Python docs on win32 in general is "Python Programming on
Win32" by Hammond & Robinson. It has some stuff on Python and COM as
well. I'm sure a win32 COM book would be good too.

Mike

May 24 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.