zoukankan      html  css  js  c++  java
  • 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.6Java 创建File
    5.6Java File ApI
    Java字符集乱码
    5.17Java文件的拷贝
    5.10Java实操IO流,面向接口编程,面向父类编程
    5.6Java File对象使用递归打印子孙级目录以及文件的名称
    5.10JavaIo流四大抽象类
    5.17Java文件字节流
    5.7通过Maven配置seleeniumjava依赖
    5.6Java多态的介绍
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4641337.html
Copyright © 2011-2022 走看看