78 lines
2.7 KiB
Bash
78 lines
2.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Définition des paramètres par défaut
|
||
|
num_files=100 # Nombre de fichiers à inclure dans le M3U par défaut
|
||
|
directory="$PWD" # Répertoire par défaut à scanner
|
||
|
date_format=$(date +"%Y%m%d_%H%M%S")
|
||
|
|
||
|
# Fonction pour afficher l'utilisation du script
|
||
|
usage() {
|
||
|
echo "Utilisation : $0 [-n <nombre de fichiers>] [-d <répertoire>] [-o <fichier de sortie>]"
|
||
|
echo "Options :"
|
||
|
echo " -n <nombre de fichiers> : Nombre de fichiers à inclure dans le M3U"
|
||
|
echo " -d <répertoire> : Répertoire à scanner (y compris les sous-répertoires)"
|
||
|
echo " -o <fichier de sortie> : Nom du fichier M3U de sortie"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
# Analyse des options de ligne de commande
|
||
|
while getopts "n:d:o:" opt; do
|
||
|
case $opt in
|
||
|
n)
|
||
|
num_files=$OPTARG
|
||
|
;;
|
||
|
d)
|
||
|
directory=$OPTARG
|
||
|
;;
|
||
|
o)
|
||
|
output_file=$OPTARG
|
||
|
;;
|
||
|
\?)
|
||
|
echo "Option non valide : -$OPTARG" >&2
|
||
|
usage
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Vérifier si le fichier user-dirs.dirs existe
|
||
|
if [[ -f ~/.config/user-dirs.dirs ]]; then
|
||
|
# Charger les variables depuis le fichier user-dirs.dirs
|
||
|
source ~/.config/user-dirs.dirs
|
||
|
|
||
|
# Vérifier si la variable XDG_MUSIC_DIR est définie
|
||
|
if [[ -v XDG_MUSIC_DIR ]]; then
|
||
|
# Le répertoire XDG_MUSIC_DIR existe
|
||
|
mkdir -p "$XDG_MUSIC_DIR/playlists"
|
||
|
output_file="$XDG_MUSIC_DIR/playlists/playlist_${date_format}_${num_files}.m3u"
|
||
|
else
|
||
|
# La variable XDG_MUSIC_DIR n'est pas définie
|
||
|
output_file="$HOME/playlist_${date_format}_${num_files}.m3u"
|
||
|
fi
|
||
|
else
|
||
|
# Le fichier user-dirs.dirs n'existe pas
|
||
|
output_file="$HOME/playlist_${date_format}_${num_files}.m3u"
|
||
|
fi
|
||
|
|
||
|
|
||
|
# Vérification si le répertoire existe
|
||
|
if [ ! -d "$directory" ]; then
|
||
|
echo "Le répertoire spécifié n'existe pas : $directory"
|
||
|
usage
|
||
|
fi
|
||
|
|
||
|
# Création d'un fichier temporaire pour stocker la liste des fichiers audio avec leur date de création
|
||
|
temp_file=$(mktemp)
|
||
|
echo "Recherche en cours des fichiers audios dans \"$directory\""
|
||
|
find "$directory" -type f \( -name "*.mp3" -o -name "*.opus" -o -name "*.ogg" -o -name "*.m4a" \) -exec stat --format="%Z %n" {} + > "$temp_file"
|
||
|
|
||
|
echo "Nombre de fichiers audios trouvé dans $directory : "$(wc -l "$temp_file")
|
||
|
|
||
|
# Création de la liste des fichiers audio les plus récents à partir du fichier temporaire
|
||
|
sort -n -r -o "$temp_file" "$temp_file"
|
||
|
head -n "$num_files" "$temp_file" | awk '{print $2}' > "$output_file"
|
||
|
|
||
|
# Suppression du fichier temporaire
|
||
|
rm "$temp_file"
|
||
|
|
||
|
echo "Le fichier M3U a été créé avec les $num_files fichiers audio les plus récents dans le répertoire $directory : $output_file"
|