2010-06-21 2 views
1

Я был у вас на пару дней, и мне вообще не повезло. Несмотря на чтение за thesetwo сообщений, я не могу переписать этот маленький скрипт python, который я сделал в рубине.Преобразование скрипта python в ruby ​​(загрузка части файла)

clean_link = link['href'].replace(' ', '%20') 
mp3file = urllib2.urlopen(clean_link) 
output = open('temp.mp3','wb') 
output.write(mp3file.read(2000)) 
output.close() 

Я смотрел на использование open-uri и net/http сделать то же самое в рубин, но продолжайте нажимать на вопрос URL перенаправления. До сих пор у меня есть

clean_link = link.attributes['href'].gsub(' ', '%20') 
link_pieces = clean_link.scan(/http:\/\/(?:www\.)?([^\/]+?)(\/.*?\.mp3)/) 

host = link_pieces[0][0] 
path = link_pieces[0][1] 

Net::HTTP.start(host) do |http| 
    resp = http.get(path) 
    open("temp.mp3", "wb") do |file| 
     file.write(resp.body) 
    end 
end 

Есть ли более простой способ сделать это в рубине? Кроме того, как и в случае с скриптом python, есть ли способ загрузить часть файла?

EDIT: прогресс обновлен

ответ

1

см here & here

http.request_get('/index.html') {|res| 
    size = 0 
    res.read_body do |chunk| 
    size += chunk.size 
    # do some processing 
    break if size >= 2000 
    end 
} 

, но вы не можете контролировать кусок размером здесь

+0

Hi Zed, это вопрос, который продолжает выскакивать с http- > https redirect 'http: // redmine.ruby-lang.org/issues/show/2027' –

+0

Я обновил ответ. Надеюсь, что поможет –

+0

спасибо zed. Что добавляют куски, чтобы проверить, сколько было прочитано? –

Смежные вопросы