2017-03-06 19 views
1

我想从网站下载多个动态文件与红宝石。 有五种不同的文件,他们都有一个基本结构:如何使用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.' 
+1

能否请你添加一些代码。你还试过了什么? –

+0

谷歌“红宝石字符串插值” –

+0

@DeepakMahakale编辑它 –

回答

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 
+0

我只是好奇为什么'%w ||'而不是'%w()'? –

+0

有什么具体原因? –

+0

@DeepakMahakale nope,没有具体的原因,只是一个习惯问题,因为括号内的单词排列比竖排单词更频繁。 – mudasobwa

0

这里有一个字符串插补时间和字符串一个基本的例子。

你只需要定义一个阵列所需的日期,IDS和扩展,并重复:

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