217 lines
6.1 KiB
Bash
217 lines
6.1 KiB
Bash
|
#!/bin/bash
|
||
|
# T0MuX - copyleft
|
||
|
|
||
|
# Definition du nombre total de .mp3 dans le dossier du script
|
||
|
total=`ls *.mp3 2>/dev/null | wc -l`
|
||
|
|
||
|
# Definition variables couleurs
|
||
|
normal="\e[0m"
|
||
|
B="\e[97m"
|
||
|
L="\e[94m" # Couleur du logo
|
||
|
color=0
|
||
|
|
||
|
# Fonction couleur aleatoire
|
||
|
color() {
|
||
|
oldcolor="$color"
|
||
|
while :
|
||
|
do
|
||
|
col=`echo $((1 + RANDOM % 12))`
|
||
|
case $col in
|
||
|
1) color="\e[91m";;
|
||
|
2) color="\e[92m";;
|
||
|
3) color="\e[93m";;
|
||
|
4) color="\e[94m";;
|
||
|
5) color="\e[95m";;
|
||
|
6) color="\e[96m";;
|
||
|
7) color="\e[31m";;
|
||
|
8) color="\e[32m";;
|
||
|
9) color="\e[33m";;
|
||
|
10) color="\e[34m";;
|
||
|
11) color="\e[35m";;
|
||
|
12) color="\e[36m";;
|
||
|
esac
|
||
|
if [ "$oldcolor" != "$color" ]; then break; fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# LOGO
|
||
|
logo() {
|
||
|
echo -e "$L __ __ __ __ "
|
||
|
echo -e "$L | \/ | \ \ / / "
|
||
|
echo -e "$L | \ / |_ _ \ V / "
|
||
|
echo -e "$L | |\/| | | | | > < "
|
||
|
echo -e "$L | | | | |_| |/ . \ "
|
||
|
echo -e "$L |_| |_|\__,_/_/ \_\ "
|
||
|
echo
|
||
|
echo -e "$L _____ _ __ __ _ _"
|
||
|
echo -e "$L / ____| | / _|/ _| (_)"
|
||
|
echo -e "$L | (___ | |__ _ _| |_| |_| |_ _______ _ __"
|
||
|
echo -e "$L \___ \| '_ \| | | | _| _| | |_ / _ \ '__|"
|
||
|
echo -e "$L ____) | | | | |_| | | | | | | |/ / __/ |"
|
||
|
echo -e "$L |_____/|_| |_|\__,_|_| |_| |_|_/___\___|_|"
|
||
|
echo
|
||
|
}
|
||
|
|
||
|
# YIPEE KAY YAY LOGO
|
||
|
yipee_kay_yay() {
|
||
|
color;C1=$color;color;C2=$color;color;C3=$color
|
||
|
echo -e "$C1 __ _______ _____ ______ ______ $C2 _ __ __ __$C3 __ __ __ __"
|
||
|
echo -e "$C1 \ \ / /_ _| __ \| ____| ____|$C2 | |/ / /\\\\\ \ / /$C3 \ \ / //\\\\\ \ / /"
|
||
|
echo -e "$C1 \ \_/ / | | | |__) | |__ | |__ $C2 | ' / / \\\\\ \_/ / $C3 \ \_/ // \\\\\ \_/ / "
|
||
|
echo -e "$C1 \ / | | | ___/| __| | __| $C2 | < / /\ \\\\\ / $C3 \ // /\ \\\\\ / "
|
||
|
echo -e "$C1 | | _| |_| | | |____| |____ $C2 | . \ / ____ \| | $C3 | |/ ____ \| | "
|
||
|
echo -e "$C1 |_| |_____|_| |______|______|$C2 |_|\_\/_/ \_\_| $C3 |_/_/ \_\_| "
|
||
|
echo -e "$C1 ..motherfucker :D"
|
||
|
echo -e "$normal"
|
||
|
}
|
||
|
|
||
|
# Défini la fonction unshuffle
|
||
|
unshuffle() {
|
||
|
|
||
|
# Compteur à 0 pour la progression
|
||
|
count=0
|
||
|
|
||
|
if [ ! -f .shuffled ]
|
||
|
then
|
||
|
logo
|
||
|
echo "ATTENTION, je n'arrive pas à savoir si le dossier courant est shufflized."
|
||
|
echo "Si vous déshufflizez (du verbe déshufflizer donc) un dossier n'étant pas shufflizé,"
|
||
|
echo "chaque première partie de chaque nom de fichier sera perdue. C'est quand même pas bien cool."
|
||
|
read -n1 -p "Voulez vous quand même le déshufflizer ? Je vous aurais prévenu. (o/N)" ch
|
||
|
if [ "$ch" = "" ]; then ch=N; fi
|
||
|
case $ch in
|
||
|
n|N) exit;;
|
||
|
o|O) echo;echo "Unshufflize it motherfucker !";;
|
||
|
*) echo;echo "MAUVAIS CHOIX"; exit;;
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
rm .shuffled 2> /dev/null
|
||
|
|
||
|
# Save et adaptation variable IFS pour faire un for tenant compte des epsaces
|
||
|
SAVEIFS=$IFS
|
||
|
IFS=$(echo -en "\n\b")
|
||
|
for filename in $(ls *.mp3)
|
||
|
do
|
||
|
newfilename=`echo $filename | cut -d\ -f2-`
|
||
|
color
|
||
|
count=$((count+1))
|
||
|
progress=`echo ${count}*100/${total} | bc`
|
||
|
echo -e "${B}[${progress}%] ${color}$filename ${B}-> ${color}$newfilename${normal}"
|
||
|
mv "$filename" "$newfilename"
|
||
|
done
|
||
|
|
||
|
# Restauration variable IFS
|
||
|
IFS=$SAVEIFS
|
||
|
|
||
|
}
|
||
|
|
||
|
# Défini la fonction shuffle
|
||
|
shuffle() {
|
||
|
|
||
|
# Si fichier .shuffled présent, procéder à la déshufflization (si si, ce mot existe vraiment)
|
||
|
if [ -f .shuffled ]; then unshuffle; fi
|
||
|
|
||
|
# Compteur à 0 pour la progression
|
||
|
count=0
|
||
|
|
||
|
# Save et adaptation variable IFS pour faire un for tenant compte des epsaces
|
||
|
SAVEIFS=$IFS
|
||
|
IFS=$(echo -en "\n\b")
|
||
|
|
||
|
case $type in
|
||
|
shuffle) ls_cmd=$(ls *.mp3 | shuf);;
|
||
|
sort1) ls_cmd=$(ls -t --time=birth);;
|
||
|
esac
|
||
|
|
||
|
for filename in $ls_cmd
|
||
|
do
|
||
|
# Renomme en ajoutant nbr au début du filename
|
||
|
color
|
||
|
count=$((count+1))
|
||
|
progress=`echo ${count}*100/${total} | bc`
|
||
|
echo -e "${B}[${progress}%] $color$filename ${B}-> $color$count $filename$normal"
|
||
|
if [ $total -ge 100 ]
|
||
|
then
|
||
|
if [ $count -lt 10 ]; then mv "$filename" "00$count $filename"; fi
|
||
|
if [ $count -ge 10 ] && [ $count -lt 100 ]; then mv "$filename" "0$count $filename"; fi
|
||
|
if [ $count -ge 100 ]; then mv "$filename" "$count $filename"; fi
|
||
|
fi
|
||
|
|
||
|
if [ $total -lt 100 ]
|
||
|
then
|
||
|
if [ $count -lt 10 ]; then mv "$filename" "0$count $filename"; fi
|
||
|
if [ $count -ge 10 ]; then mv "$filename" "$count $filename"; fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Restauration variable IFS
|
||
|
IFS=$SAVEIFS
|
||
|
|
||
|
# On pose un fichier pour tester sa présence à la prochaine exécution
|
||
|
touch .shuffled
|
||
|
|
||
|
yipee_kay_yay
|
||
|
}
|
||
|
|
||
|
sort1() {
|
||
|
|
||
|
SAVEIFS=$IFS
|
||
|
IFS=$(echo -en "\n\b")
|
||
|
|
||
|
# Réalisé avec l'aide de ChatGPT
|
||
|
counter=1
|
||
|
|
||
|
# Récupérer la liste des fichiers triés par date de création (du plus récent au plus vieux)
|
||
|
files=($(ls -t --time=birth))
|
||
|
|
||
|
# Parcourir les fichiers et les renommer
|
||
|
for file in "${files[@]}"
|
||
|
do
|
||
|
if [[ -f $file ]]; then
|
||
|
# Formatage du numéro avec des zéros à gauche (ex: 001, 002, 010, etc.)
|
||
|
number=$(printf "%03d" $counter)
|
||
|
|
||
|
# Extraire l'extension du fichier (s'il y en a une)
|
||
|
extension="${file##*.}"
|
||
|
|
||
|
# Renommer le fichier en ajoutant le numéro au début
|
||
|
mv "$file" "$number $file.$extension"
|
||
|
|
||
|
counter=$((counter+1))
|
||
|
fi
|
||
|
done
|
||
|
IFS=$SAVEIFS
|
||
|
}
|
||
|
|
||
|
|
||
|
# Vérifie si le dossier contient des mp3 puis menu
|
||
|
clear
|
||
|
logo
|
||
|
if [ $total -eq 0 ]
|
||
|
then
|
||
|
echo -e "\e[91mATTENTION : je ne trouve aucun mp3 dans ce répertoire."
|
||
|
echo -e "Veuillez exécuter le script depuis un répertoire qui en contient$normal"
|
||
|
echo
|
||
|
exit
|
||
|
fi
|
||
|
echo -e "${B}S${L}hufflize it !"
|
||
|
echo -e "S${B}o${L}rt it ! (newer to older)"
|
||
|
echo -e "${B}U${L}nshufflize"
|
||
|
echo -e "${B}E${L}xit"
|
||
|
echo
|
||
|
echo "Notez que si le dossier est déjà shufflizé et que vous choisissez de le"
|
||
|
echo "reshufflizer (ce mot est parfaitement français d'ailleurs), le dossier"
|
||
|
echo "sera tout d'abord unshufflizé avant d'être à nouveau shufflizé."
|
||
|
echo
|
||
|
|
||
|
read -n 1 -p "Choix> " ch
|
||
|
|
||
|
case $ch in
|
||
|
s|S) type=shuffle; shuffle && exit;;
|
||
|
o|O) type=sort1; shuffle && exit;;
|
||
|
u|U) unshuffle && echo -e "\nUnshuflized !\n" && exit;;
|
||
|
q|Q|e|E) echo && exit;;
|
||
|
*) echo -e "\n\e[91mChoix incorrect.\e[0m" && exit;;
|
||
|
esac
|