Rubyで、動画や画像をダウンロードする場合は、openメソッドを使うとダウンロードできます。
openメソッドは、以前はそのまま使えたのですが、 URI.open とURIを指定しないとエラーになってしまいます。検索すると結構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