#!/usr/bin/python # -*- coding: utf-8 -*- from appscript import * from aem import AEEnum import sys import time def iTunes_main_pane(): return app(u'System Events').application_processes[u'iTunes'].windows[u'iTunes'].splitter_groups[1].scroll_areas[1] def wait_for_podcast_update(iTunes): # show 'Podcasts' iTunes.playlists[its.special_kind == AEEnum('kSpP')].reveal() podcast_status = iTunes_main_pane().outlines[1].rows.static_texts[1].value while any(status in (u'downloading', u'queued for download') for status in podcast_status.get()): time.sleep(0.5) def wait_for_iPod_update(iTunes): # show iPod iTunes.sources[its.kind == AEEnum('kPod')].sources[1].library_playlists[1].reveal() sync_enabled = iTunes_main_pane().buttons[u'Sync'].enabled while True: try: if sync_enabled.get() == True: return except CommandError: pass time.sleep(0.5) if __name__ == '__main__': iTunes = app('iTunes') print >> sys.stderr, 'Starting podcast update...' iTunes.updateAllPodcasts() print >> sys.stderr, 'Synchronizing iPod...' iTunes.update() wait_for_iPod_update(iTunes) print >> sys.stderr, 'Updating podcasts...' iTunes.updateAllPodcasts() wait_for_podcast_update(iTunes) print >> sys.stderr, 'Synchronizing iPod...' iTunes.update() wait_for_iPod_update(iTunes) app(id='net.sabi.UpdatePodcasts').quit()