Index: trunk/StreamVision/StreamVision.py
===================================================================
--- trunk/StreamVision/StreamVision.py	(revision 648)
+++ trunk/StreamVision/StreamVision.py	(revision 649)
@@ -13,4 +13,5 @@
 import scrape
 import HotKey
+import tunes # <https://github.com/abarnert/itunesterms>
 
 GROWL_APP_NAME = 'StreamVision'
@@ -77,5 +78,5 @@
     return name
 
-def iTunesApp(): return app(id='com.apple.iTunes')
+def iTunesApp(): return app(id='com.apple.iTunes', terms=tunes)
 def XTensionApp(): return app(creator='SHEx')
 def AmuaApp(): return app('Amua.app')
Index: trunk/StreamVision/tunes.py
===================================================================
--- trunk/StreamVision/tunes.py	(revision 649)
+++ trunk/StreamVision/tunes.py	(revision 649)
@@ -0,0 +1,280 @@
+version = 1.1
+path = '/Applications/iTunes.app'
+
+classes = \
+[('print_settings', 'pset'),
+ ('application', 'capp'),
+ ('artwork', 'cArt'),
+ ('audio_CD_playlist', 'cCDP'),
+ ('audio_CD_track', 'cCDT'),
+ ('browser_window', 'cBrW'),
+ ('device_playlist', 'cDvP'),
+ ('device_track', 'cDvT'),
+ ('encoder', 'cEnc'),
+ ('EQ_preset', 'cEQP'),
+ ('EQ_window', 'cEQW'),
+ ('file_track', 'cFlT'),
+ ('folder_playlist', 'cFoP'),
+ ('item', 'cobj'),
+ ('library_playlist', 'cLiP'),
+ ('playlist', 'cPly'),
+ ('playlist_window', 'cPlW'),
+ ('radio_tuner_playlist', 'cRTP'),
+ ('shared_track', 'cShT'),
+ ('source', 'cSrc'),
+ ('track', 'cTrk'),
+ ('URL_track', 'cURT'),
+ ('user_playlist', 'cUsP'),
+ ('visual', 'cVis'),
+ ('window', 'cwin')]
+
+enums = \
+[('track_listing', 'kTrk'),
+ ('album_listing', 'kAlb'),
+ ('cd_insert', 'kCDi'),
+ ('standard', 'lwst'),
+ ('detailed', 'lwdt'),
+ ('stopped', 'kPSS'),
+ ('playing', 'kPSP'),
+ ('paused', 'kPSp'),
+ ('fast_forwarding', 'kPSF'),
+ ('rewinding', 'kPSR'),
+ ('off', 'kRpO'),
+ ('one', 'kRp1'),
+ ('all', 'kAll'),
+ ('small', 'kVSS'),
+ ('medium', 'kVSM'),
+ ('large', 'kVSL'),
+ ('library', 'kLib'),
+ ('iPod', 'kPod'),
+ ('audio_CD', 'kACD'),
+ ('MP3_CD', 'kMCD'),
+ ('device', 'kDev'),
+ ('radio_tuner', 'kTun'),
+ ('shared_library', 'kShd'),
+ ('unknown', 'kUnk'),
+ ('albums', 'kSrL'),
+ ('artists', 'kSrR'),
+ ('composers', 'kSrC'),
+ ('displayed', 'kSrV'),
+ ('songs', 'kSrS'),
+ ('none', 'kNon'),
+ ('Books', 'kSpA'),
+ ('folder', 'kSpF'),
+ ('Genius', 'kSpG'),
+ ('iTunes_U', 'kSpU'),
+ ('Library', 'kSpL'),
+ ('Movies', 'kSpI'),
+ ('Music', 'kSpZ'),
+ ('Party_Shuffle', 'kSpS'),
+ ('Podcasts', 'kSpP'),
+ ('Purchased_Music', 'kSpM'),
+ ('TV_Shows', 'kSpT'),
+ ('movie', 'kVdM'),
+ ('music_video', 'kVdV'),
+ ('TV_show', 'kVdT'),
+ ('user', 'kRtU'),
+ ('computed', 'kRtC')]
+
+properties = \
+[('copies', 'lwcp'),
+ ('collating', 'lwcl'),
+ ('starting_page', 'lwfp'),
+ ('ending_page', 'lwlp'),
+ ('pages_across', 'lwla'),
+ ('pages_down', 'lwld'),
+ ('error_handling', 'lweh'),
+ ('requested_print_time', 'lwqt'),
+ ('printer_features', 'lwpf'),
+ ('fax_number', 'faxn'),
+ ('target_printer', 'trpr'),
+ ('current_encoder', 'pEnc'),
+ ('current_EQ_preset', 'pEQP'),
+ ('current_playlist', 'pPla'),
+ ('current_stream_title', 'pStT'),
+ ('current_stream_URL', 'pStU'),
+ ('current_track', 'pTrk'),
+ ('current_visual', 'pVis'),
+ ('EQ_enabled', 'pEQ '),
+ ('fixed_indexing', 'pFix'),
+ ('frontmost', 'pisf'),
+ ('full_screen', 'pFSc'),
+ ('name', 'pnam'),
+ ('mute', 'pMut'),
+ ('player_position', 'pPos'),
+ ('player_state', 'pPlS'),
+ ('selection', 'sele'),
+ ('sound_volume', 'pVol'),
+ ('version', 'vers'),
+ ('visuals_enabled', 'pVsE'),
+ ('visual_size', 'pVSz'),
+ ('data', 'pPCT'),
+ ('description', 'pDes'),
+ ('downloaded', 'pDlA'),
+ ('format', 'pFmt'),
+ ('kind', 'pKnd'),
+ ('raw_data', 'pRaw'),
+ ('artist', 'pArt'),
+ ('compilation', 'pAnt'),
+ ('composer', 'pCmp'),
+ ('disc_count', 'pDsC'),
+ ('disc_number', 'pDsN'),
+ ('genre', 'pGen'),
+ ('year', 'pYr '),
+ ('location', 'pLoc'),
+ ('minimized', 'pMin'),
+ ('view', 'pPly'),
+ ('band_1', 'pEQ1'),
+ ('band_2', 'pEQ2'),
+ ('band_3', 'pEQ3'),
+ ('band_4', 'pEQ4'),
+ ('band_5', 'pEQ5'),
+ ('band_6', 'pEQ6'),
+ ('band_7', 'pEQ7'),
+ ('band_8', 'pEQ8'),
+ ('band_9', 'pEQ9'),
+ ('band_10', 'pEQ0'),
+ ('modifiable', 'pMod'),
+ ('preamp', 'pEQA'),
+ ('update_tracks', 'pUTC'),
+ ('container', 'ctnr'),
+ ('id', 'ID  '),
+ ('index', 'pidx'),
+ ('persistent_ID', 'pPIS'),
+ ('duration', 'pDur'),
+ ('parent', 'pPlP'),
+ ('shuffle', 'pShf'),
+ ('size', 'pSiz'),
+ ('song_repeat', 'pRpt'),
+ ('special_kind', 'pSpK'),
+ ('time', 'pTim'),
+ ('visible', 'pvis'),
+ ('capacity', 'capa'),
+ ('free_space', 'frsp'),
+ ('album', 'pAlb'),
+ ('album_artist', 'pAlA'),
+ ('album_rating', 'pAlR'),
+ ('album_rating_kind', 'pARk'),
+ ('bit_rate', 'pBRt'),
+ ('bookmark', 'pBkt'),
+ ('bookmarkable', 'pBkm'),
+ ('bpm', 'pBPM'),
+ ('category', 'pCat'),
+ ('comment', 'pCmt'),
+ ('database_ID', 'pDID'),
+ ('date_added', 'pAdd'),
+ ('enabled', 'enbl'),
+ ('episode_ID', 'pEpD'),
+ ('episode_number', 'pEpN'),
+ ('EQ', 'pEQp'),
+ ('finish', 'pStp'),
+ ('gapless', 'pGpl'),
+ ('grouping', 'pGrp'),
+ ('long_description', 'pLds'),
+ ('lyrics', 'pLyr'),
+ ('modification_date', 'asmo'),
+ ('played_count', 'pPlC'),
+ ('played_date', 'pPlD'),
+ ('podcast', 'pTPc'),
+ ('rating', 'pRte'),
+ ('rating_kind', 'pRtk'),
+ ('release_date', 'pRlD'),
+ ('sample_rate', 'pSRt'),
+ ('season_number', 'pSeN'),
+ ('shufflable', 'pSfa'),
+ ('skipped_count', 'pSkC'),
+ ('skipped_date', 'pSkD'),
+ ('show', 'pShw'),
+ ('sort_album', 'pSAl'),
+ ('sort_artist', 'pSAr'),
+ ('sort_album_artist', 'pSAA'),
+ ('sort_name', 'pSNm'),
+ ('sort_composer', 'pSCm'),
+ ('sort_show', 'pSSN'),
+ ('start', 'pStr'),
+ ('track_count', 'pTrC'),
+ ('track_number', 'pTrN'),
+ ('unplayed', 'pUnp'),
+ ('video_kind', 'pVdK'),
+ ('volume_adjustment', 'pAdj'),
+ ('address', 'pURL'),
+ ('shared', 'pShr'),
+ ('smart', 'pSmt'),
+ ('bounds', 'pbnd'),
+ ('closeable', 'hclb'),
+ ('collapseable', 'pWSh'),
+ ('collapsed', 'wshd'),
+ ('position', 'ppos'),
+ ('resizable', 'prsz'),
+ ('zoomable', 'iszm'),
+ ('zoomed', 'pzum')]
+
+elements = \
+[('artworks', 'cArt'),
+ ('audio_CD_playlists', 'cCDP'),
+ ('audio_CD_tracks', 'cCDT'),
+ ('browser_windows', 'cBrW'),
+ ('device_playlists', 'cDvP'),
+ ('device_tracks', 'cDvT'),
+ ('encoders', 'cEnc'),
+ ('EQ_presets', 'cEQP'),
+ ('EQ_windows', 'cEQW'),
+ ('file_tracks', 'cFlT'),
+ ('folder_playlists', 'cFoP'),
+ ('items', 'cobj'),
+ ('library_playlists', 'cLiP'),
+ ('playlists', 'cPly'),
+ ('playlist_windows', 'cPlW'),
+ ('radio_tuner_playlists', 'cRTP'),
+ ('shared_tracks', 'cShT'),
+ ('sources', 'cSrc'),
+ ('tracks', 'cTrk'),
+ ('URL_tracks', 'cURT'),
+ ('user_playlists', 'cUsP'),
+ ('visuals', 'cVis'),
+ ('windows', 'cwin'),
+ ('application', 'capp'),
+ ('print_settings', 'pset')]
+
+commands = \
+[('set', 'coresetd', [('to', 'data')]),
+ ('exists', 'coredoex', []),
+ ('move', 'coremove', [('to', 'insh')]),
+ ('subscribe', 'hookpSub', []),
+ ('playpause', 'hookPlPs', []),
+ ('download', 'hookDwnl', []),
+ ('close', 'coreclos', []),
+ ('open', 'aevtodoc', []),
+ ('open_location', 'GURLGURL', []),
+ ('quit', 'aevtquit', []),
+ ('pause', 'hookPaus', []),
+ ('make',
+  'corecrel',
+  [('new', 'kocl'), ('at', 'insh'), ('with_properties', 'prdt')]),
+ ('duplicate', 'coreclon', [('to', 'insh')]),
+ ('print_',
+  'aevtpdoc',
+  [('print_dialog', 'pdlg'),
+   ('with_properties', 'prdt'),
+   ('kind', 'pKnd'),
+   ('theme', 'pThm')]),
+ ('add', 'hookAdd ', [('to', 'insh')]),
+ ('rewind', 'hookRwnd', []),
+ ('play', 'hookPlay', [('once', 'POne')]),
+ ('run', 'aevtoapp', []),
+ ('resume', 'hookResu', []),
+ ('updatePodcast', 'hookUpd1', []),
+ ('next_track', 'hookNext', []),
+ ('stop', 'hookStop', []),
+ ('search', 'hookSrch', [('for_', 'pTrm'), ('only', 'pAre')]),
+ ('updateAllPodcasts', 'hookUpdp', []),
+ ('update', 'hookUpdt', []),
+ ('previous_track', 'hookPrev', []),
+ ('fast_forward', 'hookFast', []),
+ ('count', 'corecnte', [('each', 'kocl')]),
+ ('reveal', 'hookRevl', []),
+ ('convert', 'hookConv', []),
+ ('eject', 'hookEjct', []),
+ ('back_track', 'hookBack', []),
+ ('refresh', 'hookRfrs', []),
+ ('delete', 'coredelo', [])]
