humm... vamos por partes

[momento sem shell script]

Vc pode dar uma olhada neste arquivo aqui:
http://www.joshkinberg.com/blog/files/youtube_to_me.user.js

Atente a estes comentarios:
* YouTube download link:
http://youtube.com/get_video?video_id=[video_id]&t=[t_id]
* YouTube URL: http://www.youtube.com/watch?v=[video_id]

para determinar os parametros necessários para o correto download do
video, recorremos à uma ação invasiva ao site youtube. Olhando o
codigo fonte do site encontramos algo como

"/watch_fullscreen?video_id=NINJQ5LRh-0&l=184&t=OEgsToPDskKfwz7vUjuWTJj-TneVUwhc&s=4A240C1D3B58E8CA:53C662DC848F75CD&fs=1&title="

[fim do momento sem shell script]

Logo, basta fazer umas linhas de shell...

Vou usar o wget 2 vezes,

 1) para pegar os codigos necessarios para o download do video;
 2) para baixar o video em si

de posse dos codigos, baixar o video é facil. Usando alguma tipo de
intuição eu vou montando as strings na 'força bruta', não achei muita
documentação sobre isso. É um desafio mesmo.

vou usar awk no meio do caminho pois para mim é obvio como deve ser
feito e o resultado é didatico - sed faria o mesmo de outra forma.

vou usar 2 splits e 1 "grep" do awk

Façam o teste (e melhorem, fiz só o basicão mesmo)

#!/bin/bash
# forma de uso
# ./script 'http://www.youtube.com/watch?v=[video_id]'
# sim, poderia funcionar tanto com a url completa quanto com o video_id
# mas isso fica por conta de vcs
# não garanto que funcione sempre, também... é uma gambiarra mas... tentem
URL="${1}"
wget "${URL}" -O -  | awk 'function wget(url,id){
        cmd = "wget -O "id".flv \""url"\"" # a url tem que estar
protegida entre aspas!
        print "Running:\n"cmd
        system(cmd);
}
/watch_fullscreen/{
        a=index($0,"watch_fullscreen");
        line=substr($0,17+a); # pega a linha com os codigos
        split(line,arr,"&");  # pega os pares chave=valor
        for(i in arr){
                split(arr[i],par,"="); # separa a chave do valor
                id = par[1]; value = par[2];
                vetor[id] = value;     # cria vetor explicito
        }
}
END{ # agora montamos a url e mandamos para o wget :)
        url = 
"http://youtube.com/get_video?video_id="vetor["video_id"]"&t="vetor["t";]
        wget(url, vetor["video_id"]);
}'
trap "" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
echo "* Fim do download *" ; sleep 10
echo "* Fim mesmo, ze-fi-ni *" ; sleep 20
echo "* Humm, ... *" ; sleep 30
echo "* Baixe outro video * " ; sleep 40
echo "* Vai ser legal, baixe!!! *" ; sleep 50

On 11/28/06, Alfredo Casanova <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Olá pessoal
>
>  estou pensando em desenvolver um script pra baixar arquivos do YouTube, e
>  estava pensando em utilizar o site www.keepvid.com para me auxiliar.
>
>  Nesse site vc fornece o link do vídeo e ele te dá um link para puxar o
>  arquivo .flv
>
>  Porém, não sei como fazer para enviar o link do vídeo para o site... será
>  que terei que sniffar o pacote e reproduzir num form?
>
>  alguma ideia?
>
>  --
>  []'s
>  Alfredo Casanova
>



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a