Tokyo Course Grained

カナダ西海岸ソフトウェアエンジニアのブログです

新検索βを使ってニコ生がはじまったらpushしてくれるやつ

最近いまさらニコ生で公式のアニメとか映画とか西友の番組とか見てる。タイムシフトはコメントできないしできたらリアルタイムで見たい。で、プッシュしてくれたらいいんだけど、チャンネル登録しないと公式アプリはプッシュしてくれないし放送開始前に登録とかめんどいので、とりあえず生放送はじまった番組をRSSにしてくれるもの作ってそれをiftttでつなげてpushさせるようにした。

使ったもの

できたもの

push をメールで受け取っているところ。

説明

ニコニコでは新検索β っていう検索APIが公開してあって、 検索結果をRSSにするやつを作った。 https://github.com/iwag/search-nicovideo-rss

ただ検索結果をRSSにするだけでは重複とか順番とか変になりそうだったのでredisにこれまでのは入れておいて、新着だけ出力するようにしている。検索クエリは結構工夫しないといけなくて、まあソースを見て欲しい。

あとこれをherokuにあげて、そのRSSをiftttにつなげてメールなりiOS nofificationなりにつなげる感じ。 iftttは15分くらいズレがあって見たら終わってるとかあるから微妙っちゃ微妙だけどまあしょうがないかなーと思ってる。 ある程度汎用的に作ったのでXXタグで新作が来るとpushするみたいなのもできる。

使い方

README.mdに書いたとおりっす。 https://github.com/iwag/search-nicovideo-rss/blob/master/README.md herokuとiftttが必要。

感想

https://github.com/motemen/heroku-holidays-feed モテメン(aka 美顔器)さんの次の祝日はN日後です!をめっちゃ参考にした。モテメンさんのはherokuのスケジューラを使ってんだけど、どうせiftttがcronみたいにアクセスするやろってことでそういうのやめた。ヘロクのログみると10分おきにアクセスしてるっぽい。参照先の負荷を下げるためにスケジューラ使ったほうがいい気もする(例えば深夜から夕方まではアクセスしないとかね)。 というか、redis使ってるからredisキャッシュにしてAPIを叩かないようにしたほうがよいな。

新検索ベータはレスポンスがJSONじゃなくて特殊だったりなんか日付のフォーマットも変だったりクエリ作ったりするのがだるかったのでラッパとクエリビルダをgemとして分けた。 https://github.com/iwag/search-nicovideo-rb こういう切り出してgemにするってのはじめてやったんだけどかなりいいし、どんどんgemにしていこうという気持ちになった。久しぶりにRuby書いたけどいいね。

あとheroku最高。dokku(OSSのミニヘロクみたいなの)使ってるけどdokkuはデプロイが重いんだよね…。heroku無料でリッチだし最高。課金したい。