Usar PHP para Converter o Twitter em RSS

Formatar fluxos do Twitter como RSS com bibliotecas PHP

Este artigo explica a base do Twitter e mostra aos desenvolvedores de PHP como usar bibliotecas públicas para extrair status de suas próprias linhas de tempo e das de seus amigos e convertê-lo para outros formatos, principalmente RSS.

Thomas Myer, Principal, Triple Dog Dare Media

authorThomas Myer é o cofundador da Triple Dog Dare Media, em Austin, Texas, empresa de consultoria. Thomas escreve sobre os assuntos de gerenciamento de conhecimento, design de informações e capacidade de uso. Você pode enviar um e-mail para ele em tom@tripledogdaremedia.com.



03/Mar/2009

Antes de entrar de cabeça no tópico do Twitter, há algo que preciso colocar para fora. Apesar de seu um ávido usuário e fã do Twitter agora, logo que apareceu, eu fiquei um pouco confuso com ele. Na verdade, posso ter sido um pouco hostil.

Pronto. Falei. Agora, deixe-me contar a história por trás disso.

Quando o Twitter estava sendo introduzido na South by Southwest 2007, um grande amigo me ligou para falar sobre ele. "Você deveria se inscrever para obter uma conta. É algo realmente excelente!" Aparentemente, as mensagens de microblog estavam sendo exibidas em enormes monitores por toda parte do salão de convenções. Aquele ano eu estava viajando muito e não pude estar na South by Southwest. E, a propósito, estava fechado em meu pequeno mundinho para realmente prestar atenção. Microblog? Tweets? Do que esse cara estava falando?

Algum tempo depois, tive a oportunidade de brincar com o serviço e concluí que não era para mim. Na verdade, eu praticamente disse que o Twitter era uma grande perda de tempo. Não achei meus colegas seres humanos interessantes o suficiente para seguir mesmo quando haviam inventado a unidade warp ou a cura para o câncer. E, na época, o Twitter parecia estar cheio de pessoas falando sobre sanduiches que tinham acabado de fazer para seus filhos.

Avançando alguns meses e, de repente, estou usando o Twitter o tempo todo. Estou seguindo fontes de notícias, candidatos presidenciais e amigos que estão longe. Por que a grande mudança? Realmente não sei. Muitos de vocês colegas Twitterzens sabem do que estou falando aqui. É como ter seu primeiro telefone celular. Um dia você acha que é besteira andar por aí com um telefone caro quando há todos esses telefones públicos, telefones residenciais e telefones comerciais à sua disposição. Depois, quando se da conta, está perdido na estrada e, uma cidade qualquer e jura que o pequeno aparelho salvou sua vida.

Uma coisa é certa, no entanto: diferentemente de como telefones celulares tiraram o lugar dos telefones públicos, o Twitter não substituiu minha atividade de rede de relacionamento — ele a aprimora. Em geral, eu o uso para postar itens interessantes que encontro na Web — documentos e recursos que farão meus seguidores pensarem ou rirem. Espero que sejam pelo menos úteis de alguma forma. E, sim, alguns dias tudo que tenho a dizer é: "Diabos, preciso de um café" ou "Passei um apuro ontem à noite", mas mantenho mínima esse tipo de conversa mole.

Em algum ponto, sendo um desenvolvedor, quero mais. Quero consertar e desmontar as coisas ou pelo menos descobrir como as coisas funcionam. Em um artigo anterior, mostrei como construir um ferramenta simples de microblog em PHP, algo leve que funcionaria bem no contexto de um aplicativo de intranet ou outro sistema fechado.

Neste artigo, quero me aprofundar um pouco mais nas entranhas do Twitter, explorando a API um pouco, depois, indo para uma biblioteca PHP pública bem conhecida que pode facilitar algumas tarefas. O objetivo deste artigo é mostrar como as coisas funcionam e fornecer algumas ferramentas com as quais deseja exportar sua linha de tempo do Twitter para RSS. O propósito? Compartilhar é o sine qua non, a raison d'etre dos serviços de mídia de relacionamento como o Twitter. Às vezes é uma boa ideia ter suas atualizações do Twitter em seu Web site — principalmente, se, como eu, você usar o serviço para compartilhar informações e recursos.

