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 ptMy similar friends (ranked) +--------------------------+--------------+ | Friend | Common Likes | +--------------------------+--------------+ | Los Mas Lindos del Mundo | 1 | | Soofi Cat | 1 | | Jorge Rodriguez | 1 | | Kevin Swaggy | 1 | +--------------------------+--------------+
Python 获取Facebook用户与其有共同爱好的Friends,布布扣,bubuko.com
Python 获取Facebook用户与其有共同爱好的Friends
原文地址:http://blog.csdn.net/guaguastd/article/details/38531337