def is_relevant(user_id): user_id = str(user_id) if user_id in RELEVANT: return RELEVANT[user_id] else: retries = 0 while True: try: TW = API_HANDLER.get_connection() u = TW.get_user(user_id) relevant = u.followers_count > 40 and u.friends_count > 40 RELEVANT[user_id] = relevant with open(RELEVANT_FNAME, 'w') as f: json.dump(RELEVANT, f) return relevant except Exception, e: print "Error in is_relevant for %s" % user_id retries += 1 if retries == 5: print "Gave up retrying for user %s" % user_id print "(marked as not relevant)" return False else: print "waiting..." time.sleep(10)
def get_followed_user_ids(user=None, user_id=None): if user is not None: user_id = user.id if GRAPH.out_degree(user_id): followed = GRAPH.successors(user_id) return followed else: retries = 0 while True: try: TW = API_HANDLER.get_connection() followed = TW.friends_ids(user_id=user_id) GRAPH.add_edges_from([(user_id, f_id) for f_id in followed]) return followed except Exception, e: # print e if e.message == u'Not authorized.': NOTAUTHORIZED.add(user_id) with open(NOTAUTHORIZED_FNAME, 'wb') as f: pickle.dump(NOTAUTHORIZED, f) return [] else: print "Error for user %d: %s" % (user_id, e.message) retries += 1 if retries == 5: print "Gave up retrying for user %d" % user_id return [] else: print "waiting..." time.sleep(10)
def get_follower_counts(user_id): TW = API_HANDLER.get_connection() u = TW.get_user(user_id) return u.followers_count