Alguns de vocês podem estar se perguntando: "Bem, para que isso?" Se vem acompanhando as tendências de marketing e mídia de relacionamento, sabe que todos — governos, marcas corporativas, rpofissionais de marketing, consumidores, entusiastas de todo tipo — estão entrando na onda de "mercados são conversas". Na verdade, pode-se dizer que uma grande quantidade de tinta digital está sendo usada nesse tópico.

Diferentemente da maioria das pessoas, você é um especialista em tecnologia e está, portanto, bem posicionado para realmente saber algo quantitativo sobre essas ferramentas e como as conversas são ativadas. É bom para sua carreira — você será uma pessoa na sala que realmente entende tudo isso nos mínimos detalhes, em vez de apenas jogar conversa afiada sobre de mídia de relacionamento. Além disso, é bom para continuar a expandir seu conjunto de qualificações.

Base Técnica sobre APIs do Twitter

Na superfície, o Twitter é basicamente um serviço de blog reduzido. Há usuários que postam tweets. Tweets são limitados a 140 caracteres e têm registro de data e hora. Os usuários podem seguir uns aos outros, o que é basicamente um serviço de organização simplificada. As informações sobre contas do Twitter e linhas de tempo e tweets associados estão disponíveis não apenas para interfaces da Web padrão, mas também para aplicativos de terceiros através da API do Twitter. Essa API expõe os dados e serviços do Twitter através de uma API Representational State Transfer (REST) ou de uma API de procura.

Este artigo foca somente a API REST, pois você realmente não precisa de funcionalidade de procura para publicar um feed RSS de tweets. Não precisa dizer que a API de procura é extremamente útil, fornecendo dados em formatos Atom e JavaScript Serialized Object Notation (JSON) e permitindo diversos critérios de procura (tweets contendo uma palavra, de um usuário específico, para um usuário específico, fazendo referência a um usuário específico, contendo uma hashtag e combinações de todos acima). A API REST é igualmente útil, fornecendo dados em formatos RSS, XML, JSON e Atom.

A API REST usa autenticação básica de HTTP como seu esquema de autenticação e a maioria das bibliotecas e utilitários requer o uso de um nome de usuário e senha do Twitter para iniciar. Se não tiver uma conta do Twitter, precisa de uma para iniciar ou, pelo menos, acesso às credenciais de autenticação de uma conta do Twitter. No entanto, como o wiki da API do Twitter informa: "Todas as respostas são relativas ao contexto do usuário autenticado." Se estiver tentando recuperar informações de um usuário protegido que você não está seguindo, seu pedido falhará.

Como o nome da API REST sugere, a API do Twitter tenta estar em conformidade com os princípios de design de Representational State Transfer. REST é geralmente usada em um sentido amplo para descrever qualquer interface simples que transmita dados específicos do domínio através de HTTP sem nenhuma camada adicional (como SOAP ou cookies). Serviços RESTful geralmente giram em torno de um ou mais recursos, cada um dos quais estando amarrado a algo exclusivamente endereçável — ou seja, um Identificador Uniforme de Recursos (URI). No contexto da API do Twitter, há diversos serviços RESTful disponíveis para extrair informações sobre usuários, seguidores, linhas de tempo e mais.

O uso da API do Twitter envolve algumas abordagens familiares. Em muitos casos, é possível alternar de um tipo de dados para outro, simplesmente alterando a extensão do nome do arquivo. Deseja Atom em vez de RSS? Simplesmente altere a extensão do nome do arquivo e, se o método específico suportar isso, obterá um novo fluxo de dados formatado. Converter os parâmetros de seu pedido para 8-bit Unicode Transformation Format (UTF-8) e usar codificação do Localizador Uniforme de Recursos (URL) também é uma boa ideia, principalmente, se se esses pedidos envolverem cadeias de caracteres complexas.

É importante observar que a API do Twitter suporta os seguintes tipos de pedidos:

  • GET, que é usado para recuperação de dados
  • POST, que é usado para enviar, alterar ou destruir dados
  • DELETE, que também é usado para destruir dados

Se tentar recuperar dados com uma operação POST , a API retorna um erro — corresponder métodos a tipos de pedidos é um bom lugar para iniciar a depuração.

Como outros serviços REST que usam HTTP, a API do Twitter exibe um conjunto de códigos de status e mensagens de erro. A API do Twitter retorna códigos de status HTTP padrão e apropriado, descrito na Tabela 1, em cada pedido. Isso torna trabalhar com a API do Twitter semelhante a (se não indistinto de) outras operações baseadas em HTTP com as quais já está acostumado, como Asynchronous JavaScript + XML (Ajax) e operações síncronas simples GET e POST .

