1 from xml.dom.minidom import parseString
2 from datetime import datetime, date
8 """ Parse xml into a dict """
11 dom = parseString(xml)
13 events = dom.getElementsByTagName('event')
15 title = event.getElementsByTagName('title')[0].childNodes[0].data
17 artists_element = event.getElementsByTagName('artists')[0]
19 for artist in artists_element.getElementsByTagName('artist'):
20 artist_list.append(artist.childNodes[0].data)
21 artists = ', '.join(artist_list)
23 venue = event.getElementsByTagName('venue')[0].getElementsByTagName('name')[0].childNodes[0].data
24 start_date = parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data)
25 events_list.append({'title': title,
31 def parse_date(date_string):
32 fmt = "%a, %d %b %Y %H:%M:%S"
33 result = time.strptime(date_string, fmt)
34 return datetime(result.tm_year,
42 # TODO: Add code to retrieve location and data from lastfm
43 return open('response.xml', 'r').read()
45 def create_table(events):
46 table = gtk.Table(columns=1)
47 table.set_row_spacings(10)
48 table.set_col_spacings(10)
53 button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
54 hildon.BUTTON_ARRANGEMENT_VERTICAL)
55 button.set_text(event['title'], "")
56 button.connect("clicked", show_details, event)
57 table.attach(button, 0, 1, pos, pos+1)
61 def show_details(widget, data):
62 win = hildon.StackableWindow()
63 win.set_title(data['title'])
68 scroll = hildon.PannableArea()
69 win.vbox.pack_start(scroll, True, True, 0)
71 view = hildon.TextView()
72 view.set_editable(False)
73 view.unset_flags(gtk.CAN_FOCUS)
74 view.set_wrap_mode(gtk.WRAP_WORD)
75 buffer = view.get_buffer()
76 end = buffer.get_end_iter()
77 buffer.insert(end, '%s\n' % data['title'])
78 buffer.insert(end, 'Artists: %s\n' % data['artists'])
79 buffer.insert(end, 'Venue: %s\n' % data['venue'])
80 buffer.insert(end, 'When: %s\n' % data['date'].strftime('%H:%M'))
81 buffer.insert(end, '\n')
82 scroll.add_with_viewport(view)
87 program = hildon.Program.get_instance()
88 win = hildon.StackableWindow()
89 win.set_title('Gig Finder')
90 win.connect("destroy", gtk.main_quit, None)
92 pannable_area = hildon.PannableArea()
95 events = parse_xml(xml)
97 table = create_table(events)
98 pannable_area.add_with_viewport(table)
100 win.add(pannable_area)
104 if __name__ == "__main__":