175 lines
4.3 KiB
Plaintext
175 lines
4.3 KiB
Plaintext
#!/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() {
|
|
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
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
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" "INSERT INTO release (nom, status) VALUES ('${release_name}', 3);"
|
|
exit 1
|
|
else
|
|
echo -e "$VERT""DEPLACEMENT DE LA RELEASE DANS LE REPERTOIRE DE TRAVAIL""$NORMAL"
|
|
cp -rl "${release_path}" "${DOSSIER_GLOBAL}"
|
|
|
|
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 DANS LA DATABASE""$NORMAL"
|
|
sqlite3 "$DB_FILE" "INSERT INTO release (nom, status) VALUES ('${release_name}', 0);"
|
|
fi
|
|
}
|
|
|
|
do_status() {
|
|
checkdb
|
|
|
|
# Exécuter la requête SQLite et récupérer les résultats dans une variable
|
|
results=$(sqlite3 "$DB_FILE" "SELECT nom, status, id FROM (SELECT * FROM release ORDER BY id DESC LIMIT 500) ORDER BY id ASC;")
|
|
|
|
# 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_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" <<EOF
|
|
CREATE TABLE release (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
nom TEXT NOT NULL,
|
|
status INTEGER NOT NULL DEFAULT 0 CHECK(status IN (0, 1, 2, 3))
|
|
);
|
|
EOF
|
|
|
|
sqlite3 "$DB_FILE" "PRAGMA journal_mode=WAL;"
|
|
sqlite3 "$DB_FILE" "PRAGMA busy_timeout = 5000;"
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
do_start
|
|
;;
|
|
stop)
|
|
do_stop
|
|
;;
|
|
restart)
|
|
do_restart
|
|
;;
|
|
show)
|
|
do_show
|
|
;;
|
|
status)
|
|
do_status
|
|
;;
|
|
createdb)
|
|
do_createdb
|
|
;;
|
|
add)
|
|
if [ -z "$2" ]; then
|
|
echo "Usage: $0 add <release_path>"
|
|
exit 1
|
|
fi
|
|
do_add "$@"
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart|show|add <release_path>}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|