Tabela 1. Códigos de Status da API do Twitter
CódigoDescrição
200 OKTudo está bem.
304 Não ModificadoNenhum dados novo a retornar.
400 Pedido InválidoPedido inválido, com alguns detalhes. Isso é o que se obtém também se tiver excedido o limite da taxa (mais sobre isso daqui a pouco).
401 Não AutorizadoVocê esqueceu de fornecer detalhes de autenticação ou os fornecidos são inválidos.
404 Não LocalizadoO URI solicitado não existe (ou seja, o usuário não existe ou o serviço de dados não é suportado).
500 Erro Interno do ServidorIsso geralmente é um problema do lado do Twitter.
502 Gateway InválidoO Twitter está inativo ou sendo atualizado.
503 Serviço IndisponívelOs servidores do Twitter estão sobre carregados.

As mensagens de erro são sempre retornadas em seu formato solicitado. Se você solicitar XML, obterá todas as mensagens de erro em XML. Por exemplo, a Lista 1 é um fragmento de uma mensagem de erro publicada no wiki da API do Twitter.

Lista 1. Trecho de uma Mensagem de Erro (Formato XML)
<?xml version="1.0" encoding="UTF-8"?>
<hash>
È <request>/direct_messages/destroy/111.xml</request>
È <error>No direct message with that ID found.</error>
</hash>

Uma nota final sobre limites de taxa: clientes têm permissão para 100 pedidos por hora, a partir de seu primeiro pedido, sem incluir atualizações POST . Pedidos não autenticados são controlados pelo endereço IP, enquanto que os autenticados são controlados pelo usuário que faz o pedido. Toda vez que o limite da taxa for excedido, o Twitter retorna uma mensagem de erro 400, portanto, é necessário pensar em implementar caches locais do seu lado das coisas. As linhas de tempo públicas são armazenadas em cache por pelo menos 60 segundos pelo Twitter, portanto, solicitar um atualização é praticamente uma perda de tempo.

No entanto, caso se veja dando de frente com o limite de taxa, é possível solicitar lista branca do Twitter (consulte Recursos). Eles retornam dentro de 48 horas e, se aprovado, seu aplicativo terá permissão para 20.000 pedidos por hora.


Trabalhando com a API REST do Twitter

Quando estava apenas iniciando como um jovem desenvolvedor da Web, não tinha nenhum problema para sair correndo para qualquer canto para ficar codificando noite e dia. Após quinze anos, estão, certamente, muito mais velho e, espero, um pouco mais sábio. Apesar de fornecer alguns detalhes sobre os métodos da API REST do Twitter aqui, é somente para propósitos informativos. No final do dia, você irá usar uma bela biblioteca PHP que facilita seu desgaste em grande parte.

No entanto, como não vale a pena introduzir uma biblioteca sem algum contexto, o que segue é uma breve descrição de alguns dos métodos e chamadas mais amplamente usados da API REST do Twitter.

O método mais comumente usado da API provavelmente é public_timeline. Ele está disponível, como outros métodos de status, em formatos XML, JSON, RSS e Atom e, provavelmente, é recuperado através de um método GET . Ele está disponível em http://twitter.com/statuses/public_timeline.xml (ou .rss, etc.). O elemento de status, mostrado na Lista 2, basicamente contém nós que descrevem a conta e possui um nó de usuário integrado que descreve o usuário.

Lista 2. O Elementos de Status public_timeline
<status>
  created_at
  id
  text
  source
  truncated
  in_reply_to_status_id
  in_reply_to_user_id
  favorited
  <user>>
   id
   name
   screen_name
   description
   location
   profile_image_url
   url
   protected
   followers_count

Outro método bem comum é friends_timeline, que retorna os 20 status mais recentes postados pelo usuário autenticado e pelos amigos desse usuário. Isso é bem equivalente a http://www.twitter.com/home se você tiver efetuado login no Twitter. O método esta disponível em http://twitter.com/statuses/friends_timeline.xml (ou .rss, .atom, .json) e é recuperado através de um pedido GET . É possível inserir alguns parâmetros opcionais, como since (uma data modificada por HTTP, como Mon%2C+2+Feb+2009+11%3A45%3A33+GMT) ou page (para recuperar uma página específica de tweets da linha de tempo).

