Je me permets de mettre ici ma version du script.
#!/bin/ash
###########################################################################################
#............ Script pour renommer les films de Video Station.............................#
#.........................................................................................#
#............... Permet de renommer les fichiers sous le nom officiel du films............#
###########################################################################################
###########################################################################################
# Declaration de la fonction de renommage #
###########################################################################################
start_rename () {
###########################################################################################
# Recuperation des infos DB et mise en variable #
###########################################################################################
#$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "select 0,c.id,a.title,c.path,a.year, 0, '' from movie a, video_file c where c.mapper_id=a.mapper_id order by c.id desc;"' | while read ENTRY
#$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "select 1,c.id,s.title,c.path,e.season, e.episode, e.tag_line from tvshow s, tvshow_episode e, video_file c where c.mapper_id=e.mapper_id and e.tvshow_id = s.id order by c.id desc;"' | while read ENTRY
$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "select 0,c.id,c.path,a.title,a.year, 0 from movie a, video_file c where c.mapper_id=a.mapper_id
union select 1,c.id,c.path,s.title,e.season,e.episode from tvshow s, tvshow_episode e, video_file c where c.mapper_id=e.mapper_id and e.tvshow_id = s.id order by id desc;"' | while read ENTRY
do
TYPE_VIDEO=$(echo $ENTRY|cut -f1 -s -d"|")
DB_ID=$(echo $ENTRY|cut -f2 -s -d"|")
CHEMIN=$(echo $ENTRY|cut -f3 -s -d"|")
FILM=0
if [ "$TYPE_VIDEO" = "$FILM" ]
then
#film
TITRE=$(echo $ENTRY|cut -f4 -s -d"|")
YEAR=$(echo $ENTRY|cut -f5 -s -d"|")
#NEW_TITRE=$(echo $TITRE |sed 's/,//g' |sed 's/://g' |sed 's/;//g' |sed -e 's/ /./g' |sed -e 's/?//g'|sed -e 's/*/-/g').$YEAR
NEW_TITRE=$(echo $TITRE |sed 's/,//g' |sed 's/://g' |sed 's/;//g' |sed -e 's/?//g'|sed -e 's/*/-/g').$YEAR #je ne veux pas remplacer les espaces par un . ca pose des pb avec le DLNA de la FREEBOX V5
else
#serie
SERIE=$(echo $ENTRY|cut -f4 -s -d"|")
SAISON=$(echo $ENTRY|cut -f5 -s -d"|")
EPISODE=$(echo $ENTRY|cut -f6 -s -d"|")
SEP_SAISON=" "
SEP_EPISODE="x"
NEW_TITRE="$SERIE$SEP_SAISON$SAISON$SEP_EPISODE$EPISODE"
fi
###########################################################################################
# Definition du nouveau nom (remplacement espace par des "." )et du dossier courant #
###########################################################################################
DOSSIER=$(dirname "$CHEMIN")
EXTENSION=${CHEMIN##*.}
###########################################################################################
# Nettoyage du nom de fichier final : accents, "&" , "," , ":" #
###########################################################################################
NEW_NAME=$(echo $NEW_TITRE.$EXTENSION |sed 's/&/Et/g' |sed -e 's/$//g' |sed "s/'/./g" |sed 's/à/a/g' |sed 's/â/a/g' |sed 's/ç/c/g' |sed 's/é/e/g' |sed 's/è/e/g' |sed 's/ê/e/g' |sed 's/ë/e/g' |sed 's/î/i/g' |sed 's/ï/i/g' |sed 's/ô/o/g' |sed 's/ö/o/g' |sed 's/œ/oe/g' |sed 's/Œ/oe/g' |sed 's/ù/u/g' |sed 's/ü/u/g' |sed 's/Â/A/g' |sed 's/Ç/C/g' |sed 's/É/E/g' |sed 's/È/E/g' |sed 's/Ê/E/g' |sed 's/Ë/E/g' |sed 's/Î/I/g' |sed 's/Ï/I/g' |sed 's/Ô/O/g' |sed 's/Ö/O/g' |sed 's/Ù/U/g' |sed 's/Ü/U/g' |sed -e 's/À/A/g' |sed -e 's/·/./g' |sed -e 's/’/./g')
NEW_PATH=$DOSSIER/$NEW_NAME
NEW_PATH2='$NEW_PATH'
###########################################################################################
# On verifie si le nom doit etre modifie #
###########################################################################################
if [ "$CHEMIN" == "$NEW_PATH" ]
then
echo $CHEMIN deja OK, pas de MaJ
else
###########################################################################################
# Demande de MaJ #
###########################################################################################
echo -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
echo "Renommer $CHEMIN <-- en --> $NEW_PATH"
read -p 'Mise a jour du fichier ? (o/n)' MAJ </dev/tty
if [ "$MAJ" == "o" ]
then
if [ -f "$NEW_PATH" ]
then
echo "Le fichier $NEW_PATH existe déja"
else
##########################################################################################
# On renomme le fichier, puis on met a jour la DB #
##########################################################################################
mv "$CHEMIN" "$NEW_PATH"
SQLCMD='/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = '$NEW_PATH2' WHERE id= '$DB_ID';"'
echo $SUCMD
echo $SQLCMD
$SUCMD "$SQLCMD"
fi
fi
fi
done
}
###########################################################################################
# Check du user = admin ou root #
###########################################################################################
CHECK_USER=$(whoami)
case $CHECK_USER in
admin)
SUCMD=eval
start_rename |tee rename.log;;
root)
SUCMD="su - admin -c"
start_rename |tee rename.log;;
*)
echo "Ce script doit etre lance avec les user root ou admin"
exit
esac
En gros j'ai rajouté la gestion des séries, remis les espaces dans le titre a la place des "." et mis un test pour ne pas écraser de fichiers mais simplement mettre une alerte en cas de doublon.
Tout ce que je peux dire c'est : chez moi ça marche mais faites attention.