Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais
English for Reading and Listening
Receba por email, diariamente, mensagens contendo materiais para
leitura e audição, incluindo arquivos no formato MP3 gravados por
falantes nativos.
Saiba mais
e faça
sua inscrição
Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Fazendo download de videos do youtube via shell script
Colaboração: Tiago Barcellos Peczenyj
Data de Publicação: 05 de Julho de 2007
Apresentação
Não é incomum encontrar algum video curioso no site youtube.
Cerca de um ano atras eu pesquisei uma forma de fazer o download automatico
de videos do youtube informando o id ou a url inteira. Ele é bem didático,
basta ser um pouco nerd e conhecer um pouco de expressões regulares.
Minha inspiração para postar este script surgiu do feito do Warren Harding,
que baixou um vídeo do referido site usando o Lynx e usou o Mplayer para
exibir o vídeo no modo ASCII. O resultado é divertido.
#!/bin/bash
# youtube downloader
# usage: script
# YouTube URL: http://www.youtube.com/watch?v=[video_id]
[ -z "${1}" ] && { echo 'Error! Missing url or video_id!' ; exit 1 ; }
URL="http://www.youtube.com"
# download link: http://youtube.com/get_video?video_id=[video_id]&t=[t_id]&...
DOWNLOAD=`wget -qO - "${URL}/watch?v=${1/*=}" | grep -oE 'video_id=.*&t=[^\"&]*' | head -1`
wget -O "${1/*=}.flv" "${URL}/get_video?${DOWNLOAD}"
Eu poderia ter feito tudo em uma unica linha usando xargs, porém ficaria um
pouco poluído para publicar neste formato, mas fica aí a dica.
Veja a relação completa dos artigos de Tiago Barcellos Peczenyj
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
- Currently 3.10/5
- 1
- 2
- 3
- 4
- 5
Avaliação:
3.1 /5
(702 votos)
Opinião dos Leitores
Salvio
07 Out 2008, 15:47
A melhor maneira de fazer download de videos do youtube e metacafe é através desse site
http://www.freefileconvert.com
Também é possivel fazer conversões de arquivo nesse site
Uma boa dica pra quem não ta conseguindo baixar
Cordadeluz
21 Ago 2008, 15:24
sendo com 's' essa é boa!!!!
errei
Cordadeluz
21 Ago 2008, 15:23
Esses códigos em Shell Script está cendo o meu ponta pé inicial em misturar Shell script com Zenity muito bom!!!
Obrigado pelos códigos
HEITOR
13 Ago 2008, 10:31
USO o kurumun 7 e quero baixar videos do you tube, o que me recomendam?
Marcio Carneiro
08 Jun 2008, 18:50
Poderiam fazer o script usando o kdialog ou o kommander?
Não sou programador e estou iniciando o estudo do bash e outras linguagens de script.
Didio
18 Mai 2008, 16:38
Gostaria de experimentar baixar alguns videos do youtube.Como devo faze-lo passo a passo.
Marcio
18 Mai 2008, 13:39
Nossa quanta facilidade !!! muito bom !!! Seja feliz use Linux/SL
lkjç
08 Mar 2008, 16:27
pqp que topico noob ;
Antonio Francisco
06 Mar 2008, 22:39
Executa no terminal (console)
$ ./youtube.sh "url"
Sobre a barra de contagem acompanhar o processo, dá para usar a regra de três...
Mas, precisaria saber o tamanho do arquivo de destino...
Arq.Origerm 100
---
Arq.Destino
Dê uma olhada neste dialog...
E tire suas próprias conclusões...
#!/bin/bash
# copydir.sh - Copia o diretório mostrando uma barra de progresso
# Este script faz parte do http://aurelio.net/shell/dialog
#
# Uso: copydir.sh <dir-origem> <dir-destino>
#
# Exemplo de uso da caixa de barra de progresso (gauge), que é
# diferente e meio complicada de usar. Ela espera receber a
# porcentagem da barra via STDIN, sendo um número de 0 a 100.
#
# O Gauge só mostra na tela a porcentagem que você informar,
# ele não tem inteligência, então todo o controle sobre o
# processo deve ser feito manualmente pelo programador.
#
# O procedimento se resume em duas ações:
#
# 1) Saber como quantificar o TOTAL, para conhecer o 100%.
# No caso de uma cópia de arquivos, o TOTAL é o tamanho
# total de todos os arquivos a serem copiados.
#
# 2) Saber como descobrir de tempos em tempos o STATUS
# corrente do procedimento, enquanto ele está sendo
# executado, para poder calcular o quanto ainda falta
# para o final (100%). No caso de uma cópia de arquivos,
# o STATUS é a quantidade de arquivos que já foi copiada,
# ou o espaço em disco ocupado por eles.
#
# Tendo os dois dados não, uma simples regrinha de três lhe dá
# a porcentagem atual do andamento: STATUS*100/TOTAL.
#
# 12 Agosto 2004 - Aurélio Marinho Jargas
#................................................................
TITLE='Copiando...'
MSG='Copiando o diretório $ORIGEM para $DESTINO'
INTERVALO=1 # intervalo de atualização da barra (segundos)
PORCENTO=0 # porcentagem inicial da barra
#................................................................
ORIGEM="${1%/}"
DESTINO="${2%/}"
die() { echo "Erro: $*" ; exit 1 ; }
sizeof() { du -s "$1" | cut -f1; }
running(){ ps $1 | grep $1 >/dev/null; }
#................................................................
# tem somente dois parâmetros?
[ "$2" ] || die "Uso: $0 dir-origem dir-destino"
# a origem e o destino devem ser diretórios
[ -d "$ORIGEM" ] || die "A origem '$ORIGEM' deve ser um diretório"
[ -d "$DESTINO" ] || die "O destino '$DESTINO' deve ser um diretório"
# mesmo dir?
[ "$ORIGEM" = "$DESTINO" ] &&
die "A origem e o destino são o mesmo diretório"
# o diretório de destino está vazio?
DIR_DESTINO="$DESTINO/${ORIGEM##*/}"
[ -d "$DIR_DESTINO" ] && [ $(sizeof $DIR_DESTINO) -gt 4 ] &&
die "O dir de destino '$DIR_DESTINO' deveria estar vazio"
#................................................................
# expansão das variáveis da mensagem
MSG=$(eval echo $MSG)
# total a copiar (em bytes)
TOTAL=$(sizeof $ORIGEM)
# início da cópia, em segundo plano
cp -r $ORIGEM $DESTINO &
CPPID=$!
# caso o usuário cancele, interrompe a cópia
trap "kill $CPPID" 2 15
#................................................................
# loop de checagem de status da cópia
(
# enquanto o processo de cópia estiver rodando
while running $CPPID; do
# quanto já foi copiado?
COPIADO=$(sizeof $DIR_DESTINO)
# qual a porcentagem do total?
PORCENTAGEM=$((COPIADO*100/TOTAL))
# envia a porcentagem para o dialog
echo $PORCENTAGEM
# aguarda até a próxima checagem
sleep $INTERVALO
done
# cópia finalizada, mostra a porcentagem final
echo 100
) | dialog --title "$TITLE" --gauge "$MSG" 8 40 0
#................................................................
echo OK - Diretório copiado
radames
30 Set 2007, 02:50
#!/bin/bash
TITLE="Youtube Downloader"
link=$(zenity --title "$TITLE" --entry --text "Endereço do vídeo:" --width 370 --height 100)
[ $? == 1 ] && exit
[ -z "$link" ] && ( zenity --title "$TITLE" --error --text "Faltou digitar a url..." ; exit 1 ; )
nome=$(zenity --title "$TITLE" --entry --text "Digite um nome para o vídeo:")
[ $? == 1 ] && exit
cd $(zenity --title "$TITLE" --entry --text 'Digite o diretório de destino')
URL="http://www.youtube.com"
DOWNLOAD=`wget -qO - "$link" | grep -oE 'video_id=.*&t=[^\"&]*' | head -1`
wget -O "$nome.flv" "${URL}/get_video?${DOWNLOAD}" 2>&1 | sed -u 's/.*\ \([0-9]\+%\)\ \+\([0-9.]\+\ [KMB\/s]\+\)$/\1\n# Baixando a \2/' | zenity --progress --title "$TITLE" --auto-kill --auto-close
zenity --title "$TITLE" --question --text "Converter video para avi"
[ $? == 1 ] && exit
ffmpeg -i "$nome.flv" -ab 56 -ar 22050 -b 50 -s 320x240 "$nome.avi" | zenity --progress --percentage "1" --auto-kill --auto-close
zenity --title "$TITLE" --question --text "Apagar flv baixado e ja convertido"
[ $? == 1 ] && exit
rm "$nome.flv"
exit
to usando para fazer o download e converter para avi usando o ffmpeg
so q na hora q esta convertendo a barra de progreso nao funciona
alguem faz ideia por q nao entendo muito de zenity mas gostei do script valeu
viviane lopes da silva
17 Ago 2007, 11:02
eu quro a baixa video
felipe
15 Ago 2007, 05:23
usando zenity, pra embelezar :)
#!/bin/bash
#youtube downloader
#Felipe, 15/08/2007
TITLE="Youtube Downloader"
link=$(zenity --title "$TITLE" --entry --text "Endereço do vídeo:" --width 370 --height 100)
[ $? == 1 ] && exit
[ -z "$link" ] && ( zenity --title "$TITLE" --error --text "Faltou digitar a url..." ; exit 1 ; )
nome=$(zenity --title "$TITLE" --entry --text "Digite um nome para o vídeo:")
[ $? == 1 ] && exit
cd $(zenity --title "$TITLE" --entry --text 'Digite o diretório de destino')
URL="http://www.youtube.com"
DOWNLOAD=`wget -qO - "$link" | grep -oE 'video_id=.*&t=[^\"&]*' | head -1`
wget -O "$nome.flv" "${URL}/get_video?${DOWNLOAD}" 2>&1 | sed -u 's/.*\ \([0-9]\+%\)\ \+\([0-9.]\+\ [KMB\/s]\+\)$/\1\n# Baixando a \2/' | zenity --progress --title "$TITLE" --auto-close
zenity --title "$TITLE" --question --text "Download concluído. Deseja abrir o arquivo?"
[ $? == 1 ] && exit
totem "$nome.flv"
Fabio
28 Jul 2007, 23:51
Muito bom!
carlos josè lobo de assis
28 Jul 2007, 07:39
eu quero que algum internalta envie atravês de e-mail fotos e imagens de sacanagem que estejam colocando ao meu respeito na internet.urgente
adilson guilherme marcilio
27 Jul 2007, 02:32
eu baixar clipes
Bruk
26 Jul 2007, 12:21
Tem como colocar esse script para pegar musicas do http://www.goear.com.
Obrigado
charles
15 Jul 2007, 22:36
funcionou perfeitamente, ótimo trabalho kra.
ubuntu rulez.
camila
11 Jul 2007, 15:57
sou uma pessoa legal
José Antonio Meira da Rocha
11 Jul 2007, 00:17
Tenho obtido melhores resultados com o Xvid. Melhor qualidade e menos processamento.
Narcélio Filho
09 Jul 2007, 22:04
Muito bom! Acrescentei umas linhas pra fazer com que o nome do arquivo salvo seja o mesmo do título do vídeo em vez do ID dele. Aqui vai patch:
--- youtube-old 2007-07-09 21:56:00.000000000 -0300
+++ youtube 2007-07-09 21:59:34.000000000 -0300
@@ -10,5 +10,9 @@
# download link: http://youtube.com/get_video?video_id=[video_id]&t=[t_id]&...
DOWNLOAD=`wget -qO - "${URL}/watch?v=${1/*=}" | grep -oE 'video_id=.*&t=[^\"&]*' | head -1`
+FILENAME=`wget -qO - "${URL}/watch?v=${1/*=}" \
+ | grep 'id="video_title"' \
+ | sed -r 's/^.*>([^<]+)<.*$/\1/'`
+
+wget -O "${FILENAME}.flv" "${URL}/get_video?${DOWNLOAD}"
-wget -O "${1/*=}.flv" "${URL}/get_video?${DOWNLOAD}"
flycode
06 Jul 2007, 00:26
Testei aqui cara, muito bom mesmo. Parabens.
Tiago Peczenyj
05 Jul 2007, 12:25
Israel, pra executar o script é simples.
- primeiro vc salva em um arquivo
ex: youtube.sh
- depois dá permissão de execução do arquivo
chmod +x youtube.sh
- depois executa da seguinte forma
./youtube.sh http://www.youtube.com/watch?v=s7uXvqfQvNI
ou
./youtube.sh s7uXvqfQvNI
ou seja, vc pode informar tanto a url do vídeo quanto apenas o 'id' dela. Um arquivo sera salvo no diretorio corrente com extensão flv e mesmo nome do id e vc pode ve-lo com o mplayer, por exemplo.
Tu podes converter o video pra mpeg com esta dica:
http://youmakemedia.com/2006/10/13/converting-flv-to-mpeg-in-linux/
ou pode tentar executar com o mplayer.
Israel
05 Jul 2007, 11:39
Olá, gostei da dica, mas como sou meio noob em Linux, como faço para rodar esse script?
Salvo o script como ".sh" daí é soh executar?
Tiago Peczenyj
05 Jul 2007, 09:31
Atenção! Devido a formatação do HTML, o comentario download link foi quebrado, a linha de baixo também é um comentário.
Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais
Biblioteca
Redes - Guia Prático
Por Carlos. E. Morimoto
Hardware - o Guia Definitivo
Por Carlos. E. Morimoto
Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto
Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto
VPN: Virtual Private Network
Por Lino Sarlo da Silva
MySQL - Guia do Programador
Por André Milani
Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe
Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto
Extreme Programming
Por Vinicius Manhaes Teles
Google Hacking
Por JOHNNY LONG
Elite da Tropa
Por Luis Eduardo Soares, Andre Batista e Rodrigo Pimentel
Harry Potter e as Relíquias da Morte
Por J.K. Rowling
Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder
PHP para Quem Conhece PHP
Por Juliano Niederauer
O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti
Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson
Redes de Computadores
Por Andrew S. Tanembaum
Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan
Deus, um delírio
Por Richard Dawkins
Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel
Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho
Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates
1808
Por Laurentino Gomes
UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson