Salve Comitê Revolucionário Ultra-Jovem! Ráááá.. Alguém lembra ? Caju, Chiclé e Macaco ? Pô, nostalgia na alta agora galerê! Mas bons tempos aqueles…
Enfim, esse não é o assunto do nosso post. Voltemos a falar de nosso microblog predileto, sim, o Twitter! No primeiro post da série, falamos inicialmente sobre a utilização da API do twitter e mostramos como atualizar seu status utilizando-a. Agora daremos continuidade ao nosso estudo e resgataremos nossa timeline, ou seja, a atualização do status de todos a quem seguimos, inclusive as nossas próprias. Entretanto, aconselho fortemente a leitura do post anterior para entendimento de alguns conceitos e recursos utilizados neste.
Como também mencionado anteriormente, a API do twitter oferece uma limitação de requisições, como os próprios alegam, para colocar ordem. Como o exemplo desta que utilizaremos, a limitação é de 150 requisições por hora, para APIs que necessitam de autenticação (nosso caso), o controle é feito pelo usuário requisitado, para as que não precisam, essa restrição é feita pelo endereço IP.
A API para resgatar nossa timelime pode ser acessada pelo link:
http://api.twitter.com/1/statuses/home_timeline.format
Perceba que ao final da URL temos .format. Isso indica ao twitter em qual formato queremos receber o retorno; os formatos disponíveis são: XML, JSON e ATOM. E adivinha qual utilizaremos? XML?! NOT! Utilizaremos o formato JSON, pelo simples motivo que usaremos a função do php json_decode para converter o retorno em array, facilitando assim imensamente a manipulação. A API que utilizaremos nos retorna os últimos 20 registros de atualização dos nossos amiguinhos do twitter e da nossa própria timeline, mas veja bem, no máximo 20.
Vamos ao código:
<?php
/**
*
* - Função para resgatar sua timeline no twitter.
* Referente a sua home/time_line.
*
* @author Frederico Estrela
* @since 2010-05-18
* @version 2010-05-18
* @access public
* @param <string> $username
* @param <string> $password
*
*/
function getTimeLine( $username, $password )
{
// Inicializa o recurso curl e retorna o
// resource que iremos trabalhar
$ch = curl_init();
// Remove espaço de usuário e senha para autenticarmos na API
$username = trim($username);
$password = trim($password);
/*
* URL de API para resgatar a timeline do usuário
* logado. Nesse caso estamos pedindo o seu retorno
* em JSON.
*/
$host = 'http://api.twitter.com/1/statuses/home_timeline.json';
// Mesma diretivas apresentadas no post anterior
//utilize as linhas comentadas abaixo caso sua rede
//esteja passando por um proxy
//curl_setopt($ch, CURLOPT_PROXY, "http://seuproxy.local");
//curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
//curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "USER:PASSWORD");
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
// Efetua a requisição e pega o retorno em JSON
$retorno = curl_exec($ch);
// Informações sobre a requisição
$resultadoFinal = curl_getinfo($ch);
curl_close($ch);
/*
Aqui retornamos o status da requisição e o retorno
em JSON convertida para array com a função json_decode
*/
return array( 'return' => $resultadoFinal['http_code'],
'timeline' => json_decode( $retorno, true ) );
}
?>
Podemos notar que o código é praticamente igual ao que utilizamos anteriormente, apenas com algumas modificações. Nesta nova versão não passamos o status para ser atualizado e passamos outra URL para realizar a requisição. Ao final do script retornamos o campo http_code, que nos indica o status final da requisição e a resposta propriamente dita, já convertida para array.
Para melhorar o entendimento criei uma index para apresentar a timeline requisitada. Segue o código:
<?php
require_once('timeline.php');
// Chamada de função passando parâmetros
// necessários retornando timeline
$timeline = getTimeLine(USR, PWD);
// Se o retorno for diferente de 200, acusa erro.
if ( $timeline['return'] != 200 ) {
// Imprime erro
echo '<div class="erro">Cod ' . $timeline['return'] .
' - Erro ao recuperar timeline.</div>';
} else {
// Pega retorno da timeline
$friends = $timeline['timeline'];
echo '<ul>';
// Imprime toda timeline
foreach ( $friends as $time ) {
echo '<li>' .
'<img src="' . $time['user']['profile_image_url'] .
'" />' .
'<span>' . $time['user']['screen_name'] . '<br />' .
' Data/Hora: ' .
date('d/m/Y H:i:s', strtotime( $time['created_at'] ) ) .
'<br /></span>' .
'<label>' . utf8_decode( $time['text'] ) . '</label>' .
'</li>';
}
echo '</ul>';
}
?>
O código completo pode ser baixado ao final do post. Basta alterar as constantes de usuário e senha no início da index.php e brincar!
Galera é isso ai, estou pensando em futuramente até fazer uma classe de manipulação total do twitter e disponibilizar aqui, o que acham? Manifestem-se nos comentários!
É isso ai… Enjoy it!
Scripts: Clique aqui para Download
Artigos relacionados:



![[REVIEW] Samsung Galaxy SIII](http://cpdd.com.br/wp-content/uploads/2012/05/destaqueGS3-50x50.png)

Pingback: Tweets that mention Recuperando sua Timeline do Twitter via PHP -- Topsy.com