Accessing iTunes with Python via the Windows SDK

D

Denrael

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.Application")
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
 
T

Tony Meyer

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.Application")
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.Application")
curr = win32com.client.CastTo(iTunes.CurrentTrack, "IITFileOrCDTrack")
name = curr.Name
skipped = curr.SkippedCount
skipdate = curr.SkippedDate
print name
print skipped
print skipdate
"""

Cheers,
Tony
 
D

Denrael

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.
 
K

kyosohma

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top