Change to use json and event objects
[gigfinder] / src / opt / gigfinder / resultsparser.py
index 9f50ae8..47deac0 100644 (file)
@@ -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"