プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

ニコニコ動画のスクレイピング

本当はテスト勉強しないといけないんですが、BGMがほしいなと思ったので、洋楽のマイリストから一括でダウソするコード書きました。

これだけの行数で実現できるとは、さすがruby

require 'rubygems'
require 'open-uri'
require 'rss'
require 'niconico'
page = RSS::Parser.parse("http://www.nicovideo.jp/mylist/×××?rss=2.0",false)

nico = Niconico.new("メールアドレス","パスワード")
nico.login

#すでに取得しているファイルがあったらスキップするために
#ダウソ済みファイルのidを配列で持つ
currents = Dir.entries(".").select{|x| x.include?("mp4") }.map{|y| y.split(".").first}

page.items.each do |item|
  id = item.link.split("/")[-1]
  next if currents.include?(id)
  begin
    video = nico.video(id)
    open("#{id}.mp4","w"){|f| f.write video.get_video}
  rescue
    next
end

最初、URLをまず一括で取得して、こいつを某ダウンロードサイトのフォームにぶち込んで、POST、
生成されたリンクからダウソ、とか思ってたんですが、rubygemsにniconicoというのがありまして・・・。

これはNiconicoクラスが管理全般のもので、こいつのインスタンスを一度作ってやれば、
それを介してvideoを取得できる。

ダウンロードにはけっこう時間がかかります。

ちなみにダウンロード先は、このコードを置いた場所になります。

てか、?rss=2.0を付加すればRSSで取得できるって、知らなかったです。。。

※違法ダウンロードはやめましょう。