標籤:資料採礦 facebook
CODE:
#!/usr/bin/python # -*- coding: utf-8 -*-'''Created on 2014-8-13@author: guaguastd@name: common_friends_finding.py'''# impot loginfrom login import facebook_login# import helper#from helper import pp# import PrettyTablefrom prettytable import PrettyTablefrom collections import Counterfrom operator import itemgetter# access to facebookfacebook_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 requestfriends = 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 friendsmy_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 likescommon_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 occurranked_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 |+--------------------------+--------------+