最近、山手線にホームドア設置されて遅延すること多くないですか?
社畜の僕は遅刻しないよう、毎朝ツイッターで山手線で検索しています。
毎朝ツイッター検索するのがめんどくさいので、node.jsを使って、自動化しました。
環境はCentOS6.5、node.jsはv5.2.0です。
これを読むと分かること
- node.jsでツイッター検索
- node.jsでメール送信
- cronに登録し、1と2を定期的に自動実行
node.jsでツイッター検索
twitパッケージを使用しました。
https://github.com/ttezel/twit
書いてあるとおり、twitをインストールします。
tokenなどが必要になるので、下記ページで登録します。
入力項目通りに入れてくだけなので説明は端折ります。
https://apps.twitter.com/
出来上がったjavascriptは下記のとおりです。
twitに設定するキーなどは登録したキーをコピペしてください。
var Twit = require('twit')
var T = new Twit({
consumer_key: ''
, consumer_secret: ''
, access_token: ''
, access_token_secret: ''
});
T.get('search/tweets', { q: '山手線', count: 30 }, function(err, data,
var statuses = data['statuses'];
for (var i = statuses.length - 1; i >= 0; i--) {
var user_name = statuses[i].user.name;
var text = statuses[i].text;
console.log(i + ' : ' + user_name + ' > ' + text);
};
});
出来上がったjsを実行します。
ファイル名は適宜読み替えてください。
実行するとコンソールに山手線でツイッター検索した結果が出ます。
node.jsでメール送信
メール送信はnodemailerを使いました。
http://nodejs.osser.jp/node/node-nodemailer/
とりあえず、インストール!
これもドキュメント通りに実装します。
出来上がったjsは下記のとおりです。
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport();
transporter.sendMail({
from: 'hoge@gmail.com',
to: 'fuga@ezweb.ne.jp',
subject: 'ハロー',
text: 'ハローニューワールド'
});
実行してみましょう。
これでtoに設定したメールアドレスにメールが届くと思います。
めっちゃ簡単ですね。これは普通にびっくりしました。
ちなみにメール本文に設定したのは、プログラミング言語でよくあるhello worldではなく、
ハローニューワールド。アイカツの名曲です。
ぜひ聴いてみてください。
1と2で作ったjsを合体させて、最終的に下記のようなjsファイルができました。
var Twit = require('twit')
var T = new Twit({
consumer_key: ''
, consumer_secret: ''
, access_token: ''
, access_token_secret: ''
});
// メール本文用の文字列
var mail_text = '';
T.get('search/tweets', { q: '山手線', count: 30 }, function(err, data, response) {
var statuses = data['statuses'];
for (var i = statuses.length - 1; i >= 0; i--) {
var user_name = statuses[i].user.name;
var text = statuses[i].text;
mail_text += i + ' : ' + user_name + ' > ' + text;
};
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport();
transporter.sendMail({
from: 'hoge@gmail.com',
to: 'fuga@ezweb.ne.jp',
subject: '山手線遅れてね?',
text: mail_text
});
});
cronに登録し、1と2を定期的に自動実行
crontabに普通に登録します。
node.jsにもcronのようなパッケージがありますが、
cronより便利な点が見当たらなかったので、今回は使用していません。
https://github.com/ncb000gt/node-cron
あえて、node-cronを使用する特長があれば、ぜひ知りたいです。
cronに設定している時間を見ていただくとお分かりのように、
今勤めている会社は9時始業でとてもつらいです。
自動化されたメールを見て、もう少しゆっくりできるかどうかを
素早く判断し、朝のちょっとした時間を有効活用したいものです。