Este post faz parte de uma série contanto cada passo que eu darei no desenvolvimento de um app de curadoria de conteúdo.



O objetivo deste post é ensinar como fazer a stream da timeline de um determinado usuário do twitter, usando node.js. Para isto, nós usaremos a biblioteca ntwitter, além de ter a necessidade de um app registrado no twitter para termos acesso aos tokens.

Instalando as dependências

npm init
npm install ntwitter --save

OBS: Usei a opção –save para adicionar a dependência ntwitter no nosso package.json

Entendendo a mágica

Usando a lib ntwitter tudo fica muito simples, como mágica, mas precisamos entender o que ela está fazendo.

A lib está usando a API User Stream a qual nos concede o poder de trabalhar com os dados e eventos de um usuário específico.

TL:DR;

Apesar a User Stream ser bem semelhante com a Site Stream, existe uma diferença: Nós queremos pegar a timeline de um usuário específico, “Many-To-One”. Se estivéssemos em uma relação “Many-To-Many”, vários usuários pegando os dados de suas respectivas contas, usaríamos a Site Stream.

Developando

Precisamos chamar a a lib e setar nossas variáveis, o que pode ser facilmente feito:

1
2
3
4
5
6
7
8
9
10
11
12
13
var twitter = require('ntwitter');

var consumer_key = "";
var consumer_secret = "";
var access_token_key = "";
var access_token_secret = "";

var t = new twitter({
  consumer_key: consumer_key
  , consumer_secret: consumer_secret
  , access_token_key: access_token_key
  , access_token_secret: access_token_secret
});

O access_token_key e access_token_secret você irá conseguir somente se tiver o seu aplicativo registrado no twiiter. Já as consumer_key e consumer_scecret, pertence a cada usuário, você pode usar as mesmas da conta que você usou para registrar o aplicativo.

Usaremos a função stream na biblioteca ntwitter para podemos ter acesso a API do twiiter, sendo a chamada composta por:

1
t.stream (API, track, callback)
  • API corresponde as rotas disponibilizadas pelo twitter, como GET users, GET sites e várias outras, disponibilizadas na documentação do twitter.
  • Track corresponde ao que queremos pegar: Usuários, tweets de uma determinada hashtag, posts em uma região (usando latitude e longitude).

A função para pegar o stream ficará:

1
2
3
4
5
6
7
8
9
t.stream('user'
  , { track: 'dev_trend' }
  , function(stream){
    stream.on('data', function(tweet){
      // Quando você "curte" um comentário, ele retorna o texto como undefined
      console.log(tweet.text);
    });
  }
);

Para ver a mágica acontecer, basta usar node nomeDoArquivo.js e você verá no console todos os tweets da sua timeline. O resultado será:

TL:DR;

O objeto tweet é um JSON contendo todas as informações a respeito do usuário que postou, do usuário que está vendo e informações acerca do tweet. Ele possui vários dados interessantes. Vale a pena ‘brincar’ com ele.

Talk is cheap, show me the code.

It’s all folks!