def calculateClosest(uid, update_flag, accessToken): print 'Calculating' my_friends = fetch_fb_functions.getFriends(accessToken) if 'friends' not in my_friends.keys(): print 'no friends' return json.dumps('') #print 'my friends' #print my_friends score_list = {} sorted_score_list = {} friend_list = my_friends['friends']['data'] print 'init_scores' for current_friend in friend_list: score_list[current_friend['id']] = 1 #print score_list fetch_string = 'photos, checkins, feed, links, family, inbox.limit(500), statuses, friendlists.fields(members,list_type)' all_data = fetch_fb_functions.getData(accessToken, uid, fetch_string) my_friendlists = fetch_fb_functions.getFriendLists(accessToken, all_data) if my_friendlists != None: print 'my_friendlists' score_calculation.update_scores_friendlist(my_friendlists['close_friends'], 4, score_list) score_calculation.update_scores_friendlist(my_friendlists['work'], 1.1, score_list) score_calculation.update_scores_friendlist(my_friendlists['education'], 1.1, score_list) score_calculation.update_scores_friendlist(my_friendlists['user_created'], 1.1, score_list) score_calculation.update_scores_friendlist(my_friendlists['current_city'], 1.05, score_list) pics_by_me = [] pics_by_others = [] split_pics = fetch_fb_functions.splitPhotos(accessToken, all_data, uid, pics_by_me, pics_by_others) if pics_by_me != None: few_tags_pics_by_me = [] many_tags_pics_by_me = [] fetch_fb_functions.splitPhotosByTagCount(pics_by_me, few_tags_pics_by_me, many_tags_pics_by_me) by_me_photos = fetch_fb_functions.getPhotos(accessToken, pics_by_me, few_tags_pics_by_me, uid) print 'by_me_photos' #print my_photos print by_me_photos['tagged'] score_calculation.update_scores(by_me_photos['tagged'], 4, score_list) print by_me_photos['liked by'] score_calculation.update_scores(by_me_photos['liked by'], 2, score_list) print by_me_photos['commented by'] score_calculation.update_scores(by_me_photos['commented by'], 2, score_list) by_me_photos = fetch_fb_functions.getPhotos(accessToken, pics_by_me, many_tags_pics_by_me, uid) print 'by_me_photos' #print my_photos print by_me_photos['tagged'] score_calculation.update_scores(by_me_photos['tagged'], 3, score_list) print by_me_photos['liked by'] score_calculation.update_scores(by_me_photos['liked by'], 2, score_list) print by_me_photos['commented by'] score_calculation.update_scores(by_me_photos['commented by'], 2, score_list) if pics_by_others != None: few_tags_pics_by_others = [] many_tags_pics_by_others = [] fetch_fb_functions.splitPhotosByTagCount(pics_by_me, few_tags_pics_by_others, many_tags_pics_by_others) by_others_photos = fetch_fb_functions.getPhotos(accessToken, pics_by_others, few_tags_pics_by_others, uid) print 'by_others_photos' #print my_photos print by_others_photos['tagged'] score_calculation.update_scores(by_others_photos['tagged'], 3, score_list) print by_others_photos['liked by'] score_calculation.update_scores(by_others_photos['liked by'], 2, score_list) print by_others_photos['commented by'] score_calculation.update_scores(by_others_photos['commented by'], 2, score_list) by_others_photos = fetch_fb_functions.getPhotos(accessToken, pics_by_others, many_tags_pics_by_others, uid) print 'by_others_photos' #print my_photos print by_others_photos['tagged'] score_calculation.update_scores(by_others_photos['tagged'], 2.5, score_list) print by_others_photos['liked by'] score_calculation.update_scores(by_others_photos['liked by'], 2, score_list) print by_others_photos['commented by'] score_calculation.update_scores(by_others_photos['commented by'], 2, score_list) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid, all_data) print 'my_checkins' if my_checkins != None: print my_checkins['from'] score_calculation.update_scores(my_checkins['from'], 4, score_list) print my_checkins['tagged'] score_calculation.update_scores(my_checkins['tagged'], 4, score_list) feed_by_me = [] feed_by_others = [] split_feed = fetch_fb_functions.splitFeed(accessToken, all_data, uid, feed_by_me, feed_by_others) if feed_by_me != None: my_feeds = fetch_fb_functions.getFeed(accessToken, feed_by_me) print 'feeds_by_me' print my_feeds['tagged'] score_calculation.update_scores(my_feeds['tagged'], 3.5, score_list) print my_feeds['liked by'] score_calculation.update_scores(my_feeds['liked by'], 2, score_list) print my_feeds['commented by'] score_calculation.update_scores(my_feeds['commented by'], 2, score_list) if feed_by_others != None: others_feeds = fetch_fb_functions.getFeed(accessToken, feed_by_others) print 'feeds_by_others' print others_feeds['tagged'] score_calculation.update_scores(others_feeds['tagged'], 3, score_list) print others_feeds['liked by'] score_calculation.update_scores(others_feeds['liked by'], 2, score_list) print others_feeds['commented by'] score_calculation.update_scores(others_feeds['commented by'], 2, score_list) my_family = fetch_fb_functions.getFamily(accessToken, all_data) print 'my_family' if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3, score_list) my_status = fetch_fb_functions.get_status(accessToken, uid, all_data) if my_status != None: print 'my_status' print my_status['tagged'] score_calculation.update_scores(my_status['tagged'], 3, score_list) print my_status['liked by'] score_calculation.update_scores(my_status['liked by'], 2, score_list) print my_status['commented by'] score_calculation.update_scores(my_status['commented by'], 2, score_list) my_links = fetch_fb_functions.getLinks(accessToken, all_data) if my_links != None: print 'my_links' print my_links['tagged'] score_calculation.update_scores(my_links['tagged'], 3, score_list) print my_links['liked by'] score_calculation.update_scores(my_links['liked by'], 2, score_list) print my_links['commented by'] score_calculation.update_scores(my_links['commented by'], 2, score_list) my_inbox = fetch_fb_functions.getInbox(accessToken, uid, all_data) if my_inbox != None: print 'my_inbox' print my_inbox score_calculation.update_scores_inbox(my_inbox, 3, score_list) sorted_score_list = score_calculation.show_scores(score_list) print '++++',sorted_score_list if len(sorted_score_list) >=20: top_twenty_friends = sorted_score_list[len(sorted_score_list)-20:] else: top_twenty_friends = sorted_score_list top_twenty = fetchClosestProfiles(top_twenty_friends, update_flag, uid, accessToken) return top_twenty
def getCloseFriends(): accessToken = request.args.get('a', '', type=unicode) uid = request.args.get('b', '', type=unicode) print 'uid='+uid print 'in get close friends' print '@@@@@@@@@@@@@@@@@ Calculating' my_friends = fetch_fb_functions.getFriends(accessToken) if 'friends' not in my_friends.keys(): print 'no friends' return json.dumps('') #print 'my friends' #print my_friends score_calculation.init_scores(my_friends['friends']['data']) fetch_string = 'photos, checkins, feed, links, family, inbox.limit(500), statuses' data = fetch_fb_functions.getData(accessToken, uid, fetch_string) my_photos = fetch_fb_functions.getPhotos(accessToken) if my_photos != None: print 'my_photos' #print my_photos print my_photos['tagged'] score_calculation.update_scores(my_photos['tagged'], 3) print my_photos['liked by'] score_calculation.update_scores(my_photos['liked by'], 2) print my_photos['commented by'] score_calculation.update_scores(my_photos['commented by'], 2) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid) print 'my_checkins' if my_checkins != None: print my_checkins['from'] score_calculation.update_scores(my_checkins['from'], 4) print my_checkins['tagged'] score_calculation.update_scores(my_checkins['tagged'], 4) my_feeds = fetch_fb_functions.getFeed(accessToken) if my_feeds != None: print 'my_feeds' print my_feeds['tagged'] score_calculation.update_scores(my_feeds['tagged'], 3) print my_feeds['liked by'] score_calculation.update_scores(my_feeds['liked by'], 2) print my_feeds['commented by'] score_calculation.update_scores(my_feeds['commented by'], 2) my_family = fetch_fb_functions.getFamily(accessToken) print 'my_family' if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3) my_status = fetch_fb_functions.get_status(accessToken, uid) if my_status != None: print 'my_status' print my_status['tagged'] score_calculation.update_scores(my_status['tagged'], 3) print my_status['liked by'] score_calculation.update_scores(my_status['liked by'], 2) print my_status['commented by'] score_calculation.update_scores(my_status['commented by'], 2) my_links = fetch_fb_functions.getLinks(accessToken) if my_links != None: print 'my_links' print my_links['tagged'] score_calculation.update_scores(my_links['tagged'], 3) print my_links['liked by'] score_calculation.update_scores(my_links['liked by'], 2) print my_links['commented by'] score_calculation.update_scores(my_links['commented by'], 2) my_inbox = fetch_fb_functions.getInbox(accessToken, uid) if my_inbox != None: print 'my_inbox' print my_inbox score_calculation.update_scores_inbox(my_inbox, 3) sorted_score_list = score_calculation.show_scores() print '++++',sorted_score_list if len(sorted_score_list) >=20: top_twenty_friends = sorted_score_list[len(sorted_score_list)-20:] else: top_twenty_friends = sorted_score_list highest_index = len(top_twenty_friends)-1 print '?????? $$$$$$', top_twenty_friends highest = top_twenty_friends[highest_index][1] print 'highest: ', highest my_friends_scores=list() # set of scores to be stored in DB start_time = time.time() global q global concurrent q=Queue(concurrent*2) for i in range(concurrent): t=Thread(target=doWork) t.daemon=True t.start() try: for list_elem in top_twenty_friends: url = "https://graph.facebook.com/" + list_elem[0] + "?fields=id, name, gender, relationship_status, picture.height(200).width(200), link, statuses.limit(1).fields(message,updated_time) &access_token="+accessToken print 'old score: ',list_elem[1] new_score = (list_elem[1]/highest)*100 print'new score: ',new_score q.put((list_elem[0], url.strip(), new_score)) # insert tuple(uid, url, new_score) in queue my_friends_scores.append(Score(friend_uid=list_elem[0], score=new_score)) q.join() except KeyboardInterrupt: sys.exit(1) print time.time() - start_time, "seconds" global top_twenty print '****><><><>',top_twenty, type(top_twenty) return json.dumps(top_twenty)
def getCloseFriends(): accessToken = request.args.get('a', '', type=unicode) uid = request.args.get('b', '', type=unicode) print 'uid='+uid print 'in get close friends' print 'checking db' update_flag = 0 users = session.query(User) for cur_user in users: print cur_user.uid, cur_user.modified_time if cur_user.uid == uid: print datetime.datetime.now() time_diff = datetime.datetime.now()-cur_user.modified_time print 'time diff: ',time_diff.total_seconds() if time_diff.total_seconds() > 2628000: update_flag = 1 break else: # fetch cur_user.set_of_scores print '################## Fetching from DB' print cur_user.set_of_scores, type(cur_user.set_of_scores) top_twenty = list() for list_elem in cur_user.set_of_scores: profile = json.loads(fetch_fb_functions.getProfile(accessToken, list_elem.friend_uid)) print 'PROFILE: ', profile print type(profile) print profile.keys() print 'score: ',list_elem.score if 'statuses' in profile.keys(): print '^^^^^^ &&&&&&& ', profile['statuses']['data'][0]['updated_time'] recent_status={} recent_status['updated_time'] = profile['statuses']['data'][0]['updated_time'] recent_status['message'] = profile['statuses']['data'][0]['message'] print '/n/n **** RECENT ', recent_status if 'relationship_status' in profile.keys(): top_twenty.append({'id': list_elem.friend_uid, 'score': list_elem.score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': profile['relationship_status'], 'link': profile['link'], 'picture': profile['picture']['data'], 'status': recent_status}) else: top_twenty.append({'id': list_elem.friend_uid, 'score': list_elem.score, 'name': profile['name'], 'gender': profile['gender'], 'link': profile['link'], 'picture': profile['picture']['data'], 'status': recent_status}) else: if 'relationship_status' in profile.keys(): top_twenty.append({'id': list_elem.friend_uid, 'score': list_elem.score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': profile['relationship_status'], 'link': profile['link'], 'picture': profile['picture']['data']}) else: top_twenty.append({'id': list_elem.friend_uid, 'score': list_elem.score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': 'nill', 'link': profile['link'], 'picture': profile['picture']['data'] }) print '****><><><>',top_twenty, type(top_twenty) session.end() return json.dumps(top_twenty) print '@@@@@@@@@@@@@@@@@ Calculating' my_friends = fetch_fb_functions.getFriends(accessToken) if 'friends' not in my_friends.keys(): print 'no friends' return json.dumps('') #print 'my friends' #print my_friends score_calculation.init_scores(my_friends['friends']['data']) my_photos = fetch_fb_functions.getPhotos(accessToken) if my_photos != None: print 'my_photos' #print my_photos print my_photos['tagged'] score_calculation.update_scores(my_photos['tagged'], 3) print my_photos['liked by'] score_calculation.update_scores(my_photos['liked by'], 2) print my_photos['commented by'] score_calculation.update_scores(my_photos['commented by'], 2) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid) print 'my_checkins' if my_checkins != None: print my_checkins['from'] score_calculation.update_scores(my_checkins['from'], 4) print my_checkins['tagged'] score_calculation.update_scores(my_checkins['tagged'], 4) my_feeds = fetch_fb_functions.getFeed(accessToken) print 'my_feeds' print my_feeds['tagged'] score_calculation.update_scores(my_feeds['tagged'], 3) print my_feeds['liked by'] score_calculation.update_scores(my_feeds['liked by'], 2) print my_feeds['commented by'] score_calculation.update_scores(my_feeds['commented by'], 2) my_family = fetch_fb_functions.getFamily(accessToken) print 'my_family' if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3) my_status = fetch_fb_functions.get_status(accessToken, uid) print 'my_status' print my_status['tagged'] score_calculation.update_scores(my_status['tagged'], 3) print my_status['liked by'] score_calculation.update_scores(my_status['liked by'], 2) print my_status['commented by'] score_calculation.update_scores(my_status['commented by'], 2) my_links = fetch_fb_functions.getLinks(accessToken) print 'my_links' print my_links['tagged'] score_calculation.update_scores(my_links['tagged'], 3) print my_links['liked by'] score_calculation.update_scores(my_links['liked by'], 2) print my_links['commented by'] score_calculation.update_scores(my_links['commented by'], 2) my_inbox = fetch_fb_functions.getInbox(accessToken, uid) if my_inbox != None: print 'my_inbox' print my_inbox score_calculation.update_scores_inbox(my_inbox, 3) sorted_score_list = score_calculation.show_scores() print '++++',sorted_score_list if len(sorted_score_list) >=20: top_twenty_friends = sorted_score_list[len(sorted_score_list)-20:] else: top_twenty_friends = sorted_score_list highest_index = len(top_twenty_friends)-1 print '?????? $$$$$$', top_twenty_friends top_twenty = list() highest = top_twenty_friends[highest_index][1] print 'highest: ', highest my_friends_scores=list() # set of scores to be stored in DB for list_elem in top_twenty_friends: profile = json.loads(fetch_fb_functions.getProfile(accessToken, list_elem[0])) print 'PROFILE: ', profile print type(profile) print profile.keys() print 'old score: ',list_elem[1] new_score = (list_elem[1]/highest)*100 print'new score: ',new_score my_friends_scores.append(Score(friend_uid=list_elem[0], score=new_score)) if 'statuses' in profile.keys(): print '^^^^^^ &&&&&&& ', profile['statuses']['data'][0]['updated_time'] recent_status={} recent_status['updated_time'] = profile['statuses']['data'][0]['updated_time'] recent_status['message'] = profile['statuses']['data'][0]['message'] print '/n/n **** RECENT ', recent_status if 'relationship_status' in profile.keys(): top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': profile['relationship_status'], 'link': profile['link'], 'picture': profile['picture']['data'], 'status': recent_status}) else: top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'link': profile['link'], 'picture': profile['picture']['data'], 'status': recent_status}) else: if 'relationship_status' in profile.keys(): top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': profile['relationship_status'], 'link': profile['link'], 'picture': profile['picture']['data']}) else: top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': 'nill', 'link': profile['link'], 'picture': profile['picture']['data'] }) store_user_record(uid, my_friends_scores, update_flag) print '****><><><>',top_twenty, type(top_twenty) session.end() return json.dumps(top_twenty)
def getCloseFriends(): accessToken = request.args.get("a", "", type=unicode) uid = request.args.get("b", "", type=unicode) print "uid=" + uid print "in get close friends" my_friends = fetch_fb_functions.getFriends(accessToken) # print 'my_friends' # print my_friends['friends']['data'] score_calculation.init_scores(my_friends["friends"]["data"]) my_photos = fetch_fb_functions.getPhotos(accessToken) print "my_photos" # print my_photos print my_photos["tagged"] score_calculation.update_scores(my_photos["tagged"], 75) print my_photos["liked by"] score_calculation.update_scores(my_photos["liked by"], 35) print my_photos["commented by"] score_calculation.update_scores(my_photos["commented by"], 35) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid) print "my_checkins" if my_checkins != None: print my_checkins["from"] score_calculation.update_scores(my_checkins["from"], 100) print my_checkins["tagged"] score_calculation.update_scores(my_checkins["tagged"], 100) my_feeds = fetch_fb_functions.getFeed(accessToken) print "my_feeds" print my_feeds["tagged"] score_calculation.update_scores(my_feeds["tagged"], 75) print my_feeds["liked by"] score_calculation.update_scores(my_feeds["liked by"], 35) print my_feeds["commented by"] score_calculation.update_scores(my_feeds["commented by"], 35) my_family = fetch_fb_functions.getFamily(accessToken) print "my_family" if my_family != None: print my_family score_calculation.update_scores_family(my_family, 75) my_status = fetch_fb_functions.get_status(accessToken, uid) print "my_status" print my_status["tagged"] score_calculation.update_scores(my_status["tagged"], 75) print my_status["liked by"] score_calculation.update_scores(my_status["liked by"], 35) print my_status["commented by"] score_calculation.update_scores(my_status["commented by"], 35) my_links = fetch_fb_functions.getLinks(accessToken) print "my_links" print my_links["tagged"] score_calculation.update_scores(my_links["tagged"], 75) print my_links["liked by"] score_calculation.update_scores(my_links["liked by"], 35) print my_links["commented by"] score_calculation.update_scores(my_links["commented by"], 35) my_inbox = fetch_fb_functions.getInbox(accessToken, uid) print "my_inbox" print my_inbox score_calculation.update_scores_inbox(my_inbox, 75) sorted_score_list = score_calculation.show_scores() print "++++", sorted_score_list top_twenty_friends = sorted_score_list[len(sorted_score_list) - 20 :] print "????", top_twenty_friends top_twenty = list() for list_elem in top_twenty_friends: profile = json.loads(fetch_fb_functions.getProfile(accessToken, list_elem[0])) print "PROFILE: ", profile print type(profile) print profile.keys() if "relationship_status" in profile.keys(): top_twenty.append( { "id": list_elem[0], "score": list_elem[1], "name": profile["name"], "gender": profile["gender"], "relationship_status": profile["relationship_status"], "link": profile["link"], "picture": profile["picture"], } ) else: top_twenty.append( { "id": list_elem[0], "score": list_elem[1], "name": profile["name"], "gender": profile["gender"], "relationship_status": "nill", "link": profile["link"], "picture": profile["picture"], } ) print "****><><><>", top_twenty return jsonify(top_twenty)
def getCloseFriends(): accessToken = request.args.get('a', '', type=unicode) uid = request.args.get('b', '', type=unicode) print 'uid='+uid print 'in get close friends' '''print 'checking db' users = User.query(Obj).filter(Obj.uid==uid) print users''' my_friends = fetch_fb_functions.getFriends(accessToken) #print 'my_friends' #print my_friends['friends']['data'] score_calculation.init_scores(my_friends['friends']['data']) my_photos = fetch_fb_functions.getPhotos(accessToken) print 'my_photos' #print my_photos print my_photos['tagged'] score_calculation.update_scores(my_photos['tagged'], 3) print my_photos['liked by'] score_calculation.update_scores(my_photos['liked by'], 2) print my_photos['commented by'] score_calculation.update_scores(my_photos['commented by'], 2) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid) print 'my_checkins' if my_checkins != None: print my_checkins['from'] score_calculation.update_scores(my_checkins['from'], 4) print my_checkins['tagged'] score_calculation.update_scores(my_checkins['tagged'], 4) my_feeds = fetch_fb_functions.getFeed(accessToken) print 'my_feeds' print my_feeds['tagged'] score_calculation.update_scores(my_feeds['tagged'], 3) print my_feeds['liked by'] score_calculation.update_scores(my_feeds['liked by'], 2) print my_feeds['commented by'] score_calculation.update_scores(my_feeds['commented by'], 2) my_family = fetch_fb_functions.getFamily(accessToken) print 'my_family' if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3) my_status = fetch_fb_functions.get_status(accessToken, uid) print 'my_status' print my_status['tagged'] score_calculation.update_scores(my_status['tagged'], 3) print my_status['liked by'] score_calculation.update_scores(my_status['liked by'], 2) print my_status['commented by'] score_calculation.update_scores(my_status['commented by'], 2) my_links = fetch_fb_functions.getLinks(accessToken) print 'my_links' print my_links['tagged'] score_calculation.update_scores(my_links['tagged'], 3) print my_links['liked by'] score_calculation.update_scores(my_links['liked by'], 2) print my_links['commented by'] score_calculation.update_scores(my_links['commented by'], 2) my_inbox = fetch_fb_functions.getInbox(accessToken, uid) print 'my_inbox' print my_inbox score_calculation.update_scores_inbox(my_inbox, 3) sorted_score_list = score_calculation.show_scores() print '++++',sorted_score_list top_twenty_friends = sorted_score_list[len(sorted_score_list)-20:] '''for index in range(0,len(top_twenty_friends)): print 'score: ',top_twenty_friends[index][1] length = len(str(top_twenty_friends[index][1]))-3 print 'len: ',length if length < 0: div = 1 else: div=10**length print 'div: ',div print 'new: ', top_twenty_friends[index][1] = (top_twenty_friends[index][1])/div print 'new score: ',top_twenty_friends[index][1]''' print '?????? $$$$$$', top_twenty_friends top_twenty = list() highest = top_twenty_friends[19][1] print 'highest: ', highest #my_friends_scores=list() # set of scores to be stored in DB for list_elem in top_twenty_friends: profile = json.loads(fetch_fb_functions.getProfile(accessToken, list_elem[0])) print 'PROFILE: ', profile print type(profile) print profile.keys() print 'old score: ',list_elem[1] new_score = (list_elem[1]/highest)*100 print'new score: ',new_score #my_friends_scores.append(Score(friend_uid=list_elem[0], score=new_score)) if 'relationship_status' in profile.keys(): top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': profile['relationship_status'], 'link': profile['link'], 'picture': profile['picture']['data'] }) else: top_twenty.append({'id': list_elem[0], 'score': new_score, 'name': profile['name'], 'gender': profile['gender'], 'relationship_status': 'nill', 'link': profile['link'], 'picture': profile['picture']['data'] }) #store_user_record(uid, my_friends_scores) print '****><><><>',top_twenty, type(top_twenty) return json.dumps(top_twenty)
def getCloseFriends(): accessToken = request.args.get("a", "", type=unicode) uid = request.args.get("b", "", type=unicode) print "uid=" + uid print "in get close friends" print "checking db" update_flag = 0 users = session.query(User) for cur_user in users: print cur_user.uid, cur_user.modified_time if cur_user.uid == uid: print datetime.datetime.now() time_diff = datetime.datetime.now() - cur_user.modified_time print "time diff: ", time_diff.total_seconds() if time_diff.total_seconds() > 2628000: update_flag = 1 break else: # fetch cur_user.set_of_scores print "################## Fetching from DB" print cur_user.set_of_scores, type(cur_user.set_of_scores) top_twenty = list() start_time = time.time() try: t = [] # list of threads for list_elem in cur_user.set_of_scores: url = ( "https://graph.facebook.com/" + list_elem.friend_uid + "?fields=id, name, gender, relationship_status, picture.height(200).width(200), link, statuses.limit(1).fields(message,updated_time) &access_token=" + accessToken ) print "score: ", list_elem.score temp = ThreadWithReturnValue( target=doWork, args=(list_elem.friend_uid, url.strip(), list_elem.score) ) # pass tuple(uid, url, new_score) in thread temp.daemon = True temp.start() t.append(temp) for thread_index in range(0, len(t)): current_profile = t[thread_index].join() print "\n\nWhile Joining: ", current_profile top_twenty.append(current_profile) except KeyboardInterrupt: sys.exit(1) print time.time() - start_time, "seconds" print "****><><><>", top_twenty, type(top_twenty) session.end() return json.dumps(top_twenty) print "@@@@@@@@@@@@@@@@@ Calculating" my_friends = fetch_fb_functions.getFriends(accessToken) if "friends" not in my_friends.keys(): print "no friends" return json.dumps("") # print 'my friends' # print my_friends score_list = {} sorted_score_list = {} friend_list = my_friends["friends"]["data"] print "init_scores" for current_friend in friend_list: score_list[current_friend["id"]] = 1 # print score_list fetch_string = "photos, checkins, feed, links, family, inbox.limit(500), statuses" all_data = fetch_fb_functions.getData(accessToken, uid, fetch_string) my_photos = fetch_fb_functions.getPhotos(accessToken, all_data) if my_photos != None: print "my_photos" # print my_photos print my_photos["tagged"] score_calculation.update_scores(my_photos["tagged"], 3, score_list) print my_photos["liked by"] score_calculation.update_scores(my_photos["liked by"], 2, score_list) print my_photos["commented by"] score_calculation.update_scores(my_photos["commented by"], 2, score_list) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid, all_data) print "my_checkins" if my_checkins != None: print my_checkins["from"] score_calculation.update_scores(my_checkins["from"], 4, score_list) print my_checkins["tagged"] score_calculation.update_scores(my_checkins["tagged"], 4, score_list) my_feeds = fetch_fb_functions.getFeed(accessToken, all_data) if my_feeds != None: print "my_feeds" print my_feeds["tagged"] score_calculation.update_scores(my_feeds["tagged"], 3, score_list) print my_feeds["liked by"] score_calculation.update_scores(my_feeds["liked by"], 2, score_list) print my_feeds["commented by"] score_calculation.update_scores(my_feeds["commented by"], 2, score_list) my_family = fetch_fb_functions.getFamily(accessToken, all_data) print "my_family" if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3, score_list) my_status = fetch_fb_functions.get_status(accessToken, uid, all_data) if my_status != None: print "my_status" print my_status["tagged"] score_calculation.update_scores(my_status["tagged"], 3, score_list) print my_status["liked by"] score_calculation.update_scores(my_status["liked by"], 2, score_list) print my_status["commented by"] score_calculation.update_scores(my_status["commented by"], 2, score_list) my_links = fetch_fb_functions.getLinks(accessToken, all_data) if my_links != None: print "my_links" print my_links["tagged"] score_calculation.update_scores(my_links["tagged"], 3, score_list) print my_links["liked by"] score_calculation.update_scores(my_links["liked by"], 2, score_list) print my_links["commented by"] score_calculation.update_scores(my_links["commented by"], 2, score_list) my_inbox = fetch_fb_functions.getInbox(accessToken, uid, all_data) if my_inbox != None: print "my_inbox" print my_inbox score_calculation.update_scores_inbox(my_inbox, 3, score_list) sorted_score_list = score_calculation.show_scores(score_list) print "++++", sorted_score_list if len(sorted_score_list) >= 20: top_twenty_friends = sorted_score_list[len(sorted_score_list) - 20 :] else: top_twenty_friends = sorted_score_list highest_index = len(top_twenty_friends) - 1 print "?????? $$$$$$", top_twenty_friends highest = top_twenty_friends[highest_index][1] print "highest: ", highest top_twenty = list() # returned to front end my_friends_scores = list() # set of scores to be stored in DB start_time = time.time() try: t = [] # list of threads for list_elem in top_twenty_friends: url = ( "https://graph.facebook.com/" + list_elem[0] + "?fields=id, name, gender, relationship_status, picture.height(200).width(200), link, statuses.limit(1).fields(message,updated_time) &access_token=" + accessToken ) print "old score: ", list_elem[1] new_score = (list_elem[1] / highest) * 100 print "new score: ", new_score temp = ThreadWithReturnValue( target=doWork, args=(list_elem[0], url.strip(), new_score) ) # pass tuple(uid, url, new_score, top_twenty) in thread temp.daemon = True temp.start() t.append(temp) my_friends_scores.append(Score(friend_uid=list_elem[0], score=new_score)) for thread_index in range(0, len(t)): current_profile = t[thread_index].join() print "\n\nWhile Joining: ", current_profile top_twenty.append(current_profile) except KeyboardInterrupt: sys.exit(1) print time.time() - start_time, "seconds" store_user_record(uid, my_friends_scores, update_flag) session.end() print "****><><><>", top_twenty, type(top_twenty) return json.dumps(top_twenty)
def calculateClosest(uid, update_flag, accessToken): print "Calculating" my_friends = fetch_fb_functions.getFriends(accessToken) if "friends" not in my_friends.keys(): print "no friends" return json.dumps("") # print 'my friends' # print my_friends score_list = {} sorted_score_list = {} friend_list = my_friends["friends"]["data"] print "init_scores" for current_friend in friend_list: score_list[current_friend["id"]] = 1 # print score_list fetch_string = "photos, checkins, feed, links, family, inbox.limit(500), statuses" all_data = fetch_fb_functions.getData(accessToken, uid, fetch_string) my_photos = fetch_fb_functions.getPhotos(accessToken, all_data) if my_photos != None: print "my_photos" # print my_photos print my_photos["tagged"] score_calculation.update_scores(my_photos["tagged"], 3, score_list) print my_photos["liked by"] score_calculation.update_scores(my_photos["liked by"], 2, score_list) print my_photos["commented by"] score_calculation.update_scores(my_photos["commented by"], 2, score_list) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid, all_data) print "my_checkins" if my_checkins != None: print my_checkins["from"] score_calculation.update_scores(my_checkins["from"], 4, score_list) print my_checkins["tagged"] score_calculation.update_scores(my_checkins["tagged"], 4, score_list) my_feeds = fetch_fb_functions.getFeed(accessToken, all_data) if my_feeds != None: print "my_feeds" print my_feeds["tagged"] score_calculation.update_scores(my_feeds["tagged"], 3, score_list) print my_feeds["liked by"] score_calculation.update_scores(my_feeds["liked by"], 2, score_list) print my_feeds["commented by"] score_calculation.update_scores(my_feeds["commented by"], 2, score_list) my_family = fetch_fb_functions.getFamily(accessToken, all_data) print "my_family" if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3, score_list) my_status = fetch_fb_functions.get_status(accessToken, uid, all_data) if my_status != None: print "my_status" print my_status["tagged"] score_calculation.update_scores(my_status["tagged"], 3, score_list) print my_status["liked by"] score_calculation.update_scores(my_status["liked by"], 2, score_list) print my_status["commented by"] score_calculation.update_scores(my_status["commented by"], 2, score_list) my_links = fetch_fb_functions.getLinks(accessToken, all_data) if my_links != None: print "my_links" print my_links["tagged"] score_calculation.update_scores(my_links["tagged"], 3, score_list) print my_links["liked by"] score_calculation.update_scores(my_links["liked by"], 2, score_list) print my_links["commented by"] score_calculation.update_scores(my_links["commented by"], 2, score_list) my_inbox = fetch_fb_functions.getInbox(accessToken, uid, all_data) if my_inbox != None: print "my_inbox" print my_inbox score_calculation.update_scores_inbox(my_inbox, 3, score_list) sorted_score_list = score_calculation.show_scores(score_list) print "++++", sorted_score_list if len(sorted_score_list) >= 20: top_twenty_friends = sorted_score_list[len(sorted_score_list) - 20 :] else: top_twenty_friends = sorted_score_list top_twenty = fetchClosestProfiles(top_twenty_friends, update_flag, uid, accessToken) return top_twenty
def getCloseFriends(): accessToken = request.args.get('a', '', type=unicode) uid = request.args.get('b', '', type=unicode) print 'uid='+uid print 'in get close friends' print 'checking db' update_flag = 0 users = session.query(User) for cur_user in users: print cur_user.uid, cur_user.modified_time if cur_user.uid == uid: print datetime.datetime.now() time_diff = datetime.datetime.now()-cur_user.modified_time print 'time diff: ',time_diff.total_seconds() if time_diff.total_seconds() > RECALCULATE_AFTER: update_flag = 1 break else: # fetch cur_user.set_of_scores print '################## Fetching from DB' print cur_user.set_of_scores, type(cur_user.set_of_scores) top_twenty = list() start_time = time.time() try: t=[] # list of threads for list_elem in cur_user.set_of_scores: url = "https://graph.facebook.com/" + list_elem.friend_uid + "?fields=id, name, gender, relationship_status, picture.height(200).width(200), link, statuses.limit(1).fields(message,updated_time) &access_token="+accessToken print 'score: ',list_elem.score temp = ThreadWithReturnValue(target=doWork, args=(list_elem.friend_uid, url.strip(), list_elem.score)) # pass tuple(uid, url, new_score) in thread temp.daemon=True temp.start() t.append(temp) for thread_index in range(0,len(t)): current_profile = t[thread_index].join() print '\n\nWhile Joining: ', current_profile top_twenty.append(current_profile) except KeyboardInterrupt: sys.exit(1) print time.time() - start_time, "seconds" print '****><><><>',top_twenty, type(top_twenty) session.end() return json.dumps(top_twenty) print '@@@@@@@@@@@@@@@@@ Calculating' my_friends = fetch_fb_functions.getFriends(accessToken) if 'friends' not in my_friends.keys(): print 'no friends' return json.dumps('') #print 'my friends' #print my_friends score_list = {} sorted_score_list = {} friend_list = my_friends['friends']['data'] print 'init_scores' for current_friend in friend_list: score_list[current_friend['id']] = 1 #print score_list fetch_string = 'photos, checkins, feed, links, family, inbox.limit(500), statuses' all_data = fetch_fb_functions.getData(accessToken, uid, fetch_string) my_photos = fetch_fb_functions.getPhotos(accessToken, all_data) if my_photos != None: print 'my_photos' #print my_photos print my_photos['tagged'] score_calculation.update_scores(my_photos['tagged'], 3, score_list) print my_photos['liked by'] score_calculation.update_scores(my_photos['liked by'], 2, score_list) print my_photos['commented by'] score_calculation.update_scores(my_photos['commented by'], 2, score_list) my_checkins = fetch_fb_functions.getCheckins(accessToken, uid, all_data) print 'my_checkins' if my_checkins != None: print my_checkins['from'] score_calculation.update_scores(my_checkins['from'], 4, score_list) print my_checkins['tagged'] score_calculation.update_scores(my_checkins['tagged'], 4, score_list) my_feeds = fetch_fb_functions.getFeed(accessToken, all_data) if my_feeds != None: print 'my_feeds' print my_feeds['tagged'] score_calculation.update_scores(my_feeds['tagged'], 3, score_list) print my_feeds['liked by'] score_calculation.update_scores(my_feeds['liked by'], 2, score_list) print my_feeds['commented by'] score_calculation.update_scores(my_feeds['commented by'], 2, score_list) my_family = fetch_fb_functions.getFamily(accessToken, all_data) print 'my_family' if my_family != None: print my_family score_calculation.update_scores_family(my_family, 3, score_list) my_status = fetch_fb_functions.get_status(accessToken, uid, all_data) if my_status != None: print 'my_status' print my_status['tagged'] score_calculation.update_scores(my_status['tagged'], 3, score_list) print my_status['liked by'] score_calculation.update_scores(my_status['liked by'], 2, score_list) print my_status['commented by'] score_calculation.update_scores(my_status['commented by'], 2, score_list) my_links = fetch_fb_functions.getLinks(accessToken, all_data) if my_links != None: print 'my_links' print my_links['tagged'] score_calculation.update_scores(my_links['tagged'], 3, score_list) print my_links['liked by'] score_calculation.update_scores(my_links['liked by'], 2, score_list) print my_links['commented by'] score_calculation.update_scores(my_links['commented by'], 2, score_list) my_inbox = fetch_fb_functions.getInbox(accessToken, uid, all_data) if my_inbox != None: print 'my_inbox' print my_inbox score_calculation.update_scores_inbox(my_inbox, 3, score_list) sorted_score_list = score_calculation.show_scores(score_list) print '++++',sorted_score_list if len(sorted_score_list) >=20: top_twenty_friends = sorted_score_list[len(sorted_score_list)-20:] else: top_twenty_friends = sorted_score_list highest_index = len(top_twenty_friends)-1 print '?????? $$$$$$', top_twenty_friends highest = top_twenty_friends[highest_index][1] print 'highest: ', highest top_twenty = list() # returned to front end my_friends_scores=list() # set of scores to be stored in DB start_time = time.time() try: t=[] # list of threads for list_elem in top_twenty_friends: url = "https://graph.facebook.com/" + list_elem[0] + "?fields=id, name, gender, relationship_status, picture.height(200).width(200), link, statuses.limit(1).fields(message,updated_time) &access_token="+accessToken print 'old score: ',list_elem[1] new_score = (list_elem[1]/highest)*100 print'new score: ',new_score temp = ThreadWithReturnValue(target=doWork, args=(list_elem[0], url.strip(), new_score)) # pass tuple(uid, url, new_score, top_twenty) in thread temp.daemon=True temp.start() t.append(temp) my_friends_scores.append(Score(friend_uid=list_elem[0], score=new_score)) for thread_index in range(0,len(t)): current_profile = t[thread_index].join() print '\n\nWhile Joining: ', current_profile top_twenty.append(current_profile) except KeyboardInterrupt: sys.exit(1) print time.time() - start_time, "seconds" store_user_record(uid, my_friends_scores, update_flag) session.end() print '****><><><>',top_twenty, type(top_twenty) return json.dumps(top_twenty)