Rubyで、動画や画像をダウンロードする場合は、openメソッドを使うとダウンロードできます。

openメソッドは、以前はそのまま使えたのですが、 URI.openURIを指定しないとエラーになってしまいます。検索すると結構openのままのソースコードがヒットしますので、 URI.open と読み替えるとよいです。

また、プログレスバー表示については、 ruby-progressbar のgemが便利です。下記は使い方の一例です。

保存するファイル名は、 content_type から拡張子を取得して付加しています。


プログレスバー表示で進捗率を表示

表示例

Time: 00:00:01 150MB 0/202 |======================| 100.00%  150246400/150246400


コーディング例

require 'open-uri'
require 'ruby-progressbar'

prefix = "VIDEO_"
uuu = [動画や画像をダウンロードしたいurlの配列]

uuu.each_with_index{ |uu, ii|
  sz=pb=nil
  URI.open(uu,"rb",
    :content_length_proc => lambda{|sz|
      pb = ProgressBar.create(
        :title => "#{sz/1000000}MB #{ii}/#{uuu.size}",
        :total => sz,
        :format => "%a %t |%B| %P%%  %c/%C")
    },
    :progress_proc => lambda{ |dl| pb.progress = dl}
  ){|dd|
    ff = prefix + ii.to_s + "." + dd.content_type.split("/")[-1]
    File.open("D:/Download/VIDEO/#{ff}", "wb"){|oo|
      oo.write(dd.read)
    }
  }
}


参考:jfelchner/ruby-progressbar: Ruby/ProgressBar is a text progress bar library for Ruby.

2022/01/09