TagLib2::File.new
не берет дескриптор файла, который вы передаете ему, когда используете open
без read
.
Добавьте read
, и вы получите содержимое URL, но TagLib2::File
тоже не знает, что с этим делать, поэтому вы вынуждены прочитать содержимое URL и сохранить его.
Я также заметил, что вы излишне усложняете использование OpenURI. Вам не нужно анализировать URL-адрес с помощью URI
, прежде чем передавать его на open
. Просто передайте строку URL.
require 'open-uri'
fname = File.basename($0) << '.' << $$.to_s
File.open(fname, 'wb') do |fo|
fo.print open("http://recordtemple.com.s3.amazonaws.com/music/745/original/The%20Stranger.mp3?1292096514").read
end
c = TagLib2::File.new(fname)
# do more processing...
File.delete(fname)
У меня не установлен TagLib2, но я запустил остальную часть кода и mp3-файл, загруженный на мой диск, и доступен для воспроизведения. File.delete
впоследствии очистит, что приведет вас в состояние, в котором вы хотите быть.