Tiago Madeira Inferências aleatórias de um cérebro em versão alpha

"Só se dedicará a um assunto com toda a seriedade alguém que esteja envolvido de modo imediato e que se ocupe dele com amor. É sempre de tais pessoas, e não dos assalariados, que vêm as grandes descobertas."
(Arthur Schopenhauer)

Baixando e convertendo vídeos do YouTube para AVI e MP3 no Linux usando Ruby, wget, ffmpeg e lame

#!/usr/bin/ruby
require "net/http"
 
def inputerror
        puts "Uso: rytc --<avi|mp3> ID_VIDEO_1 [ID_VIDEO_2 ...]"
        exit 1
end
 
arg=ARGV
if arg.length<2
        puts "Você não passou o mínimo que são dois argumentos."
        inputerror
end
tipo=arg.shift.gsub(/--/, '').downcase
if tipo!='avi' && tipo!='mp3'
        puts "Você escolheu um formato válido (MP3 ou AVI)."
        inputerror
end
 
ARGV.each do |v|
        host=Net::HTTP.new("www.youtube.com",80)
        resposta=host.get("/watch?v="+v)
        vars=resposta.body.scan(/video_id=.*&t=[^\"&]*/).uniq.to_s
        url="http://www.youtube.com/get_video?#{vars}"
        nome=resposta.body.scan(/<title>.*<\/title>/).uniq.to_s.gsub(/<\/?title>/, '').gsub(/YouTube - /, '').gsub(/'/, '\\\'')
        `wget -c -O '#{nome}.flv' '#{url}'`
        if tipo=="mp3"
                `ffmpeg -i '#{nome}.flv' -ar 44100 '#{nome}.wav'`
                `lame '#{nome}.wav' '#{nome}.mp3'`
        else
                `ffmpeg -i '#{nome}.flv' '#{nome}.avi'`
        end
        # Descomente a linha abaixo se você não gostar de lixo.
        # `rm '#{nome}.flv' '#{nome}.wav'`
end

Salve como "rytc" em /usr/bin ou alguma outra pasta do $PATH do seu sistema.

O código e o nome extenso do post dispensam explicações. Não se esqueça de baixar Ruby, ffmpeg e lame para o programa funcionar (no Ubuntu, sudo apt-get install ruby lame ffmpeg)

PS: Sou iniciante em Ruby, aceito qualquer contribuição de limpeza de código. Mas a não-orientação-a-objetos foi intencional, porque parecia que ficava muito código inútil sobrando.

PS2: Sim, eu sei que dá pra fazer a mesma coisa em Shell (aliás, não tem muita utilidade usar Ruby aí, porque no fim fico fazendo um monte de chamadas pra programas externos), mas o divertido de aprender uma linguagem nova é fazer essas coisas nela...

Technorati Tags: , , , , , , ,

Compare Preços de: iPod, home theater, plasma, lcd, câmeras digitais, games, ps3

Escrito por Tiago Madeira no dia 28/11/2007 às 18h 05min. Acompanhe os comentários via RSS 2.0. Você pode deixar um comentário ou fazer um trackback do seu site.

Um comentário para “Baixando e convertendo vídeos do YouTube para AVI e MP3 no Linux usando Ruby, wget, ffmpeg e lame”

  1. #1 | Emilio

    Na proxima, experimente usar o open-uri em vez do net/http ^_^

Deixe um comentário

Dados Pessoais
  • Obrigatório.
  • Obrigatório, não publicado.
Comentário

Artigos relacionados:

Assine via RSS

Assine gratuitamente o meu blog e receba todas as atualizações na hora, em seu agregador de feeds favorito.

Seja o 231º assinante

Busca no blog

Escreva palavras-chave para buscar e clique em Pesquisar.

Busca Google

Blogs de minha autoria

Publicidade

Dreamhost

Creative Commons - Some rights reserved tiagomadeira.net © Todo o conteúdo deste blog, exceto quando especificado o contrário, está licenciado sob uma Licença Creative Commons por Tiago Madeira. Os comentários são de responsabilidade de seus respectivos autores.