6 nov. 2018

Programa - Descargar fichero desde internet con un fichero de rutas

=begin

Se pretende hacer un programa que lea las líneas de un fichero
que contiene las rutas de unos ficheros que queremos descargarnos
este fichero tiene el nombre: dvd2.txt
Queremos que extraiga sólo los nombre de los ficheros a descargar
y los almacene en otro fichero con nombre: nombres.txt
Luego, se conecte a la ruta que nos ha preguntado previamente
y los descargue a nuestro ordenador.
=end

require 'net/http'
if File.exist?("nombres.txt")
puts "El fichero nombres.txt existe"
else
w=File.open("nombres.txt","a+")
puts "El fichero nombres.txt no existia y ha sido creado"
w.close
end

def empezar
puts "Escribe la ruta completa del dominio (ej: www.loquesea.com)  :   "
STDOUT.flush
@comun1=gets.chomp
puts "Has escrito este dominio=#{@comun1}"
puts "Ahora escribe el resto de la ruta completa, incluido el signo / al principio y al final , donde estan los ficheros (ej: /files/img/)  :   "
STDOUT.flush
@comun2=gets.chomp
@comun="http://"+@comun1+@comun2
end
empezar

puts "Has escrito esta ruta=#{@comun} ¿Correcto? (S/N)"
STDOUT.flush
resp=gets.chomp
if resp=="n" or resp=="N"
empezar
end

a=0
yy=[]
m=[]
linea=File.open("dvd2.txt")
li=0
@n=File.open("nombres.txt","w+")
linea.each do |@y|
li+=1
yy<<@y
m<<@y.split(@comun)
end
@n.print m
puts "Número de líneas = #{li}"
puts " Esto es la matriz yy="
puts yy
for r in (0..li-1)
puts r
puts "yy[#{r}]= #{yy[r]} y este es m[#{r}]= #{m[r]}"
end

@n.close
puts "Esto es m="
for r in (0..li-1)
puts "***********************"
puts "m[#{r}]= #{m[r]}"
puts "***********************"
end

@dominio="http://"+@comun1
@rcompleta=@comun2
puts "Este es el dominio: #{@dominio}"
puts "Esta es la ruta tras el dominio #{@comun2}"
#puts "Esta es la ruta completa @rcompleta= #{@rcompleta}"

@domin=@comun1
puts "domin= #{@domin}"

for uu in (1..li-1)
puts "Esto es m(#{[uu]})= #{m[uu]}"
@tt=m[uu]
@ta=@tt.to_s.chomp
puts "Esto es la ruta hasta el fichero @ta= **#{@ta}** de la clase #{@ta.class}"
Net::HTTP.start(@domin) { |http|
puts "Conectado al dominio = **#{@domin}**"
puts "                              CONECTADO"
  resp=http.get(@comun2+@ta)
  puts "Conectando con **#{@comun2+@ta}**"
puts "                              CONECTADO" 
  open(@ta.chomp, "wb") { |file|
    file.write(resp.body)
   } 
puts "Fichero **#{@ta}** descargado"
}
end
puts "Conseguidoooooo !!"