def do_foursquare_venues(dt=None): """Collect foursquare checkin stats for each venue that has events happening today.""" from fsq import FoursquareApi from rdutils.mathutils import farey from event.models import Event, Venue, FoursquareTrend etz = tz.tzstr('EST5EDT') # Eastern timezone headers = { 'User-Agent': getattr(settings, 'FOURSQUARE_USER_AGENT', settings.USER_AGENT) } fsq = FoursquareApi(headers) dt = dt or date.today() # Active venues events = Event.objects.filter(is_approved=True, event_date=dt).order_by( 'event_date', 'event_start_time', 'pk') venue_ids = set() venues = [] for ev in events: if ev.venue.pk not in venue_ids: venues.append(ev.venue) venue_ids.add(ev.venue.pk) previous_venues = Venue.objects.exclude(pk__in=list(venue_ids)).filter( fsq_checkins__gt=0) previous_venues.update(fsq_checkins=0, fsq_ratio=u'', fsq_mf=0, fsq_fm=0, fsq_m=0, fsq_f=0) # Get and populate FSQ ids of active venues where fsq_id was not previously obtained for v in venues: if not v.fsq_id and v.geo_loc and ',' in v.geo_loc: keyx = shorten_key(u"venue_id_4sq:%s" % v.pk) vx = cache.cache.get(keyx, None) if vx is None: lat, lng = v.geo_loc.split(',') venue_name = v.name.encode("utf-8", "ignore") _log.debug("Getting 4sq venue ID for %s", venue_name) sleep(.25) vx = fsq.get_venues(geolat=lat, geolong=lng, q=venue_name, l=1) try: vid = vx['groups'][0]['venues'][0]['id'] v.fsq_id = unicode(vid) v.save() except Exception, e: vid = 0 _log.debug( "FSQ ID for venue %s could not be obtained: %s\n%s", v.pk, e, vx) cache.cache.set(keyx, vid, 7200) # cache for 2 hours
def do_foursquare_venues(dt=None): """Collect foursquare checkin stats for each venue that has events happening today.""" from fsq import FoursquareApi from rdutils.mathutils import farey from event.models import Event, Venue, FoursquareTrend etz = tz.tzstr('EST5EDT') # Eastern timezone headers = { 'User-Agent': getattr(settings, 'FOURSQUARE_USER_AGENT', settings.USER_AGENT) } fsq = FoursquareApi(headers) dt = dt or date.today() # Active venues events = Event.objects.filter(is_approved=True, event_date=dt).order_by('event_date', 'event_start_time', 'pk') venue_ids = set() venues = [] for ev in events: if ev.venue.pk not in venue_ids: venues.append(ev.venue) venue_ids.add(ev.venue.pk) previous_venues = Venue.objects.exclude(pk__in=list(venue_ids)).filter(fsq_checkins__gt=0) previous_venues.update(fsq_checkins=0, fsq_ratio=u'', fsq_mf=0, fsq_fm=0, fsq_m=0, fsq_f=0) # Get and populate FSQ ids of active venues where fsq_id was not previously obtained for v in venues: if not v.fsq_id and v.geo_loc and ',' in v.geo_loc: keyx = shorten_key(u"venue_id_4sq:%s" % v.pk) vx = cache.cache.get(keyx, None) if vx is None: lat, lng = v.geo_loc.split(',') venue_name = v.name.encode("utf-8", "ignore") _log.debug("Getting 4sq venue ID for %s", venue_name) sleep(.25) vx = fsq.get_venues(geolat=lat, geolong=lng, q=venue_name, l=1) try: vid = vx['groups'][0]['venues'][0]['id'] v.fsq_id = unicode(vid) v.save() except Exception, e: vid = 0 _log.debug("FSQ ID for venue %s could not be obtained: %s\n%s", v.pk, e, vx) cache.cache.set(keyx, vid, 7200) # cache for 2 hours