Previously it was possible to find out this information for any friend's profile too. But Facebook has recently revoked that access and apps now need to have this access directly from that friend. However, you can find out this info about yourself in the following way:
1. Go to this link: https://developers.facebook.com/tools/explorer/.
2. Click on 'Get Token' > 'Get User Access Token' > check user_posts > 'Get Access token'.
3. This would ask you for the permission to read your timeline. Click on 'Continue as your-name'.
4. You would get an access token like the following image. Copy the whole string.
5. Replace the 'your-token' part in the following code with that string.
7. Run that program, it might take a while depending on the response time of facebook server. The output would contain the list of likes in a sorted fashion. With the most liker at the top.
Sample output:
1. Go to this link: https://developers.facebook.com/tools/explorer/.
2. Click on 'Get Token' > 'Get User Access Token' > check user_posts > 'Get Access token'.
3. This would ask you for the permission to read your timeline. Click on 'Continue as your-name'.
4. You would get an access token like the following image. Copy the whole string.
5. Replace the 'your-token' part in the following code with that string.
from __future__ import division import operator import requests from facepy import GraphAPI large_dic = {} token = 'your-token' graph = GraphAPI(token) n = 50 # number of posts in the history that we want to consider ctr = 0 pcount = 0 res = graph.get('me/feed') def update_progress(progress): print '\r{0}% [{1}]'.format(int(progress), '#'*int(progress/10)), def merge_two_dicts(dict1, dict2): """ merges and sums up dict1 with the values from dict2. if key2 from dict2 is present in dict1, then dict1[key2] = dict1[key2] + dict2[key2] else it appends key2 with the value as it is example: if d1 = {'a': 1, 'b': 1, 'c': 1} and d2 = {'a': 4, 'd': 1} then it returns {'a': 5, 'c': 1, 'b': 1, 'd': 1} :param dict1, dict2 :return merged dict1 and dict2 """ for key2 in dict2: if key2 in dict1: dict1[key2] = dict1[key2] + dict2[key2] else: dict1[key2] = dict2[key2] return dict1 def get_likes_list(post_id): """given a post id, this method queries the graphapi to get details of the post, gets the likes list and adds them into a dictionary by using the person's name as the key :param post_id :return dictionary containing likers """ global graph global pcount d = {} # to hold the liker's name with a count of 1 likes_obj = graph.get(post_id + '/likes') while True: try: for liker in likes_obj['data']: d[liker['name']] = 1 likes_obj = requests.get(likes_obj['paging']['next']).json() except KeyError: pcount += 1 update_progress((pcount/n)*100) break return d for item in res['data']: merge_two_dicts(large_dic, get_likes_list(item['id'])) while True: if ctr == (n - 25) / 25: # as 25 is the default limit of /me/feed, to get the last n posts, set the value of ctr to (n-25)/25 break try: res = requests.get(res['paging']['next']).json() for item in res['data']: merge_two_dicts(large_dic, get_likes_list(item['id'])) ctr += 1 except KeyError: print 'end of calculating posts' sorted_x = sorted(large_dic.items(), key=operator.itemgetter(1)) print '\n' print '*'*100 print 'total posts considered', pcount print 'total likes generated', sum(large_dic.values()) print 'average likes per post', sum(large_dic.values()) / pcount print '*'*100 for item in reversed(sorted_x): print item[0], 'liked your posts', item[1], 'times'6. Change the value of n in the program to your preference, this is the number of posts that we want to consider while counting the likes.
7. Run that program, it might take a while depending on the response time of facebook server. The output would contain the list of likes in a sorted fashion. With the most liker at the top.
Sample output:
No comments:
Post a Comment