fluentdを使ってIdobataでニコレポを取得する
はじめに
先日ニコレポ用のfluentdプラグインを書きました。
https://github.com/upinetree/fluent-plugin-nicorepo
このまえ作ったニコレポgemを使って、ニコ動からニコレポを逐次取得してくれるすごいやつです。 (別にfluentdじゃなくてもいいじゃんというのはなしの方向で…)
いわゆる完全に俺得プラグインなんだけれども、使い方の説明の意味も含めて記事を書くことにします。
セットアップ
今回、fluentdはherokuで動かすことにします。 準備とかは下記のリンクが詳しいので参考にしつつやっていきます。
http://docs.fluentd.org/ja/articles/install-on-heroku
ひな形のClone
heroku-td-agentというheroku用の便利なひな形があるので利用します。
次のような感じでリポジトリ作りましょう。
$ git clone git://github.com/treasure-data/heroku-td-agent.git heroku-fluentd-nicorepo $ cd heroku-fluentd-nicorepo $ rm -fR .git $ git init $ git add . $ git commit -m 'initial commit'
herokuアプリの作成とデプロイ
Heroku Toolbelt が入っていれば、次の方法でアプリの作成とデプロイができます。
$ heroku apps:create your-app-name $ git push heroku master
動作確認
ここまで来たらひとまず動作確認します。
$ curl http://your-app-name.herokuapp.com/debug.sample -F 'json={"hoge": "fuga"}' $ heroku logs --tail 2014-06-09T16:13:38.544846+00:00 app[web.1]: 2014-06-09 16:13:38 +0000 debug.sample: {"hoge":"fuga"}
上記みたいなのが出力されてたらOKです。
confの設定
さて、いよいよニコレポを取得してIdobataに流していきます。 あたりまえのことですが、ニコニコ動画のアカウントがあり、ニコレポで誰かをウォッチしている状態でないと、いつまでたっても何も流れてきませんのでご注意を。
今回、gemはfluent-plugin-nicorepo
とfluent-plugin-idobata
を使用します。
従ってGemfileは次の状態にします。
source 'http://rubygems.org' ruby '2.1.2' gem 'fluentd', '~> 0.10.48' gem 'fluent-plugin-nicorepo' gem 'fluent-plugin-idobata'
また、td-agent.confを次のように設定します。 今回は1時間おきに生放送だけを取りに行くようにしてみました。
<source> type nicorepo mail your@email.com pass yourpassword interval 1h kind lives tag nicorepo.idobata </source> <match nicorepo.**> type copy <store> type idobata webhook_url https://idobata.io/hook/url message_template <%= record[:body] %> @<%= record[:date] %> / <%= record[:title] %>: <%= record[:url] %> </store> <store> type stdout </store> </match>
ニコ動のアカウントmail
, pass
と、Idobataのwebhook_url
を書き換えるのを忘れないでください。
Idobataのwebhook_url
とは、流したいスレのRoom Settingsから'Add a Hook'して取れるEndpoint URLのことです。
再度デプロイしてあとは流れてくるのを待つだけです!
$ git add . $ git commit -m 'setup nicorepo on idobata' $ git push heroku master
あと、取得を1時間以上の間隔に設定する場合はこの設定やっておいたほうが良いかもです。
Heroku の Dyno を寝かせない - present
たまにheroku側で再起動して同じニコレポが2回やってきたりしますがご愛嬌。
お疲れ様でした。