From f161db8e5e984cd51f84e24ad3873912b2ce7a1f Mon Sep 17 00:00:00 2001 From: UNFR Date: Mon, 14 Jul 2025 08:02:17 +0000 Subject: [PATCH] =?UTF-8?q?version=20simplifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postprocess-simplified.sh | 168 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 postprocess-simplified.sh diff --git a/postprocess-simplified.sh b/postprocess-simplified.sh new file mode 100644 index 0000000..1e2f5c5 --- /dev/null +++ b/postprocess-simplified.sh @@ -0,0 +1,168 @@ +#!/bin/bash + +# ---------------------------------- +# Configuration des chemins et du fichier de log +# ---------------------------------- +ORG_PATH="/home/diabolino2/downloads/qbittorrent" +FINAL_PATH="/home/diabolino2" +LOG_FILE="/home/diabolino2/torrentend_debug.log" +BIN_PATH="/home/diabolino2/bin" + +# ---------------------------------- +# Couleurs pour l'affichage (facultatif) +# ---------------------------------- +VERT="\033[0;32m" +BLEU="\033[1;34m" +NORMAL="\033[0;39m" + +# ---------------------------------- +# Lecture des arguments +# ---------------------------------- +file="$1" +original_file="$file" + +# ---------------------------------- +# Fonction de log simplifiée +# ---------------------------------- +log() { + echo "$1" >> "$LOG_FILE" +} +log "-------------------------------" +log "$(date): Script exécuté" +log "Base filename: $file" +log "DEBUT DE TRAITEMENT" + +# ---------------------------------- +# Nettoyage du répertoire : suppression des samples et renommage des espaces +# ---------------------------------- +clean_dir() { + # Supprime tous les répertoires ou fichiers avec "sample" (n'importe quelle casse) + find "$1" -maxdepth 1 -iname '*sample*' -exec rm -rf {} + + # Renommage des espaces + rename 's/ /_/g' "$1"/* 2>/dev/null || true +} + +# ---------------------------------- +# Copie en hardlink +# ---------------------------------- +copieorg() { + cp -rl "$1" "$2" +} + +# ---------------------------------- +# Suppression des accents +# ---------------------------------- +remove_accents() { + echo "$1" | iconv -f utf8 -t ascii//TRANSLIT +} + +# ---------------------------------- +# Nettoyage du nom de fichier +# ---------------------------------- +sanitize_name() { + local filepath="$1" + local filename="$(basename "$filepath")" + local ext="${filename##*.}" + local name="${filename%.*}" + name="$(remove_accents "$name")" + name="${name// /.}" # Espace → underscore (change en point si tu veux ".") + name=$(echo "$name" | sed 's/[^A-Za-z0-9._-]//g') # Supprime tout sauf lettre/chiffre/point/underscore/tiret + printf "%s.%s" "$name" "$ext" +} + +# ---------------------------------- +# Traitement des .mkv uniquement +# ---------------------------------- +process_mkv() { + local src="$1" dst="$2" + local out="$(sanitize_name "$src")" + copieorg "$src" "$dst/$out" + $BIN_PATH/postauto add "$dst/$out" + echo -e "${BLEU}OK:${NORMAL} $out ajouté" + log "$src -> $dst/$out" +} + +# ---------------------------------- +# Upload des .nfo avec renommage à la volée +# ---------------------------------- +upload_nfo() { + local src="$1" + # Génère un nom nettoyé pour le NFO + local fn="$(sanitize_name "$src")" + # Envoie le nfo sous le nom nettoyé sans renommer le fichier sur disque + curl -s -k -L -m 60 \ + -F "nfo=@${src};filename=${fn}" \ + -F upload=upload "https://unfr.pw/nfos-upload" + log "UPLOAD NFO $src -> $fn" +} + +# ---------------------------------- +cd "$ORG_PATH" || exit 1 + +# On va gérer le cas fichier/dossier +if [ -f "$file" ]; then + log "Fichier trouvé à la racine: $file" + files_mkv=("$file") + files_nfo=() + [ "${file##*.}" = "nfo" ] && files_nfo=("$file") +elif [ -d "$file" ]; then + log "Dossier trouvé à la racine: $file" + clean_dir "$file" + rar_present=$(find "$file" -maxdepth 3 -type f -iname "*.rar" | head -n1) + sfv_present=$(find "$file" -maxdepth 3 -type f -iname "*.sfv" | head -n1) + if [[ -n "$rar_present" && -n "$sfv_present" ]]; then + log "RAR et SFV trouvés dans $file, exécution de scene." + /home/diabolino2/bin/scene "$file" + exit 0 + fi + mapfile -d '' files_mkv < <(find "$file" -maxdepth 3 -type f -iname '*.mkv' -print0 | sort -z) + mapfile -d '' files_nfo < <(find "$file" -maxdepth 3 -type f -iname '*.nfo' -print0) +else + found="" + for tdir in *.torrent; do + if [ -d "$tdir/$file" ]; then + found="$tdir/$file" + break + elif [ -f "$tdir/$file" ]; then + found="$tdir/$file" + break + fi + done + if [ -n "$found" ]; then + file="$found" + log "Info : $original_file non trouvé à la racine, utilisation de $file" + if [ -d "$file" ]; then + clean_dir "$file" + rar_present=$(find "$file" -maxdepth 3 -type f -iname "*.rar" | head -n1) + sfv_present=$(find "$file" -maxdepth 3 -type f -iname "*.sfv" | head -n1) + if [[ -n "$rar_present" && -n "$sfv_present" ]]; then + log "RAR et SFV trouvés dans $file, exécution de scene." + /home/diabolino2/bin/scene "$file" + exit 0 + fi + mapfile -d '' files_mkv < <(find "$file" -maxdepth 3 -type f -iname '*.mkv' -print0 | sort -z) + mapfile -d '' files_nfo < <(find "$file" -maxdepth 3 -type f -iname '*.nfo' -print0) + elif [ -f "$file" ]; then + files_mkv=("$file") + files_nfo=() + [ "${file##*.}" = "nfo" ] && files_nfo=("$file") + fi + else + log "ERREUR : $original_file introuvable ni à la racine ni dans un dossier .torrent" + exit 1 + fi +fi + +# Traitement des mkv trouvés +for mkv in "${files_mkv[@]}"; do + process_mkv "$mkv" "$FINAL_PATH" +done + +# Traitement des nfo trouvés +for nfo in "${files_nfo[@]}"; do + upload_nfo "$nfo" +done + +log "FIN DE TRAITEMENT" +log "-------------------------------" +exit 0