ニコニコ動画 podcast化 on ruby

youtubeの動画はListPodでPodCast化して見ていたんだけど、ニコニコ動画は一つ一つ落としてiTunesに取り込んでいたことがあった。それplaggerでできるよ、っていうのは知ってたんだけど、どうもplaggerを使いこなす気になれなくて放ってあった。

けど、このあいだrubyでnicopodcastっていうのを既に1年前に開発されているのを発見してpodcast化に再チャレンジしてみた。ところが、うまくいかない部分がある。

  • 出力されるrssが空になる
    • どうもニコニコ動画の出力するrssのdescriptionが空なのをそのまま使うと空になる模様
  • 一部動画がnot foundとなってダウンロードできない
    • 利用されているnicovideoというgemとニコニコ動画の仕様変更の問題か?

nicopodcastはgithubだったのでclone->hack->pull requestで解決。

id:emergentさん作のnicovideoというgemはソースがcodereposに上げてあるのでcheckout & hack。

適当な修正でうまくいくようになったように見えるんだけど、結構使われてるgemっぽいので勝手にcommitする気になれずここにpatchを晒しておきます。
csrf_tokenなんて、昔の経緯がわかんないと消していいのか判断できない。

Index: lib/nicovideo/videopage.rb
===================================================================
--- lib/nicovideo/videopage.rb	(リビジョン 35804)
+++ lib/nicovideo/videopage.rb	(作業コピー)
@@ -83,12 +83,9 @@
       }
 
       # published_at
-      str = page.search("div[@id='WATCHHEADER']//p[@class='TXT12']/strong")[0].inner_text
+      str = page.search("div[@id='WATCHHEADER']//p[@class='font12']/strong")[0].inner_text
       tm = str.scan(/\d+/)
       @published_at = Time.mktime(*tm)
-      
-      # csrf_token
-      @csrf_token = page.search("form[@name='mylist_form']//input[@name='csrf_token']")[0]['value']
     end
     
     def get_params
Index: lib/nicovideo/page.rb
===================================================================
--- lib/nicovideo/page.rb	(リビジョン 35804)
+++ lib/nicovideo/page.rb	(作業コピー)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 require 'kconv'
 
 module Nicovideo
@@ -80,6 +81,9 @@
         else
           raise e
         end
+      rescue Exception => e
+        puts_debug e.to_s
+        raise e
       end
       @page
     end