Em seguida, há o método user_timeline , que é semelhante a friends_timeline , mas é limitado aos (adivinhou) tweets de um usuário específico. Se nenhum nome de usuário do Twitter for especificado, a API supõe que deseja recuperar a linha de tempo do usuário autenticado.

Há muitos outros métodos disponíveis, é claro, mas esses três são suficientes para iniciar. Agora, como me referi, e possível brincar com a API do Twitter sem nenhuma ajuda, mas isso não o torna um desenvolvedor produtivo. Você possui prazos finais próprios, portanto, é melhor usar uma biblioteca pré-construída.

Felizmente para você, uma bela biblioteca chamada twitterlibphp está disponível (consulte Recursos). Vá em frente e faça download dela e, então, inclua a mesma em seu servidor de teste ou de desenvolvimento. Na próxima seção, você começará a brincar com ela.


Usando twitterlibphp

A biblioteca twitterlibphp contém uma lista de métodos, sendo que cada um é mapeado para um método de API do Twitter. A própria biblioteca trata de todas as conexões, autenticação, manipulação de erros e o vai e volta. Simplesmente inclua a mesma, autentique e use um dos métodos para iniciar.

Para iniciar, veja o que ocorre se usar o método showUser() para recuperar um status XML para um usuário específico. Na Lista 3, simplesmente substitua os valores de $user e $pw pelas credenciais de sua conta e isso será suficiente para recuperar informações de status.

Lista 3. O Método showUser()
include_once("twitter.lib.php");

$user = "your-username";
$pw = "your-password";

$twitter = new Twitter($user,$pw);

$xml = $twitter->showUser("xml", $user);

echo $xml;

O resultado fornece muitas informações em sua saída bruta. No XML mostrado na Lista 4, você não apenas vê meu nome real, o nome de tela e o tweet mais recente, mas também pode ver com quem estou tweeting, o caminho para a imagem de meu perfil e, até mesmo, minhas preferências de cores.

Lista 4. Saída do Método showUser()
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>14129237</id>
  <name>Thomas Myer</name>
  <screen_name>myerman</screen_name>
  <location>Most likely rushing to my next</location>
  <description>Author, Infopreneur, Blogger, Consultant</description>
  <profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/
  74029317/myerman_gmail.com_eef446f6_normal.jpg</profile_image_url>
  <url>http://www.tripledogs.com</url>
  <protected>false</protected>
  <followers_count>55</followers_count>
  <profile_background_color>FFFFFF</profile_background_color>
  <profile_text_color>5F5454</profile_text_color>
  <profile_link_color>A18FB9</profile_link_color>
  <profile_sidebar_fill_color>082C35</profile_sidebar_fill_color>
  <profile_sidebar_border_color>120E26</profile_sidebar_border_color>
  <friends_count>16</friends_count>
  <created_at>Wed Mar 12 02:10:30 +0000 2008</created_at>
  <favourites_count>3</favourites_count>
  <utc_offset>-21600</utc_offset>
  <time_zone>Central Time (US & Canada)</time_zone>
  <profile_background_image_url>http://static.twitter.com/images/themes/theme1/bg.gif
  </profile_background_image_url>
  <profile_background_tile>false</profile_background_tile>
  <following>false</following>
  <notifications>false</notifications>
  <statuses_count>427</statuses_count>
  <status>
    <created_at>Sun Feb 01 21:29:17 +0000 2009</created_at>
    <id>1167762741</id>
    <text>@adonoho [tweet snipped for privacy].</text>
    <source>web</source>
    <truncated>false</truncated>
    <in_reply_to_status_id>1167558714</in_reply_to_status_id>
    <in_reply_to_user_id>882801</in_reply_to_user_id>
    <favorited>false</favorited>
    <in_reply_to_screen_name>adonoho</in_reply_to_screen_name>
  </status>
</user>

Considerando todos esses detalhes, seria fácil processar esse conjunto de nós XML com SimpleXML e poder fazer algo útil com tudo isso. Por exemplo, seria possível gravar facilmente uma ferramentas que exibe o elemento screen_name juntamente com statuses_count e, possivelmente, o nó created_at do status mais atual.

Por mais interessante que tudo isso seja, o que você realmente quer é RSS. Especificamente, quer recuperar a linha de tempo de um usuário. Quando estiver no formato RSS, é possível disponibilizá-la em um site orientado por PHP como um widget de barra lateral, uma página exclusiva ou qualquer outro destino endereçável.

