easydl - download de arquivos em forma de URLs
Publicado por Pedro Fernandes (última atualização em 24/09/2019)
[ Hits: 4.014 ]
Homepage: https://github.com/PedroF37
Download 1564270761.easydl (versão 2)
Usa o wget para fazer os downloads. Pode baixar um único URL especificado na linha de comando ou uma lista inteira que tenha sido previamente criada em um arquivo. Nesse caso, a lista terá que conter uma URL por linha.
O script cria um diretório no HOME do usuário só para os downloads.
As opções do wget que o script usa são:
--input-file=
--continue
--limit=rate
O script conta com uma função que está toda comentada, pois é opcional, que testa o ping e se o campo "rtt" no valor "max" for maior que 10ms, o usuário tem a opção de sair do script. Este é o valor que considero aceitável para a minha conexão. Como é subjetivo e opcional, a função está toda comentada.
Versão 2 - Enviado por Pedro Fernandes em 27/07/2019
Changelog: Versão 1.2
changelog:
1- Corrigido bloco de código que verifica se arquivo existe, se está vazio ou se não existe.
Agora testa direito se especificou um arquivo, se o arquivo existe ou não, e se existe
se está vazio ou não.
2- Corrigida a função que testa a conexao. Faltou declarar a variável "$QUALIDADE", sendo
assim ia dar erro. Simplifiquei, ao invés de declarar a variável testo por extenso;
variável local passou a ser variavel qualidade e se o resultado for maior que 10000,
então pergunta se quer saír ou continuar.
2.1- Também na mesma função, troquei o primeiro teste de conectividade,
para testar pelo ip ao invés do nome, para não perder tempo a tentar resolver
e também porque testei no meu pc quando estava sem internet e o resultado
não foi o esperado, (ficou um tempão travado a tentar resolver o nome, que nunca
iria resolver pois estava sem conexão.)
3- na função limite, se a taxa digitada não for: "^[0-9]+$"; o script avisa que
ou digitou errado ou não digitou nenhuma taxa e então irá prosseguir sem limitar
a velocidade.
4- Mudei o diretório de download para não dar conflito com o nome do script.
Passou a ser easydl-dir.
5- Na função usg, corrigi o texto onde dizia que dava para baixar mais do que
um url de uma vez no modo interativo. Mudei para avisar que no modo interativo
só pode baixar um url de cada vez.
#!/bin/bash
#
######################################################################
#
# Título: easydl
#
# Autor: Pedro Fernandes
#
# Email: pedrobfernandes32@protonmail.com
#
# Descrição: Script que usa o wget para fazer os downloads.
# O script pode baixar ou um único url especificado na linha de comando ou
# pode baixar uma lista inteira que tenha sido previamente criada em um arquivo.
# Nesse caso, a lista terá que conter uma url por linha.
# O script cria um diretório no home do usuário só para os downloads.
# As opções do wget que o script usa são:
# --input-file=; --continue; e --limit=rate.
# O script conta com uma função que está toda comentada, pois é opcional,
# que testa o ping e se o campo "rtt" no valor "max" for maior que 10ms, o usuário
# tem a opção de saír do script. Este é o valor que considero aceitável para a minha
# conexão. Como é subjetivo e opcional, a função está toda comentada.
#
######################################################################
#
######################################################################
#
# Constantes
#
PROGRAMA="$(basename "$0")"
DIRETORIO=/home/$USER/easydld
TAXA=" "
#
######################################################################
#
######################################################################
#
#Funções
#
######################################################################
#
# Ajuda
usg () {
clear
echo "
PROGRAMA: uso: $PROGRAMA [ -f (arquivo) | -i (interativo) | -h (ajuda) ]
Descrição:
Script gerenciador de downloads que usa o programa wget, para baixar.
O script permite baixar uma única url, ou várias especificadas no prompt.
Este modo é acionado pelo parâmetro [ -i (interativo) ].
Alternativamente, o script permite que se indique um arquivo previamente
criado contendo várias urls, sendo que tem que ser uma por linha.
Este modo é acionado pelo parâmetro [ -f arquivo ], onde arquivo é o nome
que você deu ao arquivo criado.
O modo [ -h (ajuda) ], simplesmente mostra este mesmo texto.
O script respeita toda a sintaxe do programa wget, então, todas as url passadas
ou como parâmetro ou no arquivo seguem o comportamento do mesmo.
Por exemplo, se quiser baixar uma iso de uma distribuição, então garanta que não
especificou a url de forma a baixar a página html ao invés da iso. Independente se der
para baixar seja o que for, o script (wget) irá baixar.
As opções do wget que são usadas neste script, são, dependendo da sua escolha:
\"--input-file=\"; \"--continue\" e \"--limit-rate\".
Para mais informações e opções para modificar o script a seu gosto: man wget.
"
exit
}
#
# Função interativo
inter () {
clear
cd /home/$USER/easydld
read -p "Digite a url do arquivo a baixar: > " url
if [[ -z "$TAXA" ]]; then
wget --continue $url
else
wget --continue --limit-rate=$TAXA $url
fi
echo -e "\nTerminado.
O seu download encotra-se na pasta easydld no home do seu usuário."
exit
}
#
# Função arquivo
loop_arq () {
clear
cp $arquivo /home/$USER/easydl &>/dev/null
cd /home/$USER/easydld
if [[ -z "$TAXA" ]]; then
wget --continue --input-file=$arquivo
else
wget --continue --limit-rate=$TAXA --input-file=$arquivo
fi
echo -e "\nTerminado
Os seus downloads encontram-se na pasta easydld no home do seu usuário."
rm $arquivo
exit
}
#
# Funão taxa
limite () {
clear
read -p "Deseja limitar a taxa de download? [1] sim; [2] não: > "
if [[ "$REPLY" =~ ^[1-2]$ ]]; then
if [[ "$REPLY" == 1 ]]; then
read -p "Digite a taxa em kbytes: > " rate
TAXA="$rate"
else
TAXA=
fi
else
echo -e "\nDigitou errado. Saíndo do script." >&2
exit 1
fi
return
}
#
# Função para testar conectividade.
# Na minha casa considero uma conexão boa se o rtt no valor max está até
# no máximo em 10ms.
# Deixo a função toda comentado pois é subjetiva a cada caso.
# Querendo usar é so descomentar e modifcar para o seu caso.
#conexao () {
# clear
# if ! ping -c1 www.google.com &>/dev/null ; then
# echo -e "\nParece estar sem conexão. Saíndo."
# sleep 2
# exit
# fi
#
# testando qualidade
# echo -e "\nAguarde enquanto testamos a qualidade da conexão. Pode demorar um pouco......."
# atual="$(ping -c5 www.google.com | grep 'rtt' | cut -d "=" -f 2 | cut -d "/" -f 3 | tr -d [:punct:])"
# if (( "$atual" > "$QUALIDADE" )); then
# echo -e "\nParece que a sua conexão está um pouco lenta.
#Dependendo do que quiser baixar, pode demorar mais do que o habitual.
#Deseja continuar assim mesmo, ou deseja saír e tentar mais tarde?"
# read -p "[1] para continuar; [2] para saír."
# if [[ "$REPLY" =~ ^[1-2] ]]; then
# if [[ "$REPLY" == 1 ]]; then
# echo -e "\nContinuando......"
# sleep 2
# return
# else
# echo -e "\nSaíndo do script......"
# sleep 2
# exit
# fi
# else
# echo -e "\nDigitou errado. Vamos saír do script......" >&2
# sleep 2
# exit 1
# fi
# else
# echo -e "\nConexão parece estar normal. Continuando......"
# sleep 2
# return
# fi
#}
#
######################################################################
#
# Fim de funções
#
######################################################################
#
# Verificações
#
######################################################################
#
# Não quero root
if [[ "$(id -u)" -eq 0 ]]; then
echo -e "\nErro. Não pode ser root" >&2
exit 1
fi
#
# O seguro morreu de velho
if [[ -z "$(which wget)" ]]; then
echo -e "\nTem que ter o wget instalado. Saíndo." >&2
sleep 2
exit 1
fi
#
# Criando diretório se ainda não existe
if [[ ! -d "$DIRETORIO" ]]; then
mkdir /home/$USER/easydld
fi
#
######################################################################
#
# Fim de verificações
#
######################################################################
#
# Começa aqui
#
######################################################################
#
# Tem que ter argumento
#
if [[ -n "$1" ]]; then
case "$1" in
-f) shift
arquivo="$1"
;;
-i) interativo=1
;;
-h) usg
;;
*) echo "Erro. Opção inválida." >&2
usg
exit 1
;;
esac
else
echo -e "Erro. Tem que ter um parâmetro." >&2
sleep 2
usg
exit 1
fi
#
# Parâmetro interativo
if [[ -n "$interativo" ]]; then
#conexao
limite
inter
exit
fi
#
# Tratando do parâmetro [ -f arquivo ]
if [[ -z "$arquivo" ]]; then
echo -e "\nErro. Tem que especificar o nome do arquivo quando usa o parâmetro [ -f ]." >&2
sleep 2
usg
exit 1
elif [[ ! -s "$arquivo" ]]; then
echo -e "\nErro. Arquivo encontrado, mas está vazio." >&2
sleep 2
usg
exit 1
elif [[ -n "$arquivo" ]]; then
if [[ ! -e "$arquivo" ]]; then
echo -e "\nErro. Arquivo especificado não existe." >&2
sleep 2
exit 1
else
#conexao
limite
loop_arq
exit
fi
fi
#
######################################################################
#
exit
#
######################################################################
Screenserver no modo texto - versão 2
Instalação do FreeRock GNOME unstable
Limpe bibliotecas não utilizadas - new release
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)









