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
Popularity: 7%








[...] Veja o hack anterior, feito em PHP, que retira o FLV somente. [...]
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!