ニコニコ動画のランキングから動画を落とす&mp3にするスクリプト作った
作りました。
https://github.com/gong023/nicoaudio
もちろん全部の動画落としてくるわけじゃなくて「歌ってみた」とかそのへんのmp3にする価値があるやつを狙って変換します。あと、処理が終わったらtwitterのDMで処理にかかった時間と成功or失敗をお知らせしてくれます。
2,3ヶ月前からcronで毎日回して運用していますがそこそこ動作が安定してきた。これのおかげでだいぶ楽になりました。新しい曲を何もしなくても毎日聞けるのはいい。
READMEに簡単な使い方書いてあります。もし使いたい場合はどうぞ。(といってもcloneするだけじゃ動きません。READMEもいつかはちゃんと最後まで書きます)
作っていて気になっていたことを書きます
rubyのマルチスレッド
このスクリプトはruby1.9.3のマルチスレッドを使って動画のDLを行なっています。ベンチマークを取ってみたら処理速度が5倍になっていてビビりました。
マルチスレッドなし --
D, [2012-08-23T04:39:06.525075 #16552] DEBUG -- : get / all / 3.560000 5.090000 8.650000 (1638.229236)
マルチスレッドあり --
D, [2012-08-23T04:08:10.576479 #16269] DEBUG -- : get / all / 4.200000 6.380000 10.580000 (319.074013)
rubyは1.9.1からカーネルスレッドになったらしいのですが、特別な事情がない限りスレッドセーフになっていて、なんちゃってマルチスレッドみたいになっています。ただIOが絡む場合は別で、今回はそのケースに当てはまるのでちゃんと効果が出たみたいです。
その辺りを検証してくれているブログもありました
http://www.kaeruspoon.net/articles/726
MySQL
無駄にmysql使ってます。videoのidが一意であることを保証するためです。それだけです。ええ。
完全に大げさ。
yamlでいいじゃんといえばそれまでなんですが
insert ignore楽じゃん。indexもあるしさ
その他
- もっとrubyの黒魔術使いたかった
- なんか書こうかと思ったけど忘れた
せっかくmp3がとれたので今はブラウザでプレイヤー作ってます