I am trying to write a simple script that downloads a music file from
the
internet.
For example: if i want to download
http://cdn.stereogum.com/mp3/My%20Morning%20Jacket%20-%20Celebration%20(Live).mp3
how exactly would you do it?
I found someone who was able to download a flickr photo using this
script:
require ‘net/http’
Net::HTTP.start(“farm1.static.flickr.com”) { |http|
resp = http.get(“/92/218926700_ecedc5fef7_o.jpg”)
open(“fun.jpg”, “wb”) { |file|
file.write(resp.body)
}
}
puts ‘Downloaded’
With a slight modification shouldn’t this work for the music file?
What makes downloading a photo any different than an mp3 file?
require ‘net/http’
Net::HTTP.start(“cdn.stereogum.com”) { |http|
resp = http.get(“/mp3/My Morning Jacket - Celebration (Live).mp3”)
open(“Celebration.mp3”, “wb”) { |file|
file.write(resp.body)
}
}
puts “the song has been downloaded”
Why doesn’t it work? What needs to be changed?
Any help would be great! Thanks.
On Wed, Jan 14, 2009 at 3:15 AM, Nathaniel Escribano
<[email protected]
wrote:
Why doesn’t it work? What needs to be changed?
Any help would be great! Thanks.
Probably because you’re not encoding the path
–
Andrew T.
http://ramblingsonrails.com
http://www.linkedin.com/in/andrewtimberlake
“I have never let my schooling interfere with my education” - Mark Twain
Nathaniel Escribano wrote:
require ‘net/http’
Net::HTTP.start(“cdn.stereogum.com”) { |http|
resp = http.get(“/mp3/My Morning Jacket - Celebration (Live).mp3”)
open(“Celebration.mp3”, “wb”) { |file|
file.write(resp.body)
}
}
puts “the song has been downloaded”
Here is an alternative way of doing it:
require ‘open-uri’
open(“http://cdn.stereogum.com/mp3/My Morning Jacket - Celebration
(Live).mp3”) do |src|
open(“Celebration.mp3”,“wb”) do |dst|
while blk = src.read(65536)
dst.write(blk)
end
end
end
This gives a clear error:
/usr/lib/ruby/1.8/uri/common.rb:436:in `split’: bad URI(is not URI?):
http://cdn.stereogum.com/mp3/My Morning Jacket - Celebration (Live).mp3
(URI::InvalidURIError)
Fix the URI and it works:
…
open(“http://cdn.stereogum.com/mp3/My%20Morning%20Jacket%20-%20Celebration%20(Live).mp3”)
do |src|
…
Thank you guys very much!
I was able to get it to work by fixing my path.
I wasn’t able to get it to work using alternate way even after changing
the
URL.
I get the following error.
syntax error, unexpected kDO, expecting $end
do |src|
Just out of curiosity- how can I fix this.
I would like to know so that I can work through it and figure out
exactly
what the script is doing and
compare it to the previous script.
Thanks again!
Nathaniel Escribano wrote:
I get the following error.
syntax error, unexpected kDO, expecting $end
do |src|
It was a line-wrap from ruby-forum. Move this to the end of the line
above.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Nathaniel Escribano wrote:
[…]
end
[…]
My $ 0.02:
require ‘open-uri’
require ‘cgi’
url = ‘http://cdn.stereogum.com/mp3/’ + CGI::escape(‘My Morning Jacket -
Celebration (Live).mp3’)
open(url) do |src|
open(‘Celebration.mp3’, ‘wb’) do |dst|
while blk = src.read(65536)
dst.write(blk)
end
end
end
hth,
davi
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkluE4MACgkQ76Bs0E5RGKNDnQCgnL2MY93V0uAhc1dQGV1cTP09
NaEAoKFroaj3pxGPrjf9u2CUzKV2gFAK
=/OkJ
-----END PGP SIGNATURE-----