#!/bin/bash # This software is governed by the CeCILL license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL # license as circulated by CEA, CNRS and INRIA at the following URL # "http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt". # # Ce logiciel est régi par la licence CeCILL soumise au droit français et # respectant les principes de diffusion des logiciels libres. Vous pouvez # utiliser, modifier et/ou redistribuer ce programme sous les conditions # de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA # à l'adresse "http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt". # # Copyright Cyril Ravat, (2007-2009) # Website : http://www.cyril-ravat.fr/scripts/mp3cover.php # Help : mp3cover -h # Taille maximale des images redimensionnées (en pixels) IMSIZE=250 if [ "$1" == "-h" ]; then echo -e "Usage : $(basename "$0") [\033[1mrépertoire\033[0m] [\033[1mrépertoire\033[0m ...]" echo " $(basename "$0") -h" echo echo "Place un fichier cover.jpg comme étiquette id3 dans les fichiers mp3 contenus" echo -e "dans les \033[1mrépertoire\033[0ms donnés en argument, ou à défaut dans le répertoire courant." echo echo "Le comportement est récursif. Les étiquettes id3 ne sont modifiées que si le" echo "fichier cover.jpg existe, après redimensionnement à la taille de ${IMSIZE}x$IMSIZE pixels." echo "Les paquets imagemagick (pour la retouche d'image) et eyed3 (pour la" echo "modification des données id3) doivent être installés." echo exit 0 fi # Vérification des utilitaires convert et eyeD3 if [ -z `which convert` ]; then echo -e "L'utilitaire \033[1mconvert\033[0m n'existe pas." echo -e "Il faut installer le paquet \033[1mimagemagick\033[0m." exit 1 fi if [ -z `which eyeD3` ]; then echo -e "L'utilitaire \033[1meyeD3\033[0m n'existe pas." echo -e "Il faut installer le paquet \033[1meyed3\033[0m." exit 1 fi # Fonction d'encodage function ajoute () { REP="$1" convert -resize "${IMSIZE}x$IMSIZE>" -quality 85 "$REP/cover.jpg" "$REP/covertmp.jpg" for FICHIER in "$REP"/*.mp3; do touch -r "$FICHIER" "$REP/tmp" eyeD3 --remove-images "$FICHIER" > /dev/null 2> /dev/null eyeD3 --add-image="$REP/covertmp.jpg":FRONT_COVER "$FICHIER" > /dev/null 2> /dev/null touch -r "$REP/tmp" "$FICHIER" echo -n "*" done rm "$REP/covertmp.jpg" "$REP/tmp" } # Récursivité function recherche() { REP="$1" [ -d "$REP" ] || return echo -n "Répertoire $(basename "$REP") " # Ajout de l'image [ -e "$REP/cover.jpg" ] && ajoute "$REP" echo # Gestion des répertoires : comportement récursif for NREP in "$REP"/*; do [ -d "$NREP" ] && recherche "$NREP" done } # Corps : description de la liste des répertoires à traiter for i in `seq $#`; do recherche "${!i%/}" done [ $# -eq 0 ] && recherche `pwd`