X-Git-Url: http://git.maemo.org/git/?p=gigfinder;a=blobdiff_plain;f=events.py;fp=events.py;h=13d8b21e1aa014b1ee6ba405f9437dc6058eabff;hp=0000000000000000000000000000000000000000;hb=85096f8ba72bb39c7a959b1b6c45cb4db4b546a6;hpb=dc8bb486378d2359045c162c53293a2cbba2575a diff --git a/events.py b/events.py new file mode 100644 index 0000000..13d8b21 --- /dev/null +++ b/events.py @@ -0,0 +1,61 @@ +import urllib +import urllib2 + +from resultsparser import EventParser + +class Events: + def __init__(self): + self.api_key = '1928a14bdf51369505530949d8b7e1ee' + self.url_base = 'http://ws.audioscrobbler.com/2.0/' + self.format = 'json' + self.method = 'geo.getevents' + self.parser = EventParser() + + def get_events(self, lat, long, distance): + """ Retrieve xml and parse into events list """ + xml = self.get_xml(lat, long, distance) + events = self.parser.parse_xml(xml, + lat, + long) + return self.sort_events(events) + + def sort_events(self, events): + """ Sort gig by distance """ + if len(events) > 1: + events.sort(cmp=self.distance_cmp, key=lambda x: x['distance']) + return events + + def get_json(self, lat='', long='', distance=''): + # testing json results + lat = '51.5174' + long = '-0.0829' + distance = '10' + params = urllib.urlencode({'method': self.method, + 'api_key': self.api_key, + 'distance': distance, + 'long': long, + 'lat': lat, + 'format': self.format}) + url = '%s?%s' % (self.url_base, params) + request = urllib2.Request(url, None) + response = urllib2.urlopen(request) + return response + + def get_xml(self, lat, long, distance): + """ Return xml from lastfm """ + params = urllib.urlencode({'method': self.method, + 'api_key': self.api_key, + 'distance': distance, + 'long': long, + 'lat': lat}) + response = urllib.urlopen(self.url_base, params) + return response.read() + + def distance_cmp(self, x, y): + """ Compare distances for list sort """ + if x > y: + return 1 + elif x == y: + return 0 + else: + return -1