1 from xml.dom.minidom import parseString
2 from datetime import datetime, date
7 def parse_json(json, lat, long):
8 """ Parse json into usable format """
11 def parse_xml(xml, lat, long):
12 """ Parse xml into a dict """
15 dom = parseString(xml)
17 events = dom.getElementsByTagName('event')
19 start_date = parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data)
20 if start_date.date() == today:
21 title = event.getElementsByTagName('title')[0].childNodes[0].data
23 artists_element = event.getElementsByTagName('artists')[0]
25 for artist in artists_element.getElementsByTagName('artist'):
26 artist_list.append(artist.childNodes[0].data)
27 artists = ', '.join(artist_list)
29 venue_details = event.getElementsByTagName('venue')[0]
30 venue_name = venue_details.getElementsByTagName('name')[0].childNodes[0].data
31 address = get_address(venue_details.getElementsByTagName('location')[0])
32 geo_data = venue_details.getElementsByTagName('geo:point')[0]
33 venue_lat = geo_data.getElementsByTagName('geo:lat')[0].childNodes[0].data
34 venue_long = geo_data.getElementsByTagName('geo:long')[0].childNodes[0].data
35 distance = location.distance_between(float(lat),
40 events_list.append({'title': title,
48 def get_address(location):
49 """ Return the venues address details from the xml element """
54 if location.getElementsByTagName('street')[0].childNodes:
55 street = location.getElementsByTagName('street')[0].childNodes[0].data
56 if location.getElementsByTagName('city')[0].childNodes:
57 city = location.getElementsByTagName('city')[0].childNodes[0].data
58 if location.getElementsByTagName('country')[0].childNodes:
59 country = location.getElementsByTagName('country')[0].childNodes[0].data
60 if location.getElementsByTagName('postalcode')[0].childNodes:
61 postalcode = location.getElementsByTagName('postalcode')[0].childNodes[0].data
62 return '\n'.join([street, city, country, postalcode])
64 def parse_date(date_string):
65 """ Parse date string into datetime object """
66 fmt = "%a, %d %b %Y %H:%M:%S"
67 result = time.strptime(date_string, fmt)
68 return datetime(result.tm_year,