X-Git-Url: http://git.maemo.org/git/?p=gigfinder;a=blobdiff_plain;f=src%2Fopt%2Fgigfinder%2Fresultsparser.py;h=47deac09f19f0d3c7987dd727af441b148149def;hp=9f50ae8358158bed107b295ca8d1bab9cc5982e6;hb=cbc998e09ef123ff713c59b76ca37b00a2487bee;hpb=19cbc70c06bdedf3561851edda11a42ae282b79a diff --git a/src/opt/gigfinder/resultsparser.py b/src/opt/gigfinder/resultsparser.py index 9f50ae8..47deac0 100644 --- a/src/opt/gigfinder/resultsparser.py +++ b/src/opt/gigfinder/resultsparser.py @@ -1,16 +1,12 @@ -from xml.dom.minidom import parseString from datetime import datetime, date import time import simplejson -import location - -from events import Event - -def parse_json(json, lat, lng): +def parse_json(json): """ Parse json into usable format """ events_list = [] today = date.today() + json = simplejson.loads(json) events = json['events']['event'] for event in events: @@ -25,78 +21,15 @@ def parse_json(json, lat, lng): else: artist = event['artists']['artist'] - event_obj = Event(event['title'], - event['venue']['name'], - address, - venue_geo['geo:long'], - venue_geo['geo:lat'], - artist, - parse_date(event['startDate'])) - event_list.append(event_obj) - return event_list + yield (event['title'], + event['venue']['name'], + address, + venue_geo['geo:long'], + venue_geo['geo:lat'], + artist, + parse_date(event['startDate'])) -def parse_xml(xml, lat, lng): - """ 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) - - 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(lng), - 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(location_element): - """ Return the venues address details from the xml element """ - street = '' - city = '' - country = '' - postalcode = '' - 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): """ Parse date string into datetime object """ fmt = "%a, %d %b %Y %H:%M:%S"