diff --git a/postprocess.sh b/postprocess.sh index 9d77008..46a7055 100644 --- a/postprocess.sh +++ b/postprocess.sh @@ -1,12 +1,12 @@ -#!/bin/bash -x +#!/bin/bash # ---------------------------------- # Configuration des chemins et du fichier de log # ---------------------------------- -ORG_PATH="/home/**********/downloads/rtorrent" -FINAL_PATH="/home/************" -LOG_FILE="/home/**********/postprocess.log" -BIN_PATH="/home/***********/bin" +ORG_PATH="/home/************/downloads/rtorrent" +FINAL_PATH="/home/***********" +LOG_FILE="/home/*************/torrentend_debug.log" +BIN_PATH="/home/************/bin" # ---------------------------------- # Couleurs pour l'affichage (facultatif) @@ -41,13 +41,8 @@ log "DEBUT DE TRAITEMENT" # Nettoyage du répertoire : suppression des samples et renommage des espaces # ---------------------------------- clean_dir() { - local dir="$1" - - # Supprime tous les répertoires ou fichiers avec "sample" (n'importe quelle casse) - find "$dir" -maxdepth 1 -iname '*sample*' -exec rm -rf {} + - - # Renommage des espaces - rename 's/ /_/g' "$dir"/* 2>/dev/null || true + rm -rf "${1}"/*sample* + rename 's/ /_/g' "${1}"/* 2>/dev/null || true } # ---------------------------------- @@ -79,11 +74,20 @@ sanitize_name() { 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 + + # Calculer le nombre d'espaces dans le nom + local no_space + no_space=$(printf '%s' "$name" | tr -d ' ') + local space_count=$(( ${#name} - ${#no_space} )) + + # Si le nom est entièrement en minuscules + # OU contient au moins 2 espaces (pas forcément contigus), + # on bascule sur le dossier parent + if [[ "$name" == "${name,,}" ]] || (( space_count >= 2 )); then local parent="$(basename "$(dirname "$filepath")")" name="$(remove_accents "$parent")" fi + # Translit accents name="$(remove_accents "$name")" # Normalisation des séparateurs @@ -94,27 +98,49 @@ sanitize_name() { local total=${#parts[@]} local keep=() local i j k + local marker_index=-1 + local pattern - # Parcours des segments pour trouver e.g. S01E02 - for ((i=0;i= 0 )); then + # on garde tout jusqu'au marqueur inclus + keep=("${parts[@]:0:marker_index+1}") + # on cherche ensuite le premier tag qualité/langue + for ((j=marker_index+1; j