首页 > 代码库 > Python 获取Facebook用户与其有共同爱好的Friends
Python 获取Facebook用户与其有共同爱好的Friends
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 | +--------------------------+--------------+
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。