Escutando o Twitter

 Um bom ouvinte não só é popular em qualquer lugar, mas também fica sabendo das coisas depois de algum tempo.

O programa importador de Tweets, designado Marvin, necessita da API fornecida pelo Twitter. Num primeiro momento foi utilizada a REST API, mas a maneira mais correta é utilizando a Streaming API.

A Streaming API fornece um acesso de baixa latência ao fluxo global de Tweets. O streaming funciona através do envio de mensagens indicando novos Tweets. São fornecidos 3 endereços de acordo com a necessidade:

  • Public Streams: utilizado para seguir específicos usuários ou tópicos e para mineração de dados;
  • User Sreams: retorna os dados de apenas um usuário, utilizado para apresentar uma visão;
  • Site Streams: utilizado por servidores que necessitam conectar ou Twitter em nome de muitos usuários.

Para o desenvolvimento do Marvin, foi utilizado a Public Streams que suporta uma série de parâmetros passados através de POST. Para obter as mensagens desejadas, foi utilizado o parâmetro track. Esse parâmetro é uma lista de frases separadas por vírgulas, cada frase pode ter entre 1 e 60 caracteres e um ou mais termos separados por espaço. O  Tweet será retornado se ao menos uma das frases possuir todos os seus termos (em ordem e ignorando a caixa alta ou baixa). As frases são comparadas através de UTF-8, levando em consideração até a acentuação.

Para a conexão com a API, é necessário a autenticação que pode ser feita de duas formas: Básica e OAuth. No Marvin, optei por utilizar a autenticação básica que necessita um usuário e senha válidos do Twitter. Uma conexão pode ser desconectada pelo servidor quando uma outra conexão é realizada com as mesmas credenciais.

Para evitar super-congestionamento, as conexões podem receber o código HTTP 420 (Rate Limited). Essa situação pode acontecer através de sucessivas desconexões e reconexões (para troca de parâmetros por exemplo). Para evitar que o IP seja bloqueado por um período de tempo é importante que ao receber uma notificação 420, as tentativas de novas conexões sejam suspensas por alguns minutos.

A diferença básica entre o Streaming API e REST API é que no Streaming a conexão HTTP é mantida aberta, o que envolve uma utilização diferente pela aplicação.

Enquanto no REST, cada requisição de mensagens abre e fecha uma conexão HTTP (Figura 1), no Streaming API, a conexão HTTP é mantida por um processo paralelo e os Tweets são atualizados por notificações (Figura 2)

Figura 1

Mesmo o Streaming API sendo mais complexo que a REST, possui como benefício a utilização em uma infinidade de aplicativos.

Figura 2

Fonte: Twitter

4 comentários sobre “Escutando o Twitter

  1. Kleber Kelf disse:

    Não entendimuito bem.
    Na streaming api eu posso fazer varias requisições diferentes de diversos usuarios usando uma mesma conexão e sem limite de requisições por usuario???

    • Olá amigo, vou tentar explicar melhor.

      Na Streaming API é realizada única conexão, com um usuário somente. Exata conexão se manterá ativa e ficará retornar um fluxo de Tweets. O limite de conexões existe, mas é difícil ser atingido justamente pelo fato de não ser feita a desconexão e reconexão com o servidor.
      Eu não fiz o teste, mas se ficar criando conexões dentro de um loop infinito o limite deve ser atingido.

      Espero ter deixado mais claro. Se não ficou avisa que explico novamente.

      • Kleber Kelf disse:

        Acho que entendi. Então se eu quisese criar uma aplicação como o Tweetdeck então usar a streaming api seria mais recomendado para mim. Pois assim eu não receberia tantas notificações 420

      • Isso mesmo, numa aplicação semelhante ao Tweetdeck, que foi o meu caso (Marvin), eu tive que fazer esta troca, deixar de usar a REST API para utilizar a Streaaming API. Eu conecto quando o programa começa e só fecho a conexão quando ele termina. As mensagens vai sendo retornadas para mim conforme vão sendo postadas.

        Isso é uma coisa importante, a Streaming API trabalha com as mensagens do presente, não retornando o que já aconteceu, em alguns casos pode ser necessário utilizar a REST API para pegar o passado mais a Streaming para obter o presente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s