From 41e96eef6aaf05e801e652e675ac29fe70bf155a Mon Sep 17 00:00:00 2001 From: unfr Date: Mon, 23 Jun 2025 14:49:05 +0200 Subject: [PATCH] update postauto command for mysql --- bin/postauto | 114 +++++++++++++++++++++++---------------------------- 1 file changed, 51 insertions(+), 63 deletions(-) diff --git a/bin/postauto b/bin/postauto index c1705ed..7abddd7 100644 --- a/bin/postauto +++ b/bin/postauto @@ -1,11 +1,22 @@ - #!/bin/bash +#!/bin/bash +# Pour les couleurs, chemins et API, complète comme avant... +source /home/$USER/autopost/common.sh -source $HOME/autopost/common.sh +# ========== FONCTIONS SCRIPT ========== -checkdb(){ - if [ ! -f "$DB_FILE" ]; then - echo "La base de données n'existe pas. Création..." - do_createdb +checkdb() { + if [ "$dbtype" = "sqlite" ]; then + if [ ! -f "$DB_FILE" ]; then + echo "La base de données n'existe pas. Création..." + #do_createdb + fi + else + # Vérifie si la table existe, sinon crée-la + exists=$(db_query "SHOW TABLES LIKE 'release';") + if [ -z "$exists" ]; then + echo "La table 'release' n'existe pas. Création..." + #do_createdb + fi fi } @@ -18,7 +29,7 @@ do_start() { 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 @@ -34,14 +45,13 @@ do_stop() { 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() { @@ -58,45 +68,33 @@ do_show() { 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;" - + db_query "INSERT INTO \`release\` (nom, status) VALUES ('${release_name}', 3);" 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;" + db_query "INSERT INTO \`release\` (nom, status) VALUES ('${release_name}', 0);" else echo "il ne s'agit pas d'un fichier mkv ou mp4" fi - fi } @@ -105,16 +103,10 @@ do_check() { 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 @@ -124,17 +116,9 @@ do_check() { 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 + results=$(db_query "SELECT nom, status, id FROM (SELECT * FROM \`release\` ORDER BY id DESC LIMIT 500) t ORDER BY id ASC;") 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) @@ -154,11 +138,8 @@ do_status() { ;; 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 + printf "%-${col1_width}s %-35s %-19s\n" "Name" "Status" "id" echo "" echo -e "${CYAN}${GRAS}■■■■■■${NORMAL} : EN ATTENTE" echo -e "${ROSE}${GRAS}■■■■■■${NORMAL} : DEJA DISPONIBLE" @@ -171,28 +152,36 @@ do_showlog() { if [[ "${release_name}" =~ \.(mkv|mp4)$ ]]; then release_name="${release_name%.*}" fi - cat ${DOSSIER_LOGS}${release_name}.log + 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" + if [ "$dbtype" = "sqlite" ]; then + 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 - fi - - sqlite3 "$DB_FILE" <" - exit 1 + echo "Usage: $0 check " + exit 1 fi do_check "$@" ;; createdb) do_createdb - ;; + ;; log) if [ -z "$2" ]; then - echo "Usage: $0 add " + echo "Usage: $0 log " exit 1 fi do_showlog "$@" @@ -243,8 +232,7 @@ case "$1" in do_add "$@" ;; *) - echo "Usage: $0 {start|stop|restart|show|log|check|update|add }" + echo "Usage: $0 {start|stop|restart|show|status|log|check|update|add }" exit 1 ;; esac -