Created
October 25, 2012 03:25
-
-
Save rafaelnovello/3950251 to your computer and use it in GitHub Desktop.
Listar pessoas que deram Like
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
import webbrowser, urllib, json, sys | |
def login(): | |
#Dicionário de parâmetros usados para obter code. | |
args = { | |
'client_id': '318829251513892', | |
'redirect_uri': 'http://localhost:5000/', | |
'scope': 'friends_likes,user_likes,manage_pages' | |
} | |
#Abre um navegador para pedir a autorização do usuário. | |
#Depois de autorizar, o Facebook faz uma chama para a redirect_uri | |
#O code é enviado em forma de parâmetro na URL. | |
webbrowser.open('https://graph.facebook.com/oauth/authorize?' | |
+ urllib.urlencode(args)) | |
#Aguarda a entrada do parâmetro code pela linha de comando. | |
code = raw_input() | |
#Adiciona novos parâmetros ao dicionário inicial. | |
args['code'] = code | |
args['client_secret'] = '04512624aa679cfc29b8f14ee5d2a23c' | |
#Faz uma segunda chamada, agora para obter o access_token. | |
resp = urllib.urlopen('https://graph.facebook.com/oauth/access_token?' | |
+ urllib.urlencode(args)) | |
#Fatia a string retornada para pegar apenas o código access_token. | |
access_token = resp.read().split('&')[0].split('=')[1] | |
#Guarda o access_token em um arquivo. | |
with open('access_token.txt', 'w') as file: | |
file.write(access_token) | |
return access_token | |
def get_likes(page_username, post_id, access_token): | |
#Dicionário usado para requisições na API. | |
args = {'post_id': post_id, | |
'format': 'json', | |
'access_token': access_token | |
} | |
#Monta a url de chamada, com o nome da pagina, id do post e os parâmetros de chamada. | |
url = 'https://graph.facebook.com/%s/posts?%s' % (page_username, urllib.urlencode(args)) | |
#Faz a chamada e carrega o resultado para um dicionário Python. | |
resp = urllib.urlopen(url) | |
data = json.loads(resp.read()) | |
#Simplifica a massa de dados. | |
data = data['data'][0] | |
#Mostra as pessoas que deram Like! | |
for like in data['likes']['data']: | |
print like['id'], like['name'] | |
if __name__ == '__main__': | |
#Verifica se o access_token já foi gravado em arquivo. | |
#Caso contrário chama a função de login. | |
try: | |
access_token = open('access_token.txt').read() | |
except IOError: | |
access_token = login() | |
#Chama a função get_likes com o parâmetro passado na | |
# linha de comando e o access_token. | |
get_likes(sys.argv[1], sys.argv[2], access_token) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment