scripts/wget_list

167 lines
4.6 KiB
Plaintext
Raw Normal View History

2016-10-14 09:40:07 +02:00
#!/bin/sh
################################################################################################
##
## Nom: wget_list
##
## Licence: Creative Commons
##
## Comportement:
## Permet de récupérer tous les liens listés dans un fichier en lancant plusieurs wget
## en parallèle.
## Le fichier qui contient les liens est le premier paramètre passé au script.
## Le dossier où enregistré tous les liens correspond au deuxième paramètre passé au script,
## ou à un dossier prédéfini.
##
##
##
################################################################################################
##
## Date de création: 03/06/2010
##
## Auteur: Gardouille
##
##
## Dernière modifications:
## O3/O6/2010: - Création
# **********************************************************************************************
## 02/01/2010: -
## -
# **********************************************************************************************
##
##
##
################################################################################################
# **********************************************************************************************
#
# Variables globales
#
# -----------------------------------------------------------
# Fichier qui contient la liste des liens à télécharger: "${1}"
list_url=${1}
# Répertoire où vont être stockés les fichiers téléchargés
save_dir=${2}
# Fin des variables globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fonctions globales
#
# -----------------------------------------------------------
# Divers echos ...
echoi() { echo " (ii) $*" >> "${log}" ; }
echok() { echo " (ok) $*" >> "${log}" ; }
echow() { echo " (!!) $*" >> "${log}" ; }
echnk() { echo " (EE) $*" >> "${log}" ; }
# Fonction d'aide
help()
{
cat << EOF
Description:
Ce script permet de télécharger tous les liens stockés dans un fichier texte.
Utilisation:
wget_list FICHIER_URL DOSSIER_OU_SAUVEGARDER
Arguments:
FICHIER_URL: Chemin du fichier qui contient la liste des liens à télécharger
DOSSIER_OU_SAUVEGARDER: Dossier où vont être sauvegardés les fichiers téléchargés
Options:
-h, --help, help Affiche cette aide.
EOF
}
# Fin des fonctions globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Programme principale
#
# -----------------------------------------------------------
## Gestion des arguments:
# Si l'utilisateur veut afficher l'aide
if [ "${1}" = "-h" ] || [ "${1}" = "--help" ] || [ "${1}" = "help" ]
then
# On appelle la fonction help
help
# Et on quitte le script
exit 0
fi
# Vérification du nombre d'arguments:
case $# in
2 ) # 2 arguments
# Si le premier argument n'est pas un fichier
if [ ! -f "${1}" ]
then
echo "!!ERREUR: mauvais premier argument!!"
# On affiche l'aide
help
# Puis on quitte le script
exit 1
# Sinon, si le deuxième argument n'est pas un dossier
elif [ ! -d "${2}" ]
then
echo "!!ERREUR: mauvais deuxième argument!!"
# On affiche l'aide
help
# Et on termine le script
exit 1
# Sinon, c'est que tous les arguments sont corrects
else
echo "Analyse de ${1} ..."
fi
;;
0 ) # 0 argument
echo "!!ERREUR: aucun argument présent!!"
# On affiche l'aide
help
# Et on termine le script
exit 1
;;
* ) # Plus d'un argument
echo "ERREUR: Vous ne pouvez pas mettre plus de deux arguments"
# On affiche l'aide
help
# Et on termine le script
exit 1
;;
esac
# Fin de la gestion des arguments
# On vérifie que le dossier où vont être sauvegardés les fichiers existe
[ ! -d "${save_dir}" ] && mkdir -p "${save_dir}"
# On se place dans le dossier où sauvegarder les fichiers télécharger
cd ${save_dir}
# On télécharge les liens contenu dans le fichier
# Options:
# -n 1: le nombre maximum de paramètre envoyé est de 1
# -P 10: wget sera lancé 10 fois (en parallèle)
cat ${list_url} | xargs -n -P 10 wget
# On revient au dossier précédent
cd - > /dev/null
exit 0
# Fin de la boucle principale
# -----------------------------------------------------------
# **********************************************************************************************