From 695cb2e9f5068f2d105a4bdcf7f661c1f88b4d11 Mon Sep 17 00:00:00 2001 From: Vezpi Date: Sun, 1 Mar 2020 14:28:30 +0100 Subject: [PATCH] added ebook-zip.sh --- ebook-zip.sh | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 ebook-zip.sh diff --git a/ebook-zip.sh b/ebook-zip.sh new file mode 100755 index 0000000..6009fe1 --- /dev/null +++ b/ebook-zip.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +#---------------------------------------------------------------------------------------------------- +#~ Nom : nom_du_script +#~ Description : Ceci est la description du script +#~ Auteur : Etienne Girault +#~ +#~ Usage : [-h] [-D] [-V] +#~ +#~ Options : -h, --help ; Affiche l'aide +#~ Options : -V, --version ; Affiche la version +#~ Options : -D, --debug ; Mode debug + +#---------------------------------------------------------------------------------------------------- +# Déclaration des variables +#---------------------------------------------------------------------------------------------------- +script_name="$(grep '^#~ Nom' "$0" | sed 's/^.*: //')" +script_version="$(grep '^#~ v' "$0" | tail -1 | sed -e 's/^#~ //' -e 's/ *\-.*$//')" + +ebook_download_dir=/data/download +ebook_dest_dir=/srv/owncloud/data/Ebook/files + +user_used=www-data +occ_bin=/srv/owncloud/occ + +mode_verbose=0 +new_ebook=0 +sudoing="" + +#---------------------------------------------------------------------------------------------------- +# Déclaraition des fonctions +#---------------------------------------------------------------------------------------------------- +print_script_name_version() { echo "$script_name $script_version" && sed -n '/^#~ Version/,$p' "$0" | grep '^#~' | sed 's/^#~ //'; } +print_script_description() { grep '^#~ Description' "$0" | sed 's/^.*: //'; } +print_script_usage() { grep '^#~ Usage' "$0" | sed -e 's/^.*: //' -e '1 s/^/Usage: '"$script_name"' /' -e '2,$ s/^/'"$(printf '%*s' "$(echo "Usage: $script_name" | wc -c)")"'/'; } +print_script_options() { echo "Options" && grep '^#~ Options' "$0" | sed -e 's/^.*://' -e 's/^ --/ --/' | column -ts \;; } +print_script_help() { echo "$script_name $script_version" && print_script_description && print_script_usage && print_script_options; } + +exit_msg() { echo $1; exit $2; } + +prerunning_test() { + # Test si l'utilsateur n'est pas $user_used + if [[ $(whoami) != $user_used ]]; then + # Test si l'utilisateur peut lancer des commandes en tant que $user_used + if sudo -u $user_used -n true 2> /dev/null; then + # Active le mode sudo + sudoing="sudo -u $user_used" + else + exit_msg "Impossible de lancer des commandes en tant que $user_used" + fi + fi + + [ -d $ebook_download_dir ] || exit_msg "Le répertoire de téléchargement ($ebook_download_dir) est inaccessible" 1 + [ -d $ebook_dest_dir ] || exit_msg "Le répertoire de destination ($ebook_dest_dir) est inaccessible" 1 + # [ ! -w $EBOOK_DEST_DIR ] && exit_msg "Impossible d'écrire dans le répertoire de destination ($EBOOK_DEST_DIR)" 1 +} + +list_directories() { + download_directories=$(mktemp) + find "$ebook_download_dir" -type d > $download_directories +} + +directory_is_ebook() { + if $(ls -1 "$1" | grep -q '\.mp3$'); then + return 0 + else + return 1 + fi +} + +its_new_ebook() { + ebook_name_uncleaned="${1##*/}" + ebook_name="${ebook_name_uncleaned%% \[*}" + messenger "nom du livre : $ebook_name" + if [[ -f "${ebook_dest_dir}/${ebook_name}.zip" ]]; then + return 1 + else + return 0 + fi +} + +proceed_ebook() { + cd "$1" + $sudoing zip -r "${ebook_dest_dir}/${ebook_name}.zip" . + new_ebook=1 + cd - +} + +owncloud_scan() { [[ $new_ebook = 1 ]] && $sudoing $occ_bin files:scan --all; } + +messenger() { [[ $mode_verbose = 1 ]] && echo "$1"; } + +# Reception de signaux d'interruptions +trap 'exit 1' INT TERM + +#---------------------------------------------------------------------------------------------------- +# Gestion des options +#---------------------------------------------------------------------------------------------------- +while getopts ":-:hVDv" OPTION; do + case $OPTION in + h) print_script_help; exit;; + V) print_script_name_version; exit;; + D) set -x;; + v) mode_verbose=1;; + :) ;; + -) case $OPTARG in + help) print_script_help; exit;; + version) print_script_name_version; exit;; + debug) set -x;; + esac ;; + *) ;; + esac +done +shift $((OPTIND-1)) + +#---------------------------------------------------------------------------------------------------- +# Début du script +#---------------------------------------------------------------------------------------------------- + +prerunning_test + +# Liste tout les répertoires du $ebook_download_dir dans le fichier temporaire $download_directories +list_directories + +# Pour chaque répertoire du $ebook_download_dir +while read directory; do + # Test si le répertoire contient un fichier mp3 + if directory_is_ebook "$directory"; then + # Si le répertoire contient un fichier mp3, il est considéré comme un livre + messenger "le répertoire ($directory) est un livre" + # Test si le livre a déjà été traité + if its_new_ebook "$directory"; then + # Si le livre n'a pas déjà été traité, il est traité + messenger "le répertoire ($directory) doit etre zippé" + proceed_ebook "$directory" + fi + fi + +done < $download_directories + +owncloud_scan + +#---------------------------------------------------------------------------------------------------- +# Fin du script +#---------------------------------------------------------------------------------------------------- + +#~ Version changelog +#~ v0.1 - Création du script +