Para fazer isso, altere o exemplo anterior e use o método getUserTimeline() da biblioteca, mostrado na Lista 5.

Lista 5. O Método getUserTimeline()
include_once("twitter.lib.php");

$user = "your-username";
$pw = "your-password";

$twitter = new Twitter($user,$pw);

$rss = $twitter->getUserTimeline("rss", $user);

echo $rss;

Como pode ver, essa função retorna RSS pronto para ser usado.

Lista 6. Saída do Método getUserTimeline()
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Twitter / myerman</title>
    <link>http://twitter.com/myerman</link>
    <description>Twitter updates from Thomas Myer / myerman.</description>
    <language>en-us</language>
    <ttl>40</ttl>
  <item>
    <title>myerman: just got my copy of groundswell...also,
    just got back from seeing Taken. Liam Neeson kicks butt!</title>
    <description>myerman: just got my copy of groundswell...also, just got back from
    seeing Taken. Liam Neeson kicks butt!</description>
    <pubDate>Sun, 01 Feb 2009 04:16:55 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1166126064</guid>
    <link>http://twitter.com/myerman/statuses/1166126064</link>
  </item>
  <item>
    <title>myerman: For those of us trying to learn
    Objective-C - some libraries. http://tinyurl.com/dkaj4m</title>
    <description>myerman: For those of us trying to learn
    Objective-C - some libraries. http://tinyurl.com/dkaj4m</description>
    <pubDate>Fri, 30 Jan 2009 20:06:13 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1162686918</guid>
    <link>http://twitter.com/myerman/statuses/1162686918</link>
  </item>
  <item>
    <title>myerman: RT @andyhunter Google Chief Economist
    on innovation: We’re in the middle of .. a period of “combinatorial innovation.”
    http://bit.ly/xgpN</title>
    <description>myerman: RT @andyhunter Google Chief Economist
    on innovation: We’re in the middle of .. a period of “combinatorial innovation.”
    http://bit.ly/xgpN</description>
    <pubDate>Fri, 30 Jan 2009 15:35:18 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1161902779</guid>
    <link>http://twitter.com/myerman/statuses/1161902779</link>
  </item>
  <item>
    <title>myerman: A-Team movie out next year? I love it when a plan comes together.
    http://tinyurl.com/ahckx9</title>
    <description>myerman: A-Team movie out next
    year? I love it when a plan comes together.
    http://tinyurl.com/ahckx9</description>
    <pubDate>Thu, 29 Jan 2009 19:21:34 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1159386717</guid>
    <link>http://twitter.com/myerman/statuses/1159386717</link>
  </item>
  <item>
    <title>myerman: @andyhunter @cesart it's the pulvinar that gets you in trouble...
    every time!</title>
    <description>myerman: @andyhunter @cesart
    it's the pulvinar that gets you in trouble...
    every time!</description>
    <pubDate>Thu, 29 Jan 2009 16:44:30 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1158923928</guid>
    <link>http://twitter.com/myerman/statuses/1158923928</link>
  </item>
  <item>
    <title>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
    </title>
    <description>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
    </description>
    <pubDate>Thu, 29 Jan 2009 16:43:55 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1158922223</guid>
    <link>http://twitter.com/myerman/statuses/1158922223</link>
  </item>
  <item>
    <title>myerman: Zombies ahead on Lamar & 15th....silly hackers! 
    http://tinyurl.com/c2s3nw</title>
    <description>myerman: Zombies ahead on Lamar & 15th....silly hackers!
    http://tinyurl.com/c2s3nw</description>
    <pubDate>Thu, 29 Jan 2009 13:21:24 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1158382096</guid>
    <link>http://twitter.com/myerman/statuses/1158382096</link>
  </item>
  <item>
    <title>myerman: Obama's Mac: http://tinyurl.com/b4hsza</title>
    <description>myerman: Obama's Mac: http://tinyurl.com/b4hsza
    </description>
    <pubDate>Thu, 29 Jan 2009 13:17:58 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1158375012</guid>
    <link>http://twitter.com/myerman/statuses/1158375012</link>
  </item>
  <item>
    <title>myerman: OK, looks like I'll be
    speaking on Saturday at SxSW 2009.  More details
    for the freelancer in your life: http://tinyurl.com/df8my9</title>
    <description>myerman: OK, looks like I'll be speaking on Saturday at SxSW 2009. 
    More details for the freelancer in your life: http://tinyurl.com/df8my9</description>
    <pubDate>Wed, 28 Jan 2009 22:39:29 +0000</pubDate>
    <guid>http://twitter.com/myerman/statuses/1156744158</guid>
    <link>http://twitter.com/myerman/statuses/1156744158</link>
  </item>

