Como extrair FLV do Youtube com PHP

Um dia desses estava precisando fazer um teste para extrair mp3 a partir de um vídeo de Youtube, mas como passo inicial, precisava baixar o flv automaticamente. Usando o firebug, consegui identificar o padrão que o Youtube passa como flashvars, para identifcar o vídeo.

Com base nisso, criei um script em php, muito simples. Basicamente você precisa obter a chave fmt_stream_map do flashvars e fazer download.

Preciso melhorar o código, mas para o propósito que eu tinha em mente, funcionou muito bem. Veja abaixo o código:

// recebe pela linha de comando a url de vídeo do Youtube
if(count($argv)>=2)
  $url = $argv[1];
else
  die("Usage: php youtube.php url");

// passo 1, baixar o html para fazer parse.
// estou usando file_get_contents por ser mais simples
// mas curl é o recomendado
echo "Baixando $url\r\n";
$f = file_get_contents($argv[1]);

// executa um parse, que converte em array string no formato
// de dados de post: a=1&b=2&c=3, vira array['a']=1 ..
echo "Executando parse na str\r\n";
parse_str($f, $output);

// recebe a chave fmt_stream_map e remove a string concatenada no começo
// Ex: 35|url
$flv = $output["fmt_stream_map"];
$flv = explode("|",$flv);

// chama wget para baixar o flv. Grava no disco com o nome 'video.flv'
$r = `wget -O video.flv "$flv[1]"`;

//fim

.

Tem dúvida ? Não deixe de comentar.

Robson Dantas

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 100%

2 Comments so far

  1. Baixar vídeo flv e mp3 do Youtube | Blog do Robson Dantas on December 20th, 2010

    [...] Veja o hack anterior, feito em PHP, que retira o FLV somente. [...]

  2. Marcos on November 8th, 2011

    Valeu a pena ver seu script, deu pra sentir que vc escreve bem em PHP,mas não precisa disso tudo, basta assistir o vídeo e ir até a pasta

    /home/SEU_USUARIO/.mozilla/default/cache

    e procurar seu video numa das pastas dentro da cache q vc vai encontrá-lo!

Vale Presente