source: trunk/Update Podcasts/update_podcasts.py@ 629

Last change on this file since 629 was 629, checked in by Nicholas Riley, 14 years ago

If iPod update fails, don't retry infinitely.

File size: 1.7 KB
Line 
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4from appscript import *
5from aem import AEEnum
6import sys
7import time
8
9def iTunes_main_pane():
10 return app(u'System Events').application_processes[u'iTunes'].windows[u'iTunes'].splitter_groups[1].scroll_areas[1]
11
12def wait_for_podcast_update(iTunes):
13 # show 'Podcasts'
14 iTunes.playlists[its.special_kind == AEEnum('kSpP')].reveal()
15 podcast_status = iTunes_main_pane().outlines[1].rows.static_texts[1].value
16 while any(status in (u'downloading', u'queued for download')
17 for status in podcast_status.get()):
18 time.sleep(0.5)
19
20def sync_iPod(iTunes):
21 try:
22 iTunes.update()
23 except CommandError:
24 print >> sys.stderr, 'No iPod detected. Waiting for iPod...'
25 while True:
26 time.sleep(0.5)
27 try:
28 iTunes.update()
29 return
30 except CommandError:
31 pass
32
33 # show iPod
34 iTunes.sources[its.kind == AEEnum('kPod')].sources[1].library_playlists[1].reveal()
35
36 # wait for update to complete
37 sync_enabled = iTunes_main_pane().buttons[u'Sync'].enabled
38 while True:
39 time.sleep(0.5)
40 try:
41 if sync_enabled.get() == True:
42 return
43 except CommandError:
44 pass
45
46if __name__ == '__main__':
47 iTunes = app('iTunes')
48 print >> sys.stderr, 'Starting podcast update...'
49 iTunes.updateAllPodcasts()
50 print >> sys.stderr, 'Synchronizing iPod...'
51 sync_iPod(iTunes)
52 print >> sys.stderr, 'Updating podcasts...'
53 iTunes.updateAllPodcasts()
54 wait_for_podcast_update(iTunes)
55 print >> sys.stderr, 'Synchronizing iPod...'
56 sync_iPod(iTunes)
57 app(id='net.sabi.UpdatePodcasts').quit()
Note: See TracBrowser for help on using the repository browser.