ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

node.jsのtwitモジュールを使ってTwitter検索

はじめに

node.js & クローラー学習中です!

ツイ廃としては(?)やはりTwitterを使って何かしたくなっちゃいますね!今日はTwitter連携します。

twitモジュール

作者様のGithubにすべてが書かれてますね!

github.com

StreamAPIを使う

書いたスクリプト

MacBook-Air:twitter take$ cat tw-stream.js 
var Twit = require('twit');

var T = new Twit({
  consumer_key: '(省略)',
  consumer_secret: '(省略)',
  access_token: '(省略)',
  access_token_secret: '(省略)'
});

// stream and search word
var stream = T.stream('statuses/filter', {track: 'JavaScript'} );

stream.on('tweet', function(tw) {
  var text = tw.text;
  var user_name = tw.user.name;
  console.log(user_name + "> " + text);
});

これはJavaScriptが含まれるツイートを検索し続けます。実行結果を見てみましょう。

MacBook-Air:twitter take$ node tw-stream.js 
Русских во Флориде> Hiring:  #JavaScript Developer
#developer - #developerjobs #Reston #VA  #hiring #JobOpening #rtjobs 
Apply: https://t.co/conP0pnzfA
JavaScript is Easy> Xbox One Set To Start On New Crystal River Plant #fakeheadlinebot #learntocode #makeatwitterbot #javascript
Pinoy Business Club> <script type="text/javascript"... https://t.co/wTuZp0dCw7
Imperator Lauriosa> RT @gdipgh: Sign up for Javascript for Beginners, March 5-6 at the Pgh Tech Council: https://t.co/LcKv0h7n75
(省略)

ユーザ名と本文のみが流れます。

ちゃんと表示されます。ストリーム!

検索する

単純な検索は以下の方法で実現できます。今回はTwitter特有の検索オプションを使ってみました。fromでつぶやくユーザ名を指定します。countは取得する件数ですね。

data.StatusesにArrayの形で取れるので、forEachでまわして、ユーザ名と本文のみ取得しました。

forEachの引数は、ループで取れるオブジェクト、インデックス、元の配列オブジェクトですね。

MacBook-Air:twitter take$ cat tw-search.js 
var Twit = require('twit');

var T = new Twit({
  consumer_key: '(省略)',
  consumer_secret: '(省略)',
  access_token: '(省略)',
  access_token_secret: '(省略)'
});


T.get('search/tweets', { q: 'ブログの更新予告です。 from:take_she11', count: 5 }, function(err, data, response) {
    data.statuses.forEach(function(val,index,ar){
      console.log(val.user.name);
      console.log(val.text);
    });
})

実行結果です。

MacBook-Air:twitter take$ node tw-search.js 
take
ブログの更新予告です。(自動投稿)3/2=>atomutilを使って全記事のタイトルと本文を取得する,3/3=>「一行バカ売れ」から考えるブログや書籍のタイトル付け,3/4=>英語でプログラミング言語を学ぶ「JavaScript: The Good Parts 」Object編,
take
ブログの更新予告です。(自動投稿)3/10=>「サーバ/インフラエンジニア養成読本DevOps編」を読んだので使われてる技術まとめる,3/11=>はてなのエンジニアに期待する「アウトプット」を読んだ,3/12=>ニュースサイトを参考にブログのカテゴリ分けを再考する,
take
ブログの更新予告です。(自動投稿)2/29=>ブログの記事ネタリストをtoodledoで管理する,3/1=>日報をgitlabで管理すると結構いいよ,3/2=>atomutilを使って全記事のタイトルと本文を取得する,
take
ブログの更新予告です。(自動投稿)2/26=>node.jsでhello,worldする,2/27=>「脳が認める勉強法」から考える、自分にとってベストの勉強法,
take
ブログの更新予告です。(自動投稿)2/24=>「システム思考をはじめてみよう」を読んで考える、努力や我慢をしない問題解決,2/25=>小銭貯金ソリューション、いよいよ両替するためにコインケースを買った話,2/26=>node.jsでhello,worldする,

ちゃんと取れてますね!

まとめ

今回はnode.jsとTwitterを連携し、検索機能を試してみました。ツイートすることもできるはず。

次は取得したツイートを形態素解析にかけてみたいと思います。