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"
Exemple #5
0
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']