Skip to content

Instantly share code, notes, and snippets.

@PandaFoss
Last active August 17, 2019 20:41
Show Gist options
  • Save PandaFoss/70748eaa117f0d1c2f03a42b1d30e433 to your computer and use it in GitHub Desktop.
Save PandaFoss/70748eaa117f0d1c2f03a42b1d30e433 to your computer and use it in GitHub Desktop.
Pequeño script que ayuda a descargar archivos desde la seccion de descargas de la web de la Universidad Nacional del Sur (Bahía Blanca)
#!/usr/bin/env bash
# Autor: Max Ferrer
# Email: maxi.fg13@gmail.com
#############################
# #
# Configuración #
# #
#############################
# Establezca a continuación la ruta al directorio de sincronización
# Por defecto se crea un directorio en la carpeta de usuario
SYNC_DIR="${HOME}/Web_UNS"
# A continuacion asigne una ruta al directorio de configuracion.
# El directorio de configuracion es necesario para llevar el registro
# de los archivos que se han actualizado.
CONFIG_DIR="${HOME}/.webuns"
# Web a descargar. No tocar a menos que se sepa lo que se está haciendo.
WEBPAGE='http://www.cs.uns.edu.ar/~mlg/ipoo/index.php?accion=download&dir=downloads'
#############################
# #
# Programa Principal #
# #
#############################
# Verificamos que exista el directorio de configuracion, sino lo creamos.
if [ ! -d ${CONFIG_DIR} ]
then
echo -e "El directorio ${CONFIG_DIR} no existe. Creandolo...";
mkdir --parents ${CONFIG_DIR}
fi
# Verificamos que exista el directorio de sincronizacion, sino lo creamos.
if [ -d ${SYNC_DIR} ]
then
# Imprimimos texto en pantalla
echo -e "Sincronizando contenido, puede tomar algunos minutos...";
# Creamos una carpeta temporal para descargar todo el contenido del servidor
mkdir --parents ${CONFIG_DIR}/temp
# Descargamos todo el contenido del servidor en la carpeta temporal
wget --quiet -nH --cut-dirs=2 --no-parent -r -P ${CONFIG_DIR}/temp ${WEBPAGE}
# Limpiamos contenido indeseado
rm --recursive ${CONFIG_DIR}/temp/index.php* ${CONFIG_DIR}/temp/imagenes ${CONFIG_DIR}/temp/includes ${CONFIG_DIR}/temp/robots.txt
# Reorganizamos elementos
mv ${CONFIG_DIR}/temp/downloads/* ${CONFIG_DIR}/temp
# Borramos elementos innecesarios
rm --dir ${CONFIG_DIR}/temp/downloads
# Creamos una variable para chequear si hay cambios entre los archivos que tenemos descargados y los nuevos
DIFF=$(diff --suppress-common-lines --recursive --brief ${CONFIG_DIR}/temp ${SYNC_DIR})
if [ ${#DIFF} -gt 0 ]
then
# Imprimimos texto en pantalla
echo -e "Se sincronizarán los siguientes archivos:\n";
# Generamos un log con los nuevos archivos
git diff --name-only ${SYNC_DIR} ${CONFIG_DIR}/temp > ${CONFIG_DIR}/webuns.log
# Limpiamos el log dejando sólo el nombre de los archivos
sed -i "s+${CONFIG_DIR}/temp/*++g" ${CONFIG_DIR}/webuns.log
# Mostramos el log en pantalla
cat ${CONFIG_DIR}/webuns.log
# Copiamos los nuevos archivos a su directorio final
cp --recursive ${CONFIG_DIR}/temp/* ${SYNC_DIR}/
# Borramos la carpeta temporal
rm --recursive ${CONFIG_DIR}/temp
fi
# Borramos carpeta temporal si aun existe
if [ -d ${CONFIG_DIR}/temp ]
then
rm --recursive ${CONFIG_DIR}/temp
fi
# Salimos sin errores
exit 0
else
echo -e "El directorio ${SYNC_DIR} no existe. Creandolo...";
mkdir --parents ${SYNC_DIR}
# Descargo todo
echo -e "Descargando todos los ficheros, puede tomar algo de tiempo...";
wget --quiet -nH --cut-dirs=2 --no-parent -r -P ${SYNC_DIR} ${WEBPAGE}
# Borro archivos innecesarios
echo -e "Borrando archivos innecesarios...";
rm --recursive ${SYNC_DIR}/index.php* ${SYNC_DIR}/imagenes ${SYNC_DIR}/includes ${SYNC_DIR}/robots.txt
# Quito del directorio download y lo paso al actual
echo -e "Acomodando archivos y finalizando...";
mv ${SYNC_DIR}/downloads/* ${SYNC_DIR}
rm --dir ${SYNC_DIR}/downloads
# Salimos sin errores
exit 0
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment