Fork me on GitHub

7. Node.js модули, о которых вы должны знать: ntwitter

Всем здрасьте! Это седьмой пост в моей новой серии статей Node.js модули, о которых вы должны знать.

Первый пост был про dnode — фристайл RPC библиотеку для node.js. Второй пост был посвящен optimist — легковесному парсеру командной строки для node.js. Третий был про lazy — ленивые списки для node.js. А четвертый — про request — швецарский нож HTTP стримминга. Пятый был про hashish — библиотеку для работы с хэшами. Шестой пост касался read — обертки для чтения со стандратного потока ввода (stdin).

В этот раз я хочу вам представить ntwitter — асинхронный Twitter REST, потоковый и поисковый клиентский API. Данный модуль поддерживает­ Charlie McConnell, aka AvianFlu. Первоначальным автором ntwitter был technoweenie, но с тех пор сопровождающие менялись несколько раз.

Для того, чтобы воспользоваться модулем, необходимо получить API ключи. Сделать это можно на dev.twitter.com. Просто зарегистрируйте новое приложение и ключи — ваши.

Вот пример приложения ntwitter, которое твитит:

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: 'Twitter',
  consumer_secret: 'API',
  access_token_key: 'keys',
  access_token_secret: 'go here'
});

twit
  .verifyCredentials(function (err, data) {
    if (err) {
      console.log("Error verifying credentials: " + err);
      process.exit(1);
    }
  })
  .updateStatus('Test tweet from ntwitter/' + twitter.VERSION,
    function (err, data) {
      if (err) console.log('Tweeting failed: ' + err);
      else console.log('Success!')
    }
  );

А вот как выполнять поиск через ntwitter API:

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: 'Twitter',
  consumer_secret: 'API',
  access_token_key: 'keys',
  access_token_secret: 'go here'
});

twit.search('nodejs OR #node', function(err, data) {
  if (err) {
    console.log('Twitter search failed!');
  }
  else {
    console.log('Search results:');
    console.dir(data);
  }
});

Кроме того, вот так можно использовать потоковое API Twitter’a:

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: 'Twitter',
  consumer_secret: 'API',
  access_token_key: 'keys',
  access_token_secret: 'go here'
});

twit.stream('statuses/sample', function(stream) {
  stream.on('data', function (data) {
    console.log(data);
  });
});

Тут перечислены все варианты для statuses/*, которые вы можете использовать.

Обратите внимание, что вам не обязательно логиниться в twitter, чтобы выполнять поиск или стриминг.

Вот как можно стримить чьи-то твиты:

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: 'Twitter',
  consumer_secret: 'API',
  access_token_key: 'keys',
  access_token_secret: 'go here'
});

twit.stream('user', {track:'nodejs'}, function(stream) {
  stream.on('data', function (data) {
    console.dir(data);
  });
  stream.on('end', function (response) {
    // Обработка разъединения
  });
  stream.on('destroy', function (response) {
    // Обработка 'тихого' разъединения от твиттера
  });
});

И наконец, можно стримить твиты из конкретного местоположения, определенного некоторыми границами:

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: 'Twitter',
  consumer_secret: 'API',
  access_token_key: 'keys',
  access_token_secret: 'go here'
});

twit.stream('statuses/filter',
    {'locations':'-122.75,36.8,-121.75,37.8,-74,40,-73,41'},

    function(stream) {
      stream.on('data', function (data) {
        console.log(data);
      });
    }
);

Чтобы получить географические координаты границ региона, можно воспользоваться модулем node-finden от Cole Gillespie

Вот и всё. С ntwitter можно легко делать практически всё, что нужно для twitter.

С помощью npm можно легко установить ntwitter:

npm install ntwitter

Наслаждайтесь!