Ajouter postprocess.sh
This commit is contained in:
commit
55e0bbae5d
177
postprocess.sh
Normal file
177
postprocess.sh
Normal file
@ -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<total;i++)); do
|
||||
keep+=("${parts[i]}")
|
||||
if [[ ${parts[i]} =~ ^[Ss][0-9]{2}[Ee][0-9]{2}$ ]]; then
|
||||
# trouver marqueur qualite/langue
|
||||
for ((j=i+1;j<total;j++)); do
|
||||
tag="${parts[j]^^}"
|
||||
if [[ "$tag" =~ ^(REPACK|PROPER|INTERNAL|FINAL|SUBFRENCH|FRENCH|MULTI|VOSTFR)$ ]] || [[ "$tag" =~ ^[0-9]{3,4}P$ ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
# conserver la suite
|
||||
for ((k=j;k<total;k++)); do
|
||||
keep+=("${parts[k]}")
|
||||
done
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# construire base nettoyée
|
||||
local out
|
||||
out=$(IFS='.'; echo "${keep[*]}")
|
||||
|
||||
# nettoyage TOS, espaces, caractères interdits
|
||||
out=$(echo "$out" | sed -e 's/(TOS)//Ig' -e 's/[ _]/./g' -e 's/[^A-Za-z0-9.-]//g')
|
||||
# apostrophes + majuscule suivante avec perl
|
||||
out=$(echo "$out" | perl -pe 's/'"'"'([A-Za-z])/.\U\1/g')
|
||||
# forcer le "i" minuscule dans MULTI, FINAL et INTERNAL
|
||||
out=${out//.MULTI./.MULTi.}
|
||||
out=${out//.FINAL./.FiNAL.}
|
||||
out=${out//.INTERNAL./.iNTERNAL.}
|
||||
|
||||
# Préfixe du dernier segment par un tiret uniquement si aucune autre tiret interne
|
||||
local last="${out##*.}"
|
||||
if [[ "$last" != *-* ]]; then
|
||||
out="${out%.*}-$last"
|
||||
fi
|
||||
|
||||
# Ajout de l'extension
|
||||
printf "%s.%s" "$out" "$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
|
||||
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
|
||||
Loading…
x
Reference in New Issue
Block a user