No need for parser to be a class
authorJon <jmstaley>
Mon, 12 Apr 2010 22:22:06 +0000 (23:22 +0100)
committerJon <jmstaley>
Mon, 12 Apr 2010 22:22:06 +0000 (23:22 +0100)
events.py
gigfinder.py
resultsparser.py

index 37faf62..e6e4f2c 100644 (file)
--- 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):
index ea594d5..b6f5b7c 100755 (executable)
@@ -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()
index 113d6cf..7d2835a 100644 (file)
@@ -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)