Ola

Dei uma diminuida no script.Por um lado o script esta mais 'magico',
por outro está mais leve e vc não precisa digitar toda a url, pode
digitar somente o video_id. O Youtube está fora do ar mas quando
voltar quero fazer uns testes.

#!/bin/bash
# youtube downloader
# usage: script <url or video_id>
# YouTube URL: http://www.youtube.com/watch?v=[video_id]
# YouTube download link:
http://youtube.com/get_video?video_id=[video_id]&t=[t_id]
[ -z "${1}" ] && { echo -e "Error! Missing url or video_id!" ; exit 1 ; }
[[ "${1}" =~ 'youtube' ]] && URL="${1}" ||
URL="http://www.youtube.com/watch?v=${1}";
wget -O - "${URL}" | grep -o -E 'video_id=.*&t=[^\"&]*' | head -1 |
awk -F= '{
    cmd = sprintf("wget -O %s.flv \"http://youtube.com/get_video?%s\"",$2,$0);
    system(cmd) # print "Debug: "cmd
}'

On 11/28/06, Alfredo Casanova <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> eu ainda vou ler o codigo, mas acho que terei que adaptar algumas coisas...
>  o maior problema que tenho é que no meu trabalho a expressao *youtube.com* é
>  bloqueada.
>  Porém, se eu pegar o ip do site, via ping, consigo acessar normalmente no
>  browser.
>
>  Ocorre que alguns os videos do youtube ficam hospedados em diversos
>  servidores, que seguem um padrao de nomenclatura mais ou menos assim:
>
>  chi-vXX.chi.youtube.com
>  lax-vXX.lax.youtube.com
>  dentre outros
>  alguns outros são
>  youtube-XXX.algumacoisa
>
>  esses que sao youtube-XXX.algumacoisa eu consigo assistir, mas, para
>  assistir aos demais, preciso enviar o link para o keep vid, entao ele me da
>  o download link (normalmente algo tipo
>  http://chi-vxx.chi.youtube.com/lavaiummontedecodigo)
>  entao tenho que dar um ping no chi-vXX blablabla, colar o
>  ip/lavaiummontedecodigo no browser pra conseguir puxar o video e soh entao
>  assisti-lo...
>  é uma baita trabalheira, mas com o nosso graaaaaaaaaaande shell, vai ficar
>  mais simples... so vou ter que implementar mais uns pings, greps e cuts...
>  aí vai ficar uma maravilha e eu mando aqui pro pessoal ver :)
>
>  On 11/28/06, Ricardo Acosta <[EMAIL PROTECTED]> wrote:
>  >
>  >   Olá Alfredo! e camaradas!
>  >
>  > aproveitando a carona no momento SEM SHELL SCRIPT
>  > existe o software chamado: dowtube.
>  >
>  > é um programa feito em python.
>  > funciona na linha de comando, com *unix!
>  >
>  > http://www.downtube.kit.net/index2.htm
>  >
>  > ...
>  > a idéa por tras do código é exatamente a que o Tiago passou - com Shell!
>  > com mais algumas funcionalidades!
>  >
>  > []s
>  > acosta
>  >
>  > 2006/11/28, Alfredo Casanova <[EMAIL PROTECTED]<atcasanova%40gmail.com>
>  > >:
>  >
>  > > deus do céu
>  > > acho que eu nao ia dar conta de fazer isso hehehehe
>  > > hora de ir embora, amanha vou ler com mais calma...
>  > > de qualquer forma, muitíssimo obrigado, thiago!
>  > >
>  > > On 11/28/06, Tiago Barcellos Peczenyj <[EMAIL 
> PROTECTED]<tiago.peczenyj%40gmail.com>>
>
>  > wrote:
>  > > >
>  > > > 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]<atcasanova%40gmail.com>
>  > <atcasanova%40gmail.com>>
>  > > > 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
>  > > >
>  > > >
>  > >
>  > >
>  > >
>  > > --
>  > > []'s
>  > > Alfredo Casanova
>  > > Linux User #228230
>  > > icq: 15793271
>  > > msn: [EMAIL PROTECTED] <atcasanova%40gmail.com>
>  > > aim: alfredotcasanova
>  > > yim: atcasanova2
>  > > tel: +55 61 84137319
>  > > As aves têm na boca um dente chamado bico
>  > >
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  > >
>  > > ----------------------------------------------------------
>  > > Esta lista não admite a abordagem de outras liguagens de programação,
>  > como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>  > prévio aviso.
>  > > ----------------------------------------------------------
>  > > Sair da lista: [EMAIL 
> PROTECTED]<shell-script-unsubscribe%40yahoogrupos.com.br>
>  > > ----------------------------------------------------------
>  > > Esta lista é moderada de acordo com o previsto em
>  > http://www.listas-discussao.cjb.net
>  > > ----------------------------------------------------------
>  > > Servidor Newsgroup da lista: news.gmane.org
>  > > Grupo: gmane.org.user-groups.programming.shell.brazil
>  > >
>  > >
>  > > Links do Yahoo! Grupos
>  > >
>  > >
>  > >
>  >
>  > --
>  > __________________________
>  > Ricardo Acosta
>  > Laboratório de Clima e Biosfera
>  > Depto. de Ciências Atmosféricas
>  > Universidade de São Paulo
>  >
>  > Dê emoção à sua vida:
>  > Faça pipocas com a panela aberta!
>  >
>  >
>  >
>
>  --
>  []'s
>  Alfredo Casanova
>  Linux User #228230
>  icq: 15793271
>  msn: [EMAIL PROTECTED]
>  aim: alfredotcasanova
>  yim: atcasanova2
>  tel: +55 61 84137319
>  As aves têm na boca um dente chamado bico
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>                   



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a