...snip
  </channel>
</rss>

Há um porém: não se deve simplesmente chamara essa função repetidamente até atingir o limite da taxa. Em vez disso, deve-se controlar um pouco os pedidos. Pode-se fazer algo bem inteligente com o método rateLimitStatus() e algum armazenamento em cache rolado do início para obter um efeito de armazenamento em cache local.

O método rateLimitStatus() , mostrado na Lista 7, é um pedido simples que permite verificar se atingiu seu limite de taxa por hora — e, não, antes que pergunte, verificar o status do limite da taxa não conta para seu limite. Tudo que precisa ser feito é fornecer um formato e a função faz o resto.

Lista 7. O Método rateLimitStatus()
include_once("twitter.lib.php");

$user = "your-username";
$pw = "your-pw";

$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("xml");
echo $status;

Ao executar o método rateLimitStatus() , receberá o XML a seguir de volta.

Lista 8. Saída do Método rateLimitStatus()
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <hourly-limit type="integer">100</hourly-limit>
  <reset-time type="datetime">2009-02-02T05:44:45+00:00</reset-time>
  <reset-time-in-seconds type="integer">1233553485</reset-time-in-seconds>
  <remaining-hits type="integer">99</remaining-hits>
</hash>

O que deseja é o valor dentro do nó remaining-hits . Se isso atingir cinco alguma vez (ou possivelmente 10), vá para seu feed RSS armazenado em cache em vez disso. Com esse conjunto de nós XML disponível, tudo que precisa ser feito é carregar SimpleXML para simplesmente analisar o status do limite da taxa. É claro que se não estiver familiarizado com as excentricidades de XML, pode ser melhor analisar em JSON.

Executar o mesmo código usando o formato JSON resulta em uma instrução muito mais compacta:

{"remaining_hits":95,"hourly_limit":100,"reset_time":"Mon Feb 02 05:44:45 +0000 2009",
"reset_time_in_seconds":1233553485}

Poderia gastar algum tempo para dividir essa cadeia por vírgulas e, então, novamente por dois pontos para obter o valor de remaining_hits. Isso é bem simples, é claro. No entanto, se estiver executando PHP V5.2.0 ou superior, provavelmente já possui o método json_decode() disponível. Conforme mostrado na Lista 9, tudo que precisa ser feito é usar essa função para obter o número remaining_hits e, então, usar uma instrução if simples para ver se esse número está perto de 10 ou se é inferior. Se não estiver, retire o feed RSS do Twitter, mas salve-o em um arquivo para uso posterior. Se for inferior a 10, forneça o arquivo RSS salvo armazena em cache localmente.

Lista 9. Usando o Método json_decode()
include_once("twitter.lib.php");

$user = "your-username";
$pw = "your-password";

$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("json");
$fileName = $user.".rss";

$json_dump = json_decode($status);

$remaining = $json_dump->remaining_hits;

if ($remaining <= 10){
	
	$fh = fopen($fileName, 'r');
	$rssData = fread($fh, filesize($fileName));
	fclose($fh);
	echo $rssData;

	
}else{

	$rss = $twitter->getUserTimeline("rss", $user);
	
	//write to file
	//in case we need it!
	$fh = fopen($fileName,'w') or die("can't write to file");
	fwrite($fh,$rss);
	fclose($fh);
	
	echo $rss;
}

Tudo que resta é dar a esse arquivo PHP um nome apropriado (por exemplo, twitterfeed.php) e usá-lo de forma apropriada oferecendo-o a seus usuários como outra opção de assinatura, alimentando um widget de barra lateral WordPress ou algo parecido.


Conclusão

Neste artigo, você aprendeu um pouco sobre como o Twitter funciona — especificamente, o que a API REST expõe. Aprendeu também como usar uma biblioteca PHP disponível publicamente para simplificar sua carga de trabalho. Com alguma sorte, aprendeu o suficiente para construir seus próprios aplicativos e utilitários.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=423848
ArticleTitle=Usar PHP para Converter o Twitter em RSS
publish-date=03032009