<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Recuperar posts
Segundo a Graph API v2.3, podemos recuperar
Step1:  O módulo requests é utilizado para fazer requisições HTTP, ele será útil para que possamos requisitar novas páginas com conteúdo do Facebook.
Ele funciona da seguinte maneira
Step2:  'me/feed'
Inclui tudo que você vê no seu perfil (links compartilhados, checkins, fotos, atualização de status, além de incluir posts criados por amigos no perfil do usuário.
Step3:  Exercicio 2 - Altere o programa da aula6-parte5-recuperar ('me/feed') e imprima, além do histórico, o nome, tipo e a hora da criação.
    - story
    - name
    - type
    - created_time 
'me/home'
Retorna o fluxo de todos os posts criados pelo usuário e seus amigos. O que normalmente se encontra no Feed de Noticia.
Step4:  Note que só retornamos 25 resultados, porém nosso feed de notícias tem muita informação ainda para ser recuperada!
Não temos um parâmetro específico que podemos informar quantos items queremos, portanto temos que criar mecanismos para parar a captura dos dados.
Step5:  Da mesma forma que foi feito anteriormente, podemos requisitar a próxima página até que atinja a quantidade desejada.
<p style="color
<ASSISTANT_TASK:>
Python Code:
import facebook
import simplejson as json
import requests
Explanation: Recuperar posts
Segundo a Graph API v2.3, podemos recuperar:
/{user-id}/home - Retorna o fluxo de todos os posts criados pelo usuário e seus amigos. O que normalmente se encontra no Feed de Noticia.
/{user-id}/feed – inclui tudo que você vê no seu perfil (links compartilhados, checkins, fotos, atualização de status, além de incluir posts criados por amigos no perfil do usuário.
/{user-id}/statuses – Retorna apenas a atualização de status postado pelo usuário em seu próprio perfil
/{user-id}/posts – retorna os posts criados pelo usuário no seu próprio mural ou nos dos amigos, e pode incluir qualquer conteúdo como links compartilhados, checkins, fotos e atualização de status.
End of explanation
req = requests.get('http://python.org')
req.status_code # Se o código for 200, a requisição foi realizada.
#req.text
'Python' in req.text
req.close()
Explanation: O módulo requests é utilizado para fazer requisições HTTP, ele será útil para que possamos requisitar novas páginas com conteúdo do Facebook.
Ele funciona da seguinte maneira:
End of explanation
import facebook
access_token = 'EAACEdEose0cBAAFGsk2U0Jo1Kn9GZCWuXoMwflMusq2ajIqwcF3VU9vEp2M8y5ZB3stHJ5AAShfQvL72JYV8zGQXGvN5996EXDn9FV2DJvS8FTflaak0UuC6ZAm5HPjI2gsLRVEzdYlftGL93ZBWNVJuWzRnENYY7a3dpALP0AZDZD'
api = facebook.GraphAPI(access_token, version='2.3')
noticias = api.get_object('me/feed')
#print(json.dumps(noticias, indent=4))
for item in range(0, len(noticias['data'])):
    try:
        print(item, '--->', noticias['data'][item]['story'])
    except:
        pass
noticias = api.get_object('me/feed')
while True:
    try:
        for item in range(0, len(noticias['data'])):
            try:
                print(item, '--->', noticias['data'][item]['story'])
            except:
                pass
        noticias = requests.get(noticias['paging']['next']).json()
    except Exception as e:
        print(e)
        break
        
Explanation: 'me/feed'
Inclui tudo que você vê no seu perfil (links compartilhados, checkins, fotos, atualização de status, além de incluir posts criados por amigos no perfil do usuário.
End of explanation
feed_noticias = api.get_object('me/home')
len(feed_noticias['data'])
for item in range(0, len(feed_noticias['data'])):
    try:
        print(item, '---->', feed_noticias['data'][item]['name'])
    except:
        pass
feed_noticias['data'][1].keys()
feed_noticias['data'][1]['type']
feed_noticias['data'][1]['name']
#feed_noticias['data'][1]['application']
feed_noticias['data'][1]['updated_time']
feed_noticias['data'][1]['created_time']
# feed_noticias['data'][1]['comments']
feed_noticias['data'][1]['likes']
Explanation: Exercicio 2 - Altere o programa da aula6-parte5-recuperar ('me/feed') e imprima, além do histórico, o nome, tipo e a hora da criação.
    - story
    - name
    - type
    - created_time 
'me/home'
Retorna o fluxo de todos os posts criados pelo usuário e seus amigos. O que normalmente se encontra no Feed de Noticia.
End of explanation
feed_noticias['paging']
Explanation: Note que só retornamos 25 resultados, porém nosso feed de notícias tem muita informação ainda para ser recuperada!
Não temos um parâmetro específico que podemos informar quantos items queremos, portanto temos que criar mecanismos para parar a captura dos dados.
End of explanation
access_token = 'EAACEdEose0cBANbSsjf7TIxMNSvoGZCOZCa2Nbfjso2ZAQwKCrmotS5wEXPZCNvHx7zxqLU30Mn5J9cJdtTDJtALuSfn4mSSmCuASZAPTQy2DE3LSeboUzfZCzTIvJPrcR1E4ScwKyDAPN2mOPx1hNwfKPyYdikzGc32tauaKGMQZDZD'
amigos = api.get_connections("me", "friends")
todos_amigos = []
while True:
    try:
        for amigo in amigos['data']:
            todos_amigos.append(amigo['name'])
        amigos = requests.get(amigos['paging']['next']).json()
    except KeyError:
        break
print(todos_amigos)
Explanation: Da mesma forma que foi feito anteriormente, podemos requisitar a próxima página até que atinja a quantidade desejada.
<p style="color: red">É importante notar que no meu caso, tenho poucas conexões, desta forma a quantidade de dados é bem inferior se comparado ao facebook de uma pessoa que usa ativamente!!!!</p>
Bônus - Lista de Amigos
Também podemos recuperar as conexões, como por exemplo, uma lista de amigos.
End of explanation
<END_TASK>