1 from xml.dom.minidom import parseString
2 from datetime import datetime, date
8 from events import Event
10 def parse_json(json, lat, lng):
11 """ Parse json into usable format """
15 events = json['events']['event']
17 venue_location = event['venue']['location']
18 address = '\n'.join([venue_location['street'],
19 venue_location['city'],
20 venue_location['country'],
21 venue_location['postalcode']])
22 venue_geo = venue_location['geo:point']
23 if type(event['artists']['artist']) == list:
24 artist = '\n'.join(event['artists']['artist'])
26 artist = event['artists']['artist']
28 event_obj = Event(event['title'],
29 event['venue']['name'],
31 venue_geo['geo:long'],
34 parse_date(event['startDate']))
35 event_list.append(event_obj)
39 def parse_xml(xml, lat, lng):
40 """ Parse xml into a dict """
43 dom = parseString(xml)
45 events = dom.getElementsByTagName('event')
47 start_date = parse_date(event.getElementsByTagName('startDate')[0]\
49 if start_date.date() == today:
50 title = event.getElementsByTagName('title')[0].childNodes[0].data
52 artists_element = event.getElementsByTagName('artists')[0]
54 for artist in artists_element.getElementsByTagName('artist'):
55 artist_list.append(artist.childNodes[0].data)
56 artists = ', '.join(artist_list)
58 v_details = event.getElementsByTagName('venue')[0]
59 venue_name = v_details.getElementsByTagName('name')[0]\
61 address = get_address(v_details.getElementsByTagName('location')[0])
62 geo_data = v_details.getElementsByTagName('geo:point')[0]
63 venue_lat = geo_data.getElementsByTagName('geo:lat')[0]\
65 venue_long = geo_data.getElementsByTagName('geo:long')[0]\
67 distance = location.distance_between(float(lat),
72 events_list.append({'title': title,
80 def get_address(location_element):
81 """ Return the venues address details from the xml element """
86 if location_element.getElementsByTagName('street')[0].childNodes:
87 street = location_element.getElementsByTagName('street')[0]\
89 if location_element.getElementsByTagName('city')[0].childNodes:
90 city = location_element.getElementsByTagName('city')[0]\
92 if location_element.getElementsByTagName('country')[0].childNodes:
93 country = location_element.getElementsByTagName('country')[0]\
95 if location_element.getElementsByTagName('postalcode')[0].childNodes:
96 postalcode = location_element.getElementsByTagName('postalcode')[0]\
98 return '\n'.join([street, city, country, postalcode])
100 def parse_date(date_string):
101 """ Parse date string into datetime object """
102 fmt = "%a, %d %b %Y %H:%M:%S"
103 result = time.strptime(date_string, fmt)
104 return datetime(result.tm_year,