rails ruby http

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`