おふとんガレージ

技術的な忘備録とか雑記

node.jsのtwitモジュールを使ってTLをUserStreamで取得してみる

環境

  • Raspberry Pi2 + Raspbian
  • Node v6.3.0 + npm v3.10.3 導入済
  • Consumer Key と Access Token 取得済

twitモジュールのインストール

$ nam install twit

UserStreamを取得させてみる

Consumer Key と Access Token は取得したものをコピペしてください。

userstream.js

var twit = require('twit');

var twitter = new twit({
        consumer_key            : 'consumer_key',
        consumer_secret         : 'consumer_secret',
        access_token            : 'access_token',
        access_token_secret     : 'access_token_secret'
});

var stream = twitter.stream('user');

stream.on('tweet', function(tw){
        var text = tw.text;
        var screen_name = tw.user.screen_name;
        var user_name = tw.user.name;
        var time = tw.created_at;
        console.log(user_name +' ( @' + screen_name + ' ) ' + time + '\n' 
                                + text +'\n');
});

想像よりはるかに簡単でびびった(KONAMI


おまけ

nyan.js

var twit = require('twit');

const MY_TWITTER_ID == user_id;  
var twitter = new twit({
        consumer_key            : 'consumer_key',
        consumer_secret         : 'consumer_secret',
        access_token            : 'access_token',
        access_token_secret     : 'access_token_secret'
});

var stream = twitter.stream('user');


stream.on('tweet', function(tw){
	var text = tw.text;
	var screen_name = tw.user.screen_name;
	var user_name = tw.user.name;
	var time = tw.created_at;

        var isRetweet = tw.retweeted;
        var isRetweet2 = (new RegExp(/(R|Q)T @[^\s ]+/g)).test(text);
        
        if(user_id == MY_TWITTER_ID){ return;}
        if(isRetweet || isRetweet2){ return; }


	if(text.match(/にゃ/)){
		var tweet = '@' + screen_name + ' にゃーんっ'; 
		twitter.post('statuses/update', { status: tweet }, function(err, data, response){
		
			if(!err) {
				console.log('Posted : ' + data.user.screen_name + ' > ' + data.text + ' (' + data.created_at + ')');
			}	
		});
	}	
	//console.log(user_name +' ( @' + screen_name + ' ) ' + time + '\n' + text +'\n');
});

TLにねこさんがいたら鳴き声を返すよ。
RTと自分のツイートに反応しないように書き足したよ