commit 55e0bbae5da40584b90a6363bb78bd8ad535c639 Author: UNFR Date: Sun Apr 20 12:11:47 2025 +0000 Ajouter postprocess.sh diff --git a/postprocess.sh b/postprocess.sh new file mode 100644 index 0000000..3c2f4d0 --- /dev/null +++ b/postprocess.sh @@ -0,0 +1,177 @@ +#!/bin/bash -x + +# ---------------------------------- +# Configuration des chemins et du fichier de log +# ---------------------------------- +ORG_PATH="/home/diabolino2/downloads/rtorrent" +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" +#etiq="$2" + +# ---------------------------------- +# Fonction de log simplifiée +# ---------------------------------- +log() { + echo "$1" >> "$LOG_FILE" +} +log "-------------------------------" +log "$(date): Script exécuté" +log "Base filename: $file" +log "DEBUT DE TRAITEMENT" + +# ---------------------------------- +# N'exécute que pour les torrents étiquetés AUTO +# ---------------------------------- +#[[ "$etiq" != "AUTO" ]] && exit 0 + +# ---------------------------------- +# Nettoyage du répertoire : suppression des samples et renommage des espaces +# ---------------------------------- +clean_dir() { + rm -rf "${1}"/*sample* + 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 : +# - suppression du titre d'épisode +# - suppression de (TOS) +# - gestion des apostrophes + Majuscule suivante +# - conversion espaces/underscores en points +# - conservation uniquement des segments utiles +# - dernier segment préfixé par un tiret +# ---------------------------------- +sanitize_name() { + # Extraction du nom de base et de l'extension + local filepath="$1" + local filename="$(basename "$filepath")" + local ext="${filename##*.}" + local name="${filename%.*}" + # Si le nom de fichier est entièrement en minuscules, on utilise le dossier parent + if [[ "$name" == "${name,,}" ]]; then + local parent="$(basename "$(dirname "$filepath")")" + name="$(remove_accents "$parent")" + fi + # Translit accents + name="$(remove_accents "$name")" + # Normalisation des séparateurs + name="${name//[ _]/.}" + + # Découpage en segments + IFS='.' read -ra parts <<< "$name" + local total=${#parts[@]} + local keep=() + local i j k + + # Parcours des segments pour trouver e.g. S01E02 + for ((i=0;i $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 +clean_dir "$file" + +mapfile -d '' mkv_files < <(find "$file" -maxdepth 3 -type f -iname '*.mkv' -print0 | sort -z) +for mkv in "${mkv_files[@]}"; do + process_mkv "$mkv" "$FINAL_PATH" +done + +mapfile -d '' nfo_files < <(find "$file" -maxdepth 3 -type f -iname '*.nfo' -print0) +for nfo in "${nfo_files[@]}"; do + upload_nfo "$nfo" +done + +log "FIN DE TRAITEMENT" +log "-------------------------------" +exit 0