postprocess/postprocess-simplified.sh
2025-07-14 08:02:17 +00:00

169 lines
4.9 KiB
Bash

#!/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