Hatena::ブログ(Diary)

unnecessary words このページをアンテナに追加 RSSフィード

2008-03-07

ニコニコ動画 swf、mp4、flvをダウンロードする

昨日書いたエントリに、「swfも忘れないであげて!」と言われたので修正します。動画タイトルの「‐ニコニコ動画(SP1)」が邪魔とも言われたので、そっちも修正。

#!/usr/bin/ruby -Ku

# nicodown.rb

require 'rubygems'
require 'nicovideo'

module Nicovideo
  class VideoPage
    def type
      @params ||= get_params
      pattern = %r!^http://.*\.nicovideo\.jp/smile\?(.*?)=.*$!
      CGI.unescape(@params['url']) =~ pattern
      case $1
      when 'm'
        return 'mp4'
      when 's'
        return 'swf'
      else
        return 'flv'
      end
    end
  end
end

nv = Nicovideo.new('メールアドレス', 'パスワード')

ARGV.each do |video_id|
  nv.watch(video_id) do |v|
    File.open("[#{v.id}] #{v.title.sub(/‐.*$/, '')}.#{v.type}", "wb"){|f| f.write(v.flv) }
  end
end

使い方。

ruby nicodown.rb sm2538662 nm2536146 sm2540481

結果。

[nm2536146] 日刊VOCALOIDランキング 2008年3月6日.swf
[sm2538662] 【MAD】 魔法少女リリカルなのはA's Lyrical on Fire 【H.264】.mp4
[sm2540481] 【鏡音リン・レン】ジェミニ【オリジナル】.flv 

ご利用の際にはgemインストールを忘れずに。

% sudo gem install nicovideo

追記

Windows向け解説。Rubyのインストールからダウンロードまで。

RouranRouran 2008/03/08 05:11 こんにちは はじめまして

H.264のニコ動画ダウンロードしたくてこのサイトに辿りつきました者です。
プログラムとか経験無いのですがrubyをインストールするとこから初めてなんとかできました^^
ありがとうございます!m(_ _)m

こういった技術的なサイトに私が書き込むのは場違いですが
それを承知で質問があります。
nicodown.rb:30:の部分でタイトルの部分だけうまく出力できず
文字化けしてしまいErrno::ENOENTで失敗してしまいます
#{v.title.sub(/‐.*$/, ’’)}の部分を切り取って再度実行しましたら成功しました。
何故でしょうか?

もしお時間ありましたらご返答お願いしますm(_ _)m
(失礼でしたら無視していただいても結構です><

では失礼いたします

hayorihayori 2008/03/08 12:47 こんにちは。
情報不足で、ちょっと原因と特定できないんですが、たぶん文字コード関係でエラーが発生してるのかと推察します。勝手にWindows環境と仮定して話を進めてみます。

コードをそのままコピペしてるなら、UTF8で保存されてるかご確認ください。Windowsで動かすならタイトルをsjisに変換する必要もあるかと思います。
Windowsに最適化したコードと手順については、以下のエントリーを作成しましたので、ご参照ください。
http://d.hatena.ne.jp/hayori/20080308/1204946958

Ruby勉強中の身の上ですから、こういったご指摘は参考になります。またお気軽にご質問ください。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証