self.format = 'json'
self.method = 'geo.getevents'
- def get_events(self, lat, long, distance):
+ def get_events(self, lat, lng, distance):
""" Retrieve xml and parse into events list """
- xml = self.get_xml(lat, long, distance)
+ xml = self.get_xml(lat, lng, distance)
events = parse_xml(xml,
lat,
- long)
+ lng)
return self.sort_events(events)
def sort_events(self, events):
events.sort(cmp=self.distance_cmp, key=lambda x: x['distance'])
return events
- def get_json(self, lat='', long='', distance=''):
+ def get_json(self, lat='', lng='', distance=''):
# testing json results
lat = '51.5174'
- long = '-0.0829'
+ lng = '-0.0829'
distance = '10'
params = urllib.urlencode({'method': self.method,
'api_key': self.api_key,
'distance': distance,
- 'long': long,
+ 'long': lng,
'lat': lat,
'format': self.format})
url = '%s?%s' % (self.url_base, params)
response = urllib2.urlopen(request)
return response
- def get_xml(self, lat, long, distance):
+ def get_xml(self, lat, lng, distance):
""" Return xml from lastfm """
params = urllib.urlencode({'method': self.method,
'api_key': self.api_key,
'distance': distance,
- 'long': long,
+ 'long': lng,
'lat': lat})
response = urllib.urlopen(self.url_base, params)
return response.read()
import location
-def parse_json(json, lat, long):
+def parse_json(json, lat, lng):
""" Parse json into usable format """
pass
-def parse_xml(xml, lat, long):
+def parse_xml(xml, lat, lng):
""" Parse xml into a dict """
events_list = []
today = date.today()
events = dom.getElementsByTagName('event')
for event in events:
- start_date = parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data)
+ start_date = parse_date(event.getElementsByTagName('startDate')[0]\
+ .childNodes[0].data)
if start_date.date() == today:
title = event.getElementsByTagName('title')[0].childNodes[0].data
artist_list.append(artist.childNodes[0].data)
artists = ', '.join(artist_list)
- venue_details = event.getElementsByTagName('venue')[0]
- venue_name = venue_details.getElementsByTagName('name')[0].childNodes[0].data
- address = get_address(venue_details.getElementsByTagName('location')[0])
- geo_data = venue_details.getElementsByTagName('geo:point')[0]
- venue_lat = geo_data.getElementsByTagName('geo:lat')[0].childNodes[0].data
- venue_long = geo_data.getElementsByTagName('geo:long')[0].childNodes[0].data
+ v_details = event.getElementsByTagName('venue')[0]
+ venue_name = v_details.getElementsByTagName('name')[0]\
+ .childNodes[0].data
+ address = get_address(v_details.getElementsByTagName('location')[0])
+ geo_data = v_details.getElementsByTagName('geo:point')[0]
+ venue_lat = geo_data.getElementsByTagName('geo:lat')[0]\
+ .childNodes[0].data
+ venue_long = geo_data.getElementsByTagName('geo:long')[0]\
+ .childNodes[0].data
distance = location.distance_between(float(lat),
- float(long),
+ float(lng),
float(venue_lat),
float(venue_long))
'date': start_date})
return events_list
-def get_address(location):
+def get_address(location_element):
""" Return the venues address details from the xml element """
street = ''
city = ''
country = ''
postalcode = ''
- if location.getElementsByTagName('street')[0].childNodes:
- street = location.getElementsByTagName('street')[0].childNodes[0].data
- if location.getElementsByTagName('city')[0].childNodes:
- city = location.getElementsByTagName('city')[0].childNodes[0].data
- if location.getElementsByTagName('country')[0].childNodes:
- country = location.getElementsByTagName('country')[0].childNodes[0].data
- if location.getElementsByTagName('postalcode')[0].childNodes:
- postalcode = location.getElementsByTagName('postalcode')[0].childNodes[0].data
+ if location_element.getElementsByTagName('street')[0].childNodes:
+ street = location_element.getElementsByTagName('street')[0]\
+ .childNodes[0].data
+ if location_element.getElementsByTagName('city')[0].childNodes:
+ city = location_element.getElementsByTagName('city')[0]\
+ .childNodes[0].data
+ if location_element.getElementsByTagName('country')[0].childNodes:
+ country = location_element.getElementsByTagName('country')[0]\
+ .childNodes[0].data
+ if location_element.getElementsByTagName('postalcode')[0].childNodes:
+ postalcode = location_element.getElementsByTagName('postalcode')[0]\
+ .childNodes[0].data
return '\n'.join([street, city, country, postalcode])
def parse_date(date_string):