rails - ¿Cómo descargo una imagen usando Ruby?
ruby http party (7)
Quiero descargar esta imagen usando Ruby. ¿Cómo puedo hacer eso?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
Estoy usando Mac OS.
De la misma forma en que se descarga cualquier otra cosa. Net::HTTP
Intenta usar la gema Mecanizar:
Comience con: sudo gem install mechanize
para instalar Mechanize.
Entonces:
require ''rubygems''
require ''mechanize''
agent = Mechanize.new
link = ''http://www.asite.com/pic.jpg''
agent.get(link).save "images/pic.jpg"
EDITAR: Para aclarar las cosas, le sugiero que use el nombre del archivo cuando guarde la imagen. Tuve un problema al guardar imágenes a granel porque no estaban formadas correctamente. Las imágenes se guardaron así:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Es por eso que probablemente deberías usar el nombre de la imagen como el nombre de archivo así:
agent.get(src).save "images/#{File.basename(url)}"
File.basename toma la url de la imagen y solo devuelve el nombre de la imagen real:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
La forma más sencilla sería requerir open-uri
y usar eso con la respuesta anterior o usar el módulo Net :: HTTP también suministrado con su método get.
Para aclarar las cosas, le sugiero que utilice el nombre del archivo cuando guarde la imagen. Tuve un problema al guardar imágenes a granel porque no estaban formadas correctamente. Las imágenes se guardaron así:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Es por eso que probablemente deberías usar el nombre de la imagen como el nombre de archivo así:
src = ''http://www.asite.com/pic.jpg''
agent.get(src).save "#{folder}/#{File.basename(src)}"
File.basename toma la url de la imagen y solo devuelve el nombre de la imagen real:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
Si desea descargar todas las imágenes en una página, puede usar la gema image_downloader:
require ''rubygems''
require ''image_downloader''
downloader = ImageDownloader::Process.new(''www.test.com'',''img_dir/'')
downloader.parse(:any_looks_like_image => true)
downloader.download()
require "open-uri"
open("your-url") {|f|
File.open("whatever_file.jpg","wb") do |file|
file.puts f.read
end
}
%x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)
o
`wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`