Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-06-2016 18:22:02

Lancelot du Lac
Membre
Lieu : France
Distrib. : Jessie | Stretch
Noyau : Linux 3.16.0-4-amd64 | 4.5.0-1-amd64
(G)UI : ZSH / LXDE, Openbox | KDE
Inscription : 22-02-2016

Résolu : Renommer le nom d'un fichier audio d'après son titre ID3

Bonjour à tous !

Je suis en train d'écrire un script qui doit faire les actions suivantes :

- Diviser un fichier FLAC ou WAV en plusieurs fichiers d'après un fichier CUE
- Changer chacun des fichiers créés en MP3
- Renommer chaque fichier d'après le titre du morceau, tiré des tags ID3

Je cale pour la dernière partie, mais peut-être y a-t-il des moyens plus simples que celui que je me propose.

Pour la première partie, j'utilise la commande suivante :

cuebreakpoints *.cue | shnsplit -o flac *.flac


et celle-ci :

cuetag *.cue split-track*.flac



Pour la deuxième :

ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}"

, où $a est le nom du fichier.

Pour la troisième, j'ai essayé plusieurs commandes différentes, avec ffprobe, mp3info et id3.

Les deux dernières me disent qu'il n'y a pas de tag id3 :

id3 -l split-track01.mp3
 


split-track01.mp3: No ID3 tag.
 



mp3info split-track01.mp3
 


split-track01.mp3 does not have an ID3 1.x tag.
 



Pourtant, ffprobe me dit qu'il y en a :

ffprobe split-track01.mp3


ffprobe version 3.0.2-3 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 5.3.1 (Debian 5.3.1-21) 20160528
  configuration: --prefix=/usr --extra-version=3 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librubberband --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-chromaprint --enable-libx264
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mp3 @ 0x264da60] Skipping 0 bytes of junk at 565.
Input #0, mp3, from 'split-track01.mp3':
  Metadata:
    title           : Premiere partie - Dans la creche, en ce temps (Le Recitant)
    album           : Berlioz - L'Enfance du Christ (CD1)
    track           : 01
    TRACKTOTAL      : 12
    artist          : L'Orchestre Symphonique de Montreal, Charles Dutoit
    performer       : L'Orchestre Symphonique de Montreal, Charles Dutoit
    ISRC            : GBBBB9500601
    encoder         : Lavf57.25.100
  Duration: 00:02:07.01, start: 0.025057, bitrate: 235 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 235 kb/s
    Metadata:
      encoder         : Lavc57.24
 



Je pourrais utiliser ffproble, mais il ne semble pas supporter les redirections, ni les pipe. Par exemple, la commande suivante me donne exactement la même sortie que s'il n'y avait pas de pipe.

ffprobe split-track01.mp3 | grep album
 


De même, si je veux envoyer la sortie dans un fichier, le fichier reste vide.

ffprobe split-track01.mp3 > sortie



Impossible donc de l'utiliser dans un script.
Connaissez-vous une commande qui fonctionnerait, ou bien une commande qui renommerait les fichiers en fonction du titre directement à partir du .CUE ?

Merci d'avance !

Dernière modification par Lancelot du Lac (11-06-2016 18:49:15)


Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH

Hors ligne

#2 11-06-2016 18:48:45

Lancelot du Lac
Membre
Lieu : France
Distrib. : Jessie | Stretch
Noyau : Linux 3.16.0-4-amd64 | 4.5.0-1-amd64
(G)UI : ZSH / LXDE, Openbox | KDE
Inscription : 22-02-2016

Re : Résolu : Renommer le nom d'un fichier audio d'après son titre ID3

Bon, je vous ai embêté pour rien, j'ai trouvé une solution avec le script suivant :

#!/bin/bash

tag=`exiftool -json $1 | grep Title`
echo $tag > tag

new=`cut -d '"' -f 4 tag`
echo $new
mv $1 "$new"
exit 0

Dernière modification par Lancelot du Lac (11-06-2016 18:58:33)


Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH

Hors ligne

#3 12-06-2016 03:31:33

martinux_qc
Administrateur
Lieu : Montréal (Québec)
Distrib. : Sid
Noyau : Linux 4.7.0-1-amd64
(G)UI : XFCE 4.12
Inscription : 12-10-2008

Re : Résolu : Renommer le nom d'un fichier audio d'après son titre ID3

Merci d'avoir mis la solution à ton problème. Qui sait, cela pourrait être utile à quelqu'un d'autre.

"L'éducation vise à former des citoyens pas trop tatas et non pas à envoyer le plus de tatas possible à l'université."
Pierre Foglia (Journaliste à la retraite à La Presse)
Note : au Québec, le mot tata a un sens péjoratif qui sert à désigner une personne un peu idiote ou insignifiante. D'où les expressions familières : Espèce de grand, de gros tata! Être, avoir l'air tata.

Hors ligne

#4 12-06-2016 18:47:26

Lancelot du Lac
Membre
Lieu : France
Distrib. : Jessie | Stretch
Noyau : Linux 3.16.0-4-amd64 | 4.5.0-1-amd64
(G)UI : ZSH / LXDE, Openbox | KDE
Inscription : 22-02-2016

Re : Résolu : Renommer le nom d'un fichier audio d'après son titre ID3

Pour ceux que ça intéresse, et qui voudraient éventuellement faire des commentaires (il y a sans doute des points à améliorer) voici mon script :

#!/bin/bash

# Création du dossier de sortie
mkdir Sortie
cd ./Sortie

# Division du fichier flac ou wav

cuebreakpoints ../"$1" | shnsplit -o flac ../"$2"

# création des tags

cuetag ../"$1" split-track*

# transformation en mp3

for a in `ls .`
do
  ffmpeg -i "$a" -ab 320k -map_metadata 0 -id3v2_version 3 "$a.mp3"
  rm "$a"
done

# Changement de nom des fichiers
echo 'Modification des noms de fichiers en cours...'
for a in `ls .`
do
tag=`exiftool -json "$a" | grep Title`
echo $tag > tag

titre=`cut -d '"' -f 4 tag`

let "xyz += 1"
if [ $xyz -le 9 ]
then
tag=`exiftool -json "$a" | grep Track`
echo $tag > tag
chiffre=`cut -d '"' -f 4 tag`
elif [ $xyz -gt 9 ]
then
tag=`exiftool -json "$a" | grep Track`
echo $tag > tag
chiffre=`cut -c 10-11 tag`
fi

mv "$a" "$chiffre - $titre.mp3"
done


# Changement du nom du dossier
a=`ls 01*`
tag=`exiftool -json "$a" | grep Album`
echo $tag > tag

album=`cut -d '"' -f 4 tag`
cd ..
mv ./Sortie "$album"


rm "$album"/tag

ls -b "$album"
exit 0
 


Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH

Hors ligne

#5 12-06-2016 18:48:52

Lancelot du Lac
Membre
Lieu : France
Distrib. : Jessie | Stretch
Noyau : Linux 3.16.0-4-amd64 | 4.5.0-1-amd64
(G)UI : ZSH / LXDE, Openbox | KDE
Inscription : 22-02-2016

Re : Résolu : Renommer le nom d'un fichier audio d'après son titre ID3

J'ai oublié de préciser qu'il ne faisait que le flac pour le moment ; j'ai la flemme de faire les modifs pour choisir entre wav et flac et le ferai lorsque je serai confronté au problème.

Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH

Hors ligne

Pied de page des forums