def getFullInfluenceScore(): partialScoreCollection = getClusterInfluencerScoreCollection() userClusterContributionCollection = getUserClusterContributionCollection() fbfriends = getFriendsCollection() fullScoreCollection = getFullInfluenceScoreCollection() for friend in fbfriends.find(): fid = friend['id'] partial = partialScoreCollection.find_one({'_id': fid}) contribution = userClusterContributionCollection.find_one({'_id': fid}) score = [] for i in range(len(contribution['contribution'])): avg = 1.0 try: avg *= sum(partial['cluster'][str(i)]) / len( partial['cluster'][str(i)]) except ZeroDivisionError: avg = 0.0 score.append(avg * contribution['contribution'][i]) if len(score) > 0: document = {} document['_id'] = fid document['name'] = friend['name'] document['score'] = score fullScoreCollection.insert(document) print friend['name'], score
def getFullInfluenceScore(): partialScoreCollection = getClusterInfluencerScoreCollection() userClusterContributionCollection = getUserClusterContributionCollection() fbfriends = getFriendsCollection() fullScoreCollection = getFullInfluenceScoreCollection() for friend in fbfriends.find(): fid = friend['id'] partial = partialScoreCollection.find_one({'_id' : fid}) contribution = userClusterContributionCollection.find_one({'_id' : fid}) score = [] for i in range(len(contribution['contribution'])): avg = 1.0 try: avg *= sum(partial['cluster'][str(i)])/len(partial['cluster'][str(i)]) except ZeroDivisionError: avg = 0.0 score.append(avg*contribution['contribution'][i]) if len(score) > 0: document = {} document['_id'] = fid document['name'] = friend['name'] document['score'] = score fullScoreCollection.insert(document) print friend['name'], score
def getPartialInfluenceScore(): clusterInfoCollection = getPagesClusterInfoCollection() clusterInfluencerCollection = getClusterInfluencerScoreCollection() friendsCollection = getFriendsCollection() clusterInfluencerCollection.drop() clusterNumber = len(clusterInfoCollection.distinct('cluster')) for friend in friendsCollection.find(): _id = friend['id'] document = {} document['_id'] = _id document['cluster'] = {} for i in range(clusterNumber): document['cluster'][str(i)] = [] clusterInfluencerCollection.insert(document) pagesCursor = clusterInfoCollection.find({"count": {"$gt": 3}}) epoch = datetime.datetime.utcfromtimestamp(0) dt = 7 * 24 * 60 * 60 scores = [] done = 0 for page in pagesCursor: users = page['people'] try: users.sort(key=lambda x: x['created_time']) cluster = page['cluster'] liketime = [] for user in users: liketime.append((user['created_time'] - epoch).total_seconds()) back = 0 done += 1 print done for user in users: userId = user['id'] timeahead = (user['created_time'] - epoch).total_seconds() + dt timeback = (user['created_time'] - epoch).total_seconds() - dt ahead = bisect.bisect_right(liketime, timeahead) score = ahead - back back += 1 # print userId, cluster, score clusterInfluencerCollection.update( {'_id': userId}, {'$push': { 'cluster.' + str(cluster): score }}, upsert=False) except: print "hmmm"
def getPartialInfluenceScore(): clusterInfoCollection = getPagesClusterInfoCollection() clusterInfluencerCollection = getClusterInfluencerScoreCollection() friendsCollection = getFriendsCollection() clusterInfluencerCollection.drop() clusterNumber = len(clusterInfoCollection.distinct('cluster')) for friend in friendsCollection.find(): _id = friend['id'] document = {} document['_id'] = _id document['cluster'] = {} for i in range(clusterNumber): document['cluster'][str(i)] = [] clusterInfluencerCollection.insert(document) pagesCursor = clusterInfoCollection.find({"count": {"$gt": 3}}) epoch = datetime.datetime.utcfromtimestamp(0) dt = 7 * 24 * 60 * 60 scores = [] done = 0 for page in pagesCursor: users = page['people'] try: users.sort(key=lambda x: x['created_time']) cluster = page['cluster'] liketime = [] for user in users: liketime.append((user['created_time'] - epoch).total_seconds()) back = 0 done += 1 print done for user in users: userId = user['id'] timeahead = (user['created_time'] - epoch).total_seconds() + dt timeback = (user['created_time'] - epoch).total_seconds() - dt ahead = bisect.bisect_right(liketime, timeahead) score = ahead - back back += 1 # print userId, cluster, score clusterInfluencerCollection.update({'_id': userId}, {'$push': {'cluster.' + str(cluster): score}}, upsert=False) except: print "hmmm"
import requests from database import getLikesCollection, getFriendsCollection from utilities import url, access_token from Queue import Queue import threading import json idQueue = Queue() likesCollection = getLikesCollection() friendsCollection = getFriendsCollection() for friend in friendsCollection.find(): idQueue.put(friend['id']) class getLikes(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.queue = idQueue def run(self): while True: try: fbid = self.queue.get() rurl = url + '/v2.3/' + fbid response = requests.get(rurl, params={ 'access_token': access_token, 'fields': 'likes' })
import requests from database import getFriendsCollection from utilities import url, access_token friendscollection = getFriendsCollection() def getFriends(): global url, access_token,count rurl = url + '/v2.3/me' response = requests.get(rurl, params = {'access_token' : access_token, 'fields' : 'friends'}) while True: data = response.json() if not 'friends'in data: data['friends'] = data insertFriends(data['friends']['data']) if 'next' in data['friends']['paging']: rurl = data['friends']['paging']['next'] else: break response = requests.get(rurl) def insertFriends(data): global friendscollection,count for person in data: if not friendscollection.find_one({"id" : person['id']}): count = count + 1 friendscollection.insert(person) print person['name'], person['id']