#!/bin/bash source /home/$USER/autopost/common.sh checkdb(){ if [ ! -f "$DB_FILE" ]; then echo "La base de données n'existe pas. Création..." do_createdb fi } do_start() { do_update checkdb if screen -list | grep -q "$SCREEN_NAME"; then echo "Le screen '$SCREEN_NAME' est déjà en cours d'exécution." else screen -dmS "$SCREEN_NAME" bash -c "$SCRIPT_PATH" echo "Screen '$SCREEN_NAME' démarré avec '$SCRIPT_PATH'." fi if screen -list | grep -q "$WEB_NAME"; then echo "Le screen '$WEB_NAME' est déjà en cours d'exécution." else screen -dmS "$WEB_NAME" node "$WEB_PATH" echo "Screen '$WEB_NAME' démarré avec '$WEB_PATH'." fi } do_stop() { if screen -list | grep -q "$SCREEN_NAME"; then screen -S "$SCREEN_NAME" -X quit echo "Screen '$SCREEN_NAME' arrêté." else echo "Aucun screen '$SCREEN_NAME' en cours d'exécution." fi if screen -list | grep -q "$WEB_NAME"; then screen -S "$WEB_NAME" -X quit echo "Screen '$WEB_NAME' arrêté." else echo "Aucun screen '$WEB_NAME' en cours d'exécution." fi } do_restart() { do_stop sleep 1 do_start } do_show() { if screen -list | grep -q "$SCREEN_NAME"; then screen -r "$SCREEN_NAME" else echo "Aucun screen '$SCREEN_NAME' en cours d'exécution." fi } do_add() { checkdb release_path="$2" release_name=$(basename "$release_path") release_without_ext="${release_name%.*}" # Récupération de la réponse JSON complète response=$(curl -s "${URL_API}${APIKEY}&check=${release_without_ext}") # Extraction du champ "code" avec jq code=$(echo "$response" | jq -r '.code') # Extraction du champ "explain" avec jq explain=$(echo "$response" | jq -r '.Explain') # Arrêt du script si "code" vaut 1, en affichant le message "explain" if [ "$code" = "2" ]; then echo -e "$ROUGE""$explain""$NORMAL" sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; INSERT INTO release (nom, status) VALUES ('${release_name}', 3); COMMIT;" exit 1 else echo -e "$VERT""DEPLACEMENT DE LA RELEASE ${release_name} DANS LE REPERTOIRE DE TRAVAIL""$NORMAL" if [[ "${release_name}" =~ \.(mkv|mp4)$ ]]; then if [ ! -e "${DOSSIER_GLOBAL}${release_name}" ]; then cp -rl "${release_path}" "${DOSSIER_GLOBAL}" fi echo -e "$ROUGE""CREATION MEDIAINFO""$NORMAL" mediainfo --output=JSON --full "${DOSSIER_GLOBAL}${release_name}" > "${DOSSIER_NFO}${release_without_ext}.json" echo -e "$CYAN""AJOUT DE LA RELEASE ${release_name} DANS LA DATABASE""$NORMAL" sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; INSERT INTO release (nom, status) VALUES ('${release_name}', 0); COMMIT;" else echo "il ne s'agit pas d'un fichier mkv ou mp4" fi fi } do_check() { release_path="$2" release_name=$(basename "$release_path") release_without_ext="${release_name%.*}" # Récupération de la réponse JSON complète response=$(curl -s "${URL_API}${APIKEY}&check=${release_without_ext}") # Extraction du champ "code" avec jq code=$(echo "$response" | jq -r '.code') # Extraction du champ "explain" avec jq explain=$(echo "$response" | jq -r '.Explain') # Arrêt du script si "code" vaut 1, en affichant le message "explain" if [ "$code" = "1" ]; then echo -e "${release_name}" "$ROUGE""$explain""$NORMAL" else echo -e "${release_name}" "$BLEU""$explain""$NORMAL" fi } do_status() { checkdb # Exécuter la requête SQLite et récupérer les résultats dans une variable results=$(sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; SELECT nom, status, id FROM (SELECT * FROM release ORDER BY id DESC LIMIT 500) ORDER BY id ASC; COMMIT;") # Trouver la longueur maximale du champ name max_length=$(echo "$results" | awk -F'|' '{ if (length($1) > max) max = length($1) } END { print max }') # Ajouter 10 à la longueur maximale pour définir la largeur de la première colonne col1_width=$((max_length + 5)) # Parcourir les résultats et afficher avec la couleur appropriée while IFS='|' read -r name status id; do case $status in 0) printf "${FOND_CYAN}${NOIR}${GRAS}%-${col1_width}s %-34s %-19s${NORMAL}\n" "$name" "EN ATTENTE" "$id" ;; 1) printf "${FOND_VERT}${NOIR}${GRAS}%-${col1_width}s %-35s %-19s${NORMAL}\n" "$name" "ENVOI TERMINÉ" "$id" ;; 2) printf "${FOND_ROUGE}${NOIR}${GRAS}%-${col1_width}s %-34s %-19s${NORMAL}\n" "$name" "ERREUR" "$id" ;; 3) printf "${FOND_ROSE}${NOIR}${GRAS}%-${col1_width}s %-34s %-19s${NORMAL}\n" "$name" "DEJA DISPONIBLE" "$id" ;; *) printf "%-${col1_width}s %-30s %-15s\n" "$name" "$id" ;; esac done <<< "$results" # En-tête du tableau printf "%-${col1_width}s %-35s %-19s\n" "Name" "Status" "id" # Afficher la légende des couleurs après le tableau echo "" echo -e "${CYAN}${GRAS}■■■■■■${NORMAL} : EN ATTENTE" echo -e "${ROSE}${GRAS}■■■■■■${NORMAL} : DEJA DISPONIBLE" echo -e "${VERT}${GRAS}■■■■■■${NORMAL} : ENVOI TERMINÉ" echo -e "${ROUGE}${GRAS}■■■■■■${NORMAL} : ERREUR" } do_showlog() { release_name="$2" if [[ "${release_name}" =~ \.(mkv|mp4)$ ]]; then release_name="${release_name%.*}" fi cat ${DOSSIER_LOGS}${release_name}.log } do_createdb() { if [ -f "$DB_FILE" ]; then read -p "Voulez-vous vraiment supprimer $DB_FILE ? (y/n) : " choix if [[ "$choix" =~ ^[Yy]$ ]]; then rm "$DB_FILE" fi fi sqlite3 "$DB_FILE" <" exit 1 fi do_check "$@" ;; createdb) do_createdb ;; log) if [ -z "$2" ]; then echo "Usage: $0 add " exit 1 fi do_showlog "$@" ;; add) if [ -z "$2" ]; then echo "Usage: $0 add " exit 1 fi do_add "$@" ;; *) echo "Usage: $0 {start|stop|restart|show|log|check|update|add }" exit 1 ;; esac