您的位置:首页 > 编程语言 > Python开发

Python 获取Facebook用户与其有共同爱好的Friends

2014-08-13 06:48 309 查看
CODE:

#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
Created on 2014-8-13
@author: guaguastd
@name: common_friends_finding.py
'''

# impot login
from login import facebook_login

# import helper
#from helper import pp

# import PrettyTable
from prettytable import PrettyTable
from collections import Counter
from operator import itemgetter

# access to facebook
facebook_api = facebook_login()

# get friends like through single request
#friends_like = facebook_api.get_object('me', fields='id,name,friends.fields(id,name,likes)')
#pp(friends_like)

# get friends like through multi request
friends = facebook_api.get_connections("me", "friends")['data']
likes = { friend['name'] : facebook_api.get_connections(friend['id'], "likes")['data']
for friend in friends[:10]}

friends_likes = Counter([like['name']
for friend in likes
for like in likes[friend]
if like.get('name')])

# Which of your likes are in common with which friends
my_likes = [ like['name']
for like in facebook_api.get_connections("me", "likes")['data'] ]

# Use the set intersection as represented by the ampersand
# operator to find common likes
common_likes = list(set(my_likes) & set(friends_likes))

# Which of your friends like things that you like?
similar_friends = [ (friend, friend_like['name'])
for friend, friend_likes in likes.items()
for friend_like in friend_likes
if friend_like.get('name') in common_likes ]

# Filter out any possible duplicates that could occur
ranked_friends = Counter([ friend for (friend, like) in list(set(similar_friends)) ])

pt = PrettyTable(field_names=["Friend", "Common Likes"])
pt.align["Friend"], pt.align["Common Likes"] = 'l', 'r'
[ pt.add_row(rf)
for rf in sorted(ranked_friends.items(),
key=itemgetter(1),
reverse=True)]
print "My similar friends (ranked)"
print pt


RESULT:

My similar friends (ranked)
+--------------------------+--------------+
| Friend                   | Common Likes |
+--------------------------+--------------+
| Los Mas Lindos del Mundo |            1 |
| Soofi Cat                |            1 |
| Jorge Rodriguez          |            1 |
| Kevin Swaggy             |            1 |
+--------------------------+--------------+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: