#!/bin/bash # ---------------------------------- # Configuration des chemins et du fichier de log # ---------------------------------- ORG_PATH="/home/************/downloads/rtorrent" FINAL_PATH="/home/***********" LOG_FILE="/home/*************/torrentend_debug.log" BIN_PATH="/home/************/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() { # 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 } # ---------------------------------- # 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%.*}" # 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 name="${name//[ _]/.}" # Découpage en segments IFS='.' read -ra parts <<< "$name" local total=${#parts[@]} local keep=() local i j k local marker_index=-1 local pattern # --- 1) d'abord, on regarde si on a un SxxEyy quelque part --- 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 $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