added ebook-zip.sh
This commit is contained in:
parent
bfb46f8c31
commit
695cb2e9f5
149
ebook-zip.sh
Executable file
149
ebook-zip.sh
Executable file
@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
#~ Nom : nom_du_script
|
||||
#~ Description : Ceci est la description du script
|
||||
#~ Auteur : Etienne Girault <etienne.girault@gmail.com>
|
||||
#~
|
||||
#~ 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user