import pythoncom, win32com.client, time def main(): print 'attaching to iTunes...' iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application") print 'registering for events...' iTunesEvents = win32com.client.WithEvents(iTunes, ITunesEvents) print "events:" while 1: time.sleep(1) pythoncom.PumpWaitingMessages() if iTunesEvents.quitting: print 'quitting...' del iTunesEvents del iTunes break class ITunesEvents: def __init__(self): self.quitting = False self.disabled = False self.current_track = None def OnPlayerPlayEvent(self, track): self.current_track = win32com.client.CastTo(track, 'IITTrack') print "now playing:", self.current_track.Name, "-", \ self.current_track.Artist, "-", \ self.current_track.Album def OnPlayerStopEvent(self, track): self.current_track = None track = win32com.client.CastTo(track, 'IITTrack') print "stopping:", track.Name, "-", \ track.Artist, "-", \ track.Album def OnQuittingEvent(self): self.quitting = True def OnCOMCallsDisabledEvent(self, reason): self.disabled = True def OnCOMCallsEnabledEvent(self): self.disabled = False def OnDatabaseChangedEvent(self, deletedObjectIDs, changedObjectIDs): pass def OnPlayerPlayingTrackChangedEvent(self, track): pass if __name__ == '__main__': main()