Re: Efficient file downloading




On Feb 21, 2008, at 8:54 PM, Kyle Hunter wrote:

Hello,

I'm using open-uri to download files using a buffer. It seems very
inefficient in terms of resource usage (CPU is ~10-20% in usage).

If possible, I'd like some suggestions for downloading a file which
names the outputted file the same as the URL, and does not actually
write if the file comes out to a 404 (or some other exception hits).

Current code:
BUFFER_SIZE=4096
def download(url)
from = open(url)
if (buffer = from.read(BUFFER_SIZE))
puts "Downloading #{url}"
File.open(url.split('/').last, 'wb') do |file|
begin
file.write(buffer)
end while (buffer = from.read(BUFFER_SIZE))
end
end
end

$ sudo gem install snoopy
$ snoopy http://en.wikipedia.org/wiki/Main_Page
=> file Main_Page

Ta dah! there's a lot of magic behind it right now, and torrentz
don't work (fixed on my machine, need to release it). It does
segmented downloading, ideal for large files. For smaller ones, it
still works fine.

The problem with open-uri is this: it downloads the whole thing to
your tmp directory first, so using the BUFFER_SIZE thing won't
actually help.

snoopy won't not write the file if there's an error.

-------------------------------------------------------|
~ Ari
Some people want love
Others want money
Me... Well...
I just want this code to compile


.



Relevant Pages

  • RE: download hangs with no error on DSL under Windows 2000 pro
    ... try downloading another browser to verify that's not ... > a laptop with Windows XP home. ... > of this card explicitely mentions that this is the size of its buffer. ...
    (microsoft.public.win2000.networking)
  • Re: Efficient file downloading
    ... I'm using open-uri to download files using a buffer. ... inefficient in terms of resource usage. ... I'd like some suggestions for downloading a file which ...
    (comp.lang.ruby)
  • Efficient file downloading
    ... I'm using open-uri to download files using a buffer. ... inefficient in terms of resource usage (CPU is ~10-20% in usage). ... I'd like some suggestions for downloading a file which ...
    (comp.lang.ruby)
  • Re: Finding it impossible to cancel a web download
    ... the PDA is downloading from, and when it has broken out of its read loop ... > I'm using the HttpWebRequest class to download a file from the Internet. ... So if I cancel reading from the response stream before Ive read ... > internal buffer. ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Trying to download first 10k
    ... I'm using open-uri but even when I try to break out of the core loop ... I can hear my hard-drive grinding away ... downloading the entire file. ... def convert_to_file_name uri ...
    (comp.lang.ruby)

Loading