我想从网站下载带有ruby的多个动态文件。 有五个不同的文件,它们都有一个基本结构:
BACKUP_的 YYYY - 的 MM - 的 DD - 的 HHMM _JRAddOns_Die_Pflegeserie_fr_的 ID - 内容。的 ENDING
所有粗体书面部分都是动态的,必须更换。
文件可能如下所示:
backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-db.gz
backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-others.zip
backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-plugins.zip
backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-themes.zip
backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-uploads.zip
有人可以帮忙吗?
编辑: 我尝试了一个非动态版本,它不会长时间工作,但是:
puts 'Starting Download...'
require 'net/http'
Net::HTTP.start("jr-addons.de") do |http|
resp = http.get("/btemp/backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-db.gz")
open("backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-db.gz", "wb") do |file|
file.write(resp.body)
end
resp = http.get("/btemp/backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-others.zip")
open("backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-others.zip", "wb") do |file|
file.write(resp.body)
end
resp = http.get("/btemp/backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-plugins.zip")
open("backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-plugins.zip", "wb") do |file|
file.write(resp.body)
end
resp = http.get("/btemp/backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-themes.zip")
open("backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-themes.zip", "wb") do |file|
file.write(resp.body)
end
resp = http.get("/btemp/backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-uploads.zip")
open("backup_2016-10-23-1520_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-uploads.zip", "wb") do |file|
file.write(resp.body)
end
end
puts 'Done.'
答案 0 :(得分:3)
DATES = %w|03-06-1020|
SUFFIXES = %w|db others plugins themes uploads|
puts 'Starting Download...'
require 'net/http'
Net::HTTP.start("jr-addons.de") do |http|
DATES.product(SUFFIXES).each do |(date, suffix)|
file = "/foo_#{date}_bar-#{suffix}.baz"
puts file
# do other stuff with this file
end
end
答案 1 :(得分:0)
以下是使用时间和字符串进行字符串插值的基本示例。
您只需要定义一个包含所需日期,ID和扩展名的数组,然后迭代:
time = Time.new(2017, 3, 6, 10, 20)
id = '2867ed5aba3d'
content = 'db'
ext = 'gz'
puts time.strftime("backup_%Y-%m-%d-%H%M_JRAddOns_Die_Pflegeserie_fr_#{id}-#{content}.#{ext}")
#=> backup_2017-03-06-1020_JRAddOns_Die_Pflegeserie_fr_2867ed5aba3d-db.gz