X-Git-Url: http://git.maemo.org/git/?p=gigfinder;a=blobdiff_plain;f=src%2Fopt%2Fgigfinder%2Fevents.py;h=390ccaeaaedd9a15fe6293b426005269b6b5bdd7;hp=1e2abd7ed684fc916895f9910d97b8eed89c16fd;hb=cbc998e09ef123ff713c59b76ca37b00a2487bee;hpb=69662219a729a4e95f5c0bd7e653290f221ab12e diff --git a/src/opt/gigfinder/events.py b/src/opt/gigfinder/events.py index 1e2abd7..390ccae 100644 --- a/src/opt/gigfinder/events.py +++ b/src/opt/gigfinder/events.py @@ -1,7 +1,32 @@ import urllib import urllib2 -from resultsparser import parse_xml +import location + +from resultsparser import parse_json + +class Event: + def __init__(self, + title, + venue_name, + address, + lng, + lat, + artists, + start_date): + self.title = title + self.venue_name = venue_name + self.address = address + self.lng = lng + self.lat = lat + self.artists = artists + self.start_date = start_date + + def get_distance_from(self, lng, lat): + return location.distance_between(float(lat), + float(lng), + float(self.lat), + float(self.lng)) class Events: def __init__(self): @@ -11,26 +36,26 @@ class Events: self.method = 'geo.getevents' def get_events(self, lat, lng, distance): - """ Retrieve xml and parse into events list """ + """ Retrieve json and parse into events list """ events = [] - for page in ['1', '2', '3']: - xml = self.get_xml(lat, lng, distance, page=page) - events.extend(parse_xml(xml, - lat, - lng)) - return self.sort_events(events) - - def sort_events(self, events): + result = self.get_json(lat, lng, distance) + for event in parse_json(result): + events.append(Event(event[0], + event[1], + event[2], + event[3], + event[4], + event[5], + event[6])) + return self.sort_events(events, lat, lng) + + def sort_events(self, events, lat, lng): """ Sort gig by distance """ if len(events) > 1: - events.sort(cmp=self.distance_cmp, key=lambda x: x['distance']) + events.sort(cmp=self.distance_cmp, key=lambda x: x.get_distance_from(lng, lat)) return events def get_json(self, lat='', lng='', distance=''): - # testing json results - lat = '51.5174' - lng = '-0.0829' - distance = '10' params = urllib.urlencode({'method': self.method, 'api_key': self.api_key, 'distance': distance, @@ -40,19 +65,8 @@ class Events: url = '%s?%s' % (self.url_base, params) request = urllib2.Request(url, None) response = urllib2.urlopen(request) - return response - - def get_xml(self, lat, lng, distance, page='1'): - """ Return xml from lastfm """ - params = urllib.urlencode({'method': self.method, - 'api_key': self.api_key, - 'distance': distance, - 'long': lng, - 'lat': lat, - 'page': page}) - response = urllib.urlopen(self.url_base, params) return response.read() - + def distance_cmp(self, x, y): """ Compare distances for list sort """ if x > y: