From: Jon Date: Mon, 12 Apr 2010 22:22:06 +0000 (+0100) Subject: No need for parser to be a class X-Git-Url: http://git.maemo.org/git/?p=gigfinder;a=commitdiff_plain;h=7d0f8d93b8c9424d53e200fb2cfb3831df582616 No need for parser to be a class --- diff --git a/events.py b/events.py index 37faf62..e6e4f2c 100644 --- a/events.py +++ b/events.py @@ -1,7 +1,7 @@ import urllib import urllib2 -from resultsparser import EventParser +from resultsparser import parse_xml class Events: def __init__(self): @@ -13,9 +13,9 @@ class Events: def get_events(self, lat, long, distance): """ Retrieve xml and parse into events list """ xml = self.get_xml(lat, long, distance) - events = EventParser().parse_xml(xml, - lat, - long) + events = parse_xml(xml, + lat, + long) return self.sort_events(events) def sort_events(self, events): diff --git a/gigfinder.py b/gigfinder.py index ea594d5..b6f5b7c 100755 --- a/gigfinder.py +++ b/gigfinder.py @@ -20,7 +20,6 @@ import thread from locator import LocationUpdater from events import Events -from resultsparser import EventParser gtk.gdk.threads_init() @@ -36,7 +35,6 @@ class GigFinder: self.long = None self.distance = '10' self.banner = None - self.parser = EventParser() self.location = LocationUpdater() self.events = Events() self.win = hildon.StackableWindow() diff --git a/resultsparser.py b/resultsparser.py index 113d6cf..7d2835a 100644 --- a/resultsparser.py +++ b/resultsparser.py @@ -4,72 +4,70 @@ import time import location -class EventParser: +def parse_json(json, lat, long): + """ Parse json into usable format """ + pass - def parse_json(self, json, lat, long): - """ Parse json into usable format """ - pass +def parse_xml(xml, lat, long): + """ Parse xml into a dict """ + events_list = [] + today = date.today() + dom = parseString(xml) - def parse_xml(self, xml, lat, long): - """ Parse xml into a dict """ - events_list = [] - today = date.today() - dom = parseString(xml) + events = dom.getElementsByTagName('event') + for event in events: + start_date = parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data) + if start_date.date() == today: + title = event.getElementsByTagName('title')[0].childNodes[0].data + + artists_element = event.getElementsByTagName('artists')[0] + artist_list = [] + for artist in artists_element.getElementsByTagName('artist'): + artist_list.append(artist.childNodes[0].data) + artists = ', '.join(artist_list) - events = dom.getElementsByTagName('event') - for event in events: - start_date = self.parse_date(event.getElementsByTagName('startDate')[0].childNodes[0].data) - if start_date.date() == today: - title = event.getElementsByTagName('title')[0].childNodes[0].data - - artists_element = event.getElementsByTagName('artists')[0] - artist_list = [] - for artist in artists_element.getElementsByTagName('artist'): - 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 + distance = location.distance_between(float(lat), + float(long), + float(venue_lat), + float(venue_long)) + + events_list.append({'title': title, + 'venue': venue_name, + 'address': address, + 'distance': distance, + 'artists': artists, + 'date': start_date}) + return events_list - venue_details = event.getElementsByTagName('venue')[0] - venue_name = venue_details.getElementsByTagName('name')[0].childNodes[0].data - address = self.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 - distance = location.distance_between(float(lat), - float(long), - float(venue_lat), - float(venue_long)) - - events_list.append({'title': title, - 'venue': venue_name, - 'address': address, - 'distance': distance, - 'artists': artists, - 'date': start_date}) - return events_list - - def get_address(self, location): - """ 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 - return '\n'.join([street, city, country, postalcode]) +def get_address(location): + """ 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 + return '\n'.join([street, city, country, postalcode]) - def parse_date(self, date_string): - """ Parse date string into datetime object """ - fmt = "%a, %d %b %Y %H:%M:%S" - result = time.strptime(date_string, fmt) - return datetime(result.tm_year, - result.tm_mon, - result.tm_mday, - result.tm_hour, - result.tm_min, - result.tm_sec) +def parse_date(date_string): + """ Parse date string into datetime object """ + fmt = "%a, %d %b %Y %H:%M:%S" + result = time.strptime(date_string, fmt) + return datetime(result.tm_year, + result.tm_mon, + result.tm_mday, + result.tm_hour, + result.tm_min, + result.tm_sec)