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