Start moving to json
authorJon <jmstaley@gmail.com>
Tue, 18 May 2010 21:46:22 +0000 (22:46 +0100)
committerJon <jmstaley@gmail.com>
Tue, 18 May 2010 21:46:22 +0000 (22:46 +0100)
src/opt/gigfinder/events.py
src/opt/gigfinder/gigfinder.py
src/opt/gigfinder/resultsparser.py

index 1e2abd7..1b4902c 100644 (file)
@@ -3,6 +3,29 @@ import urllib2
 
 from resultsparser import parse_xml
 
 
 from resultsparser import parse_xml
 
+class Event:
+    def __init__(self, 
+                 title, 
+                 venue_name, 
+                 address, 
+                 lng,
+                 lat,
+                 artists, 
+                 start_date):
+        self.title = title
+        self.venue_name = venue_name
+        self.address = address
+        self.lng = lng
+        self.lat = lat
+        self.artists = artists
+        self.start_date = start_date
+
+    def get_distance_from(self, lng, lat):
+        return location.distance_between(float(lat), 
+                                         float(lng), 
+                                         float(self.lat), 
+                                         float(self.lng))
+
 class Events:
     def __init__(self):
         self.api_key = '1928a14bdf51369505530949d8b7e1ee'
 class Events:
     def __init__(self):
         self.api_key = '1928a14bdf51369505530949d8b7e1ee'
@@ -13,11 +36,10 @@ class Events:
     def get_events(self, lat, lng, distance):
         """ Retrieve xml and parse into events list """
         events = []
     def get_events(self, lat, lng, distance):
         """ Retrieve xml and parse into events list """
         events = []
-        for page in ['1', '2', '3']:
-            xml = self.get_xml(lat, lng, distance, page=page)
-            events.extend(parse_xml(xml, 
-                                    lat,
-                                    lng))
+        xml = self.get_xml(lat, lng, distance)
+        events.extend(parse_xml(xml, 
+                                lat,
+                                lng))
         return self.sort_events(events)
 
     def sort_events(self, events):
         return self.sort_events(events)
 
     def sort_events(self, events):
index d5fe2bd..016247a 100755 (executable)
@@ -48,6 +48,7 @@ class GigFinder:
         self.win.set_title(self.app_title)
         self.win.connect("destroy", gtk.main_quit, None)
         self.win.set_app_menu(menu)
         self.win.set_title(self.app_title)
         self.win.connect("destroy", gtk.main_quit, None)
         self.win.set_app_menu(menu)
+        self.add_button_area()
 
         Thread(target=self.update_gigs).start()
 
 
         Thread(target=self.update_gigs).start()
 
@@ -86,12 +87,12 @@ class GigFinder:
         else:
             self.location.lat = float(51.517369)
             self.location.long = float(-0.082998)
         else:
             self.location.lat = float(51.517369)
             self.location.long = float(-0.082998)
-
+         
         events = self.events.get_events(self.location.lat, 
                                         self.location.long, 
         events = self.events.get_events(self.location.lat, 
                                         self.location.long, 
-                                        self.distance)
-        gobject.idle_add(self.hide_message)
+                                        self.distance,)
         gobject.idle_add(self.show_events, events)
         gobject.idle_add(self.show_events, events)
+        gobject.idle_add(self.hide_message)
         thread.exit()
 
     def show_message(self, message):
         thread.exit()
 
     def show_message(self, message):
@@ -165,30 +166,22 @@ class GigFinder:
 
         win.show_all()
 
 
         win.show_all()
 
-    def add_table(self):
-        """ Add table for events """
-        self.table = gtk.Table(columns=1)
-        self.table.set_row_spacings(10)
-        self.table.set_col_spacings(10)
-
+    def add_button_area(self):
+        self.box = gtk.VBox(True,0)
         self.pannable_area = hildon.PannableArea()
         self.pannable_area = hildon.PannableArea()
-        self.pannable_area.add_with_viewport(self.table)
+        self.pannable_area.add_with_viewport(self.box)
         self.pannable_area.show_all()
         self.win.add(self.pannable_area)
         
     def add_events(self, events):
         """ Add a table of buttons """
         self.pannable_area.show_all()
         self.win.add(self.pannable_area)
         
     def add_events(self, events):
         """ Add a table of buttons """
-        self.add_table()
-        pos = 0
-        
         for event in events:
             button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, 
                                    hildon.BUTTON_ARRANGEMENT_VERTICAL)
             button.set_text(event['title'], "distance: %0.02f km" % event['distance'])
             button.connect("clicked", self.show_details, event)
         for event in events:
             button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, 
                                    hildon.BUTTON_ARRANGEMENT_VERTICAL)
             button.set_text(event['title'], "distance: %0.02f km" % event['distance'])
             button.connect("clicked", self.show_details, event)
-            self.table.attach(button, 0, 1, pos, pos+1, yoptions=gtk.FILL)
-            pos += 1
-        self.table.show_all()
+            self.box.pack_start(button)
+        self.box.show_all()
             
 if __name__ == "__main__":
     finder = GigFinder()
             
 if __name__ == "__main__":
     finder = GigFinder()
index 793cb4c..9f50ae8 100644 (file)
@@ -1,12 +1,40 @@
 from xml.dom.minidom import parseString
 from datetime import datetime, date
 import time
 from xml.dom.minidom import parseString
 from datetime import datetime, date
 import time
+import simplejson
 
 import location
 
 
 import location
 
+from events import Event
+
 def parse_json(json, lat, lng):
     """ Parse json into usable format """
 def parse_json(json, lat, lng):
     """ Parse json into usable format """
-    pass
+    events_list = []
+    today = date.today()
+    
+    events = json['events']['event']
+    for event in events:
+        venue_location = event['venue']['location']
+        address = '\n'.join([venue_location['street'],
+                             venue_location['city'],
+                             venue_location['country'],
+                             venue_location['postalcode']])
+        venue_geo = venue_location['geo:point']
+        if type(event['artists']['artist']) == list:
+            artist = '\n'.join(event['artists']['artist'])
+        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
+        
 
 def parse_xml(xml, lat, lng):
     """ Parse xml into a dict """
 
 def parse_xml(xml, lat, lng):
     """ Parse xml into a dict """