IT Wars

Les guerres d'un Responsable Informatique

Script ruby pour récupérer les videos sur Vimeo avec ProgressBar

Par admin, le vendredi 24 juillet 2009 à 15:51 | Dev

rubyIl y a quelques temps je poposais un petit script pour télécharger des vidéos directement sur le site de Vimeo et les stocker sur son disque dur. Comme le temps de téléchargement peut être très long, j'y ai ajouté une progressbar !

Un petit

gem install progressbar

et roulez (J'ai testé ce script sous Linux et Windows).

 

#!/usr/bin/ruby

require 'rubygems'
require 'progressbar'
require 'net/http'

if ARGV.size < 1
  puts "usage vimeo.rb <id_video>"
  exit 1
else
  id = ARGV[0]
  Net::HTTP.start('www.vimeo.com') {|http|
    req = Net::HTTP::Get.new("/moogaloop/load/clip:#{id}", nil)
    response = http.request(req)
    /<caption>(.*)<\/caption>/.match(response.body)
    title = $1
    /<request_signature>(.*)<\/request_signature>/.match(response.body)
    signature = $1
    /<request_signature_expires>(.*)<\/request_signature_expires>/.match(response.body)
    signatureExp = $1
    puts title
    req = Net::HTTP::Get.new("/moogaloop/play/clip:#{id}/#{signature}/#{signatureExp}/?q=hd", nil)
    http.request(req) { |response|
	/(mp4|flv)/.match(response['location'])
	ext = $1
	/http:\/\/(.*\.vimeo\.com)(\/.*)/.match(response['location'])
	Net::HTTP.start($1) {|http|
	  req = Net::HTTP::Get.new($2)
	  alreadyDL = 0
	  http.request(req) { |response|
	    pBar = ProgressBar.new(title,100)
	    size = response.content_length
	    File.open("#{title}.#{ext}",'w') {|file|
	    response.read_body {|segment|
	    alreadyDL += segment.length
	    if(alreadyDL != 0)
		aPercent = (alreadyDL * 100) / size
		pBar.set(aPercent)
	    end
	    file.write(segment)
	    }
	    pBar.finish
         }
      }
   }
}	
}

end
Fil des commentaires de cet article

Laisser un Commentaire

Quelle est la dernière lettre du mot oovxnb ? :