Initial commit
[gigfinder] / gig_finder.py
1 from xml.dom.minidom import parseString
2 from datetime import datetime, date
3 import time
4
5 def parse_xml(xml):
6     """ Parse xml into a dict """
7     events_list = []
8     today = date.today()
9     dom = parseString(xml)
10
11     events = dom.getElementsByTagName('event')
12     for event in events:
13         title = event.getElementsByTagName('title')[0].childNodes[0].data
14         
15         artists_element = event.getElementsByTagName('artists')[0]
16         artist_list = []
17         for artist in artists_element.getElementsByTagName('artist'):
18             artist_list.append(artist.childNodes[0].data)
19         artists = ', '.join(artist_list)
20
21         venue = event.getElementsByTagName('venue')[0].getElementsByTagName('name')[0].childNodes[0].data
22         start_date = parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data)
23         events_list.append({'title': title,
24                             'venue': venue,
25                             'artists': artists,
26                             'date': start_date})
27     return events_list
28
29 def parse_date(date_string):
30     fmt =  "%a, %d %b %Y %H:%M:%S"
31     result = time.strptime(date_string, fmt)
32     return datetime(result.tm_year, 
33                     result.tm_mon, 
34                     result.tm_mday, 
35                     result.tm_hour, 
36                     result.tm_min, 
37                     result.tm_sec)
38
39 def get_xml():
40     return open('response.xml', 'r').read()
41
42 def main():
43     xml = get_xml()
44     events = parse_xml(xml)
45     print events
46
47 if __name__ == "__main__":
48     main()