Advertisement
fvarrui

downloader

Oct 30th, 2023
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.01 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. dir_descargas="$HOME/descargas"
  4. fich_registro="$dir_descargas/.registro"
  5. media_bytes=0
  6.     echo "*****************************************************************************************************"
  7.     echo "¡¡IMPORTANTE!! Se debe tener en cuenta el idioma del sistema para modificar el nombre del directorio Descargas o "
  8.     echo "Downloads en la variable dir_descargas"
  9.     echo "*****************************************************************************************************"
  10. if [ "$#" -eq 0 ] || [ "$1" = "--help" ]; then
  11.     echo "Script para controlar nuestras descargas."
  12.     echo "Para usar el script: dowloader.sh [ --help | --estadisticas | --limpiar | --registro | url ]"
  13.     echo "Opciones permitidas:"
  14.     echo "--help: Muestra esta ayuda."
  15.     echo "--estadisticas: Muestra las estadisticas de todas las descargas"
  16.     echo "--limpiar: Elimina todo el contenido del directorio descargas."
  17.     echo "--registro: Muestra el contenido del archivo de registro."
  18.     exit 1
  19. fi
  20.  
  21. #Si no existe el directorio descargas lo creamos.
  22. if [ ! -d "$dir_descargas" ]; then
  23.     mkdir -p "$dir_descargas"
  24. fi
  25.  
  26. # Se comprueba que el parámetro introducido es una opción del comando o una cadena de texto
  27. case $1 in
  28.  
  29.     "--estadisticas")
  30.         bytes_totales=0
  31.             num_ficheros=0
  32.             for file in "$dir_descargas"; do
  33.             if [ "$file" != "$dir_descargas" ]; then
  34.                 echo "contando ... $file"
  35.                 num_ficheros=$((num_ficheros + 1))
  36.                 bytes_totales=$((bytes_totales + $(stat -c %s "$file")))
  37.             fi
  38.             done
  39.             [ "$num_ficheros" -gt 0 ] && media_bytes=$(($bytes_totales / $num_ficheros))
  40.             echo "Cantidad de bytes descargados: $bytes_totales"
  41.             echo "Numero de ficheros descargados: $num_ficheros"
  42.             echo "Promedio de bytes por fichero: $media_bytes"
  43.         ;;
  44.  
  45.     "--limpiar")
  46.         read -p "Seguro que quieres eliminar todos los archivos del directorio descargas? (s/n): " respuesta
  47.             if [ "$respuesta" = "s" ]; then
  48.             rm "$fich_registro"
  49.                     rm -rf "$dir_descargas"/*
  50.                     echo "Se ha eliminado el contenido del directorio descargas."
  51.             else
  52.                     echo "Cancelando accion.."
  53.             fi   
  54.         ;;
  55.  
  56.     "--registro")
  57.         if [ -f "$fich_registro" ]; then
  58.                     cat "$fich_registro"
  59.         else
  60.             echo "El archivo registro no existe o está vacío."
  61.         fi
  62.         ;;
  63.  
  64.     *)
  65.         # En caso de que el parámetro sea una cadena de texto que no es como los parámetros esperados,
  66.         # comprobamos que es una URL con una expresión regular (empieza http:// o https://)
  67.         if [[ "$1" =~ ^(http|https)://[^\s]+ ]]; then
  68.            
  69.             # Si la URL ya se encuentra dentro del fichero de registro...
  70.                 if grep -q "$1" "$fich_registro"; then
  71.                 echo "La URL introducida ya ha sido descargada previamente."
  72.             else
  73.                 # Si no, se intenta descargar
  74.                 wget --tries=5 --directory-prefix="$dir_descargas" "$1"
  75.                 echo "$1" >> $fich_registro
  76.                 fi
  77.         else
  78.             # El parámetro no es una URL válida
  79.             echo "El parámetro introducido no es una URL"
  80.         fi
  81.  
  82.         ;;
  83. esac
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement