#1 Le 18/10/2009, à 19:07
- bugs néo
script de tri et convertion de musique
Bonjour j'ai essayé de faire un script de trie de musique en fonction du genre de l'artiste et de l'album dans différent dossier, sa j'ai réussi, mais quand je veut rajouter un système pour convertir les musiques qui ne sont pas en mp3, en mp3, la sa marche pas quand il doit convertir il commence a convertir puis s'arrête de convertir et continu le script et du coup il me convertir qu'un minuscule morceau des musiques. En plus il provoques des erreurs pour les musiques a déplacer.
Le code est le suivant :
#!/bin/bash
function extract_id3
{
# Recupere infos id3
# Convertion tag id3v1 en id3v2
id3v2 -C "$1" > /dev/null 2>&1
# Recupere infos id3
id3v2 -l "$1" > /tmp/tmp.$$
artist=$(grep TPE1 /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
album=$(grep TALB /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
genre=$(grep TCON /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | awk '{ print $1 }' | sed "s/^ //g" | sed "s/\///g" )
title=$(grep TIT2 /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
track=$(grep TRCK /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
year=$(grep TYER /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
}
function tri
{
dossier1="$1"
dossier2="${2}/${genre}/${artist}/${album}/"
while read fichier1
do
type="${fichier1/${fichier1%.*}/}"
extract_id3 "${fichier1}"
fichier2="${fichier1/${dossier1}/${dossier2}}"
[ ! -d "${fichier2%/*}" ] && mkdir -p "${fichier2%/*}"
if [ "${type}" = ".mp3" ]; then
cp -v "${fichier1}" "${fichier2}"
elif [ "${type}" = ".ogg" -o "${type}" = ".wav" -o "${type}" = ".wma" ]; then
ffmpeg -i "${fichier1}" -b 128k "${fichier2%.*}.mp3"
else
cp -v "${fichier1}" "${fichier2}"
fi
done < <(find "${dossier1}" -type f)
}
tri "/home/bugs/Documents/Musiques" "/home/bugs/Documents/musique"
merci de vôtre aide.
Après divers test, il s'avère que l'erreur est bien provoquer par la ligne :
ffmpeg -i "${fichier1}" -b 128k "${fichier2%.*}.mp3"
, mais je ne sais pourquoi.
Dernière modification par bugs néo (Le 18/10/2009, à 19:10)
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#2 Le 18/10/2009, à 21:59
- Lapogne71
Re : script de tri et convertion de musique
Je pense qu'il faudrait mieux expliquer comment s'utilise ton script, s'il y a des dossiers/fichiers à préparer, etc ....
et quelles sont les erreurs retournées.
Hors ligne
#3 Le 18/10/2009, à 23:31
- twocats
Re : script de tri et convertion de musique
ffmpeg -i "${fichier1}" -b 128k "${fichier2%.*}.mp3"
'-b' c'est le bitrate VIDEO dans la syntaxe de ffmpeg, c'est '-ab' pour l'audio.
Tu peux également simplifier certains passages. Ex.:
de
artist=$(grep TPE1 /tmp/tmp.$$ | awk -F ':' '{ print $2 }' | sed "s/^ //g" | sed "s/\///g" )
vers
artist=$(awk 'BEGIN {FS=": "} /TPE1/ {print $2}' /tmp/tmp.$$)
La réponse est 42
Hors ligne
#4 Le 20/10/2009, à 17:50
- bugs néo
Re : script de tri et convertion de musique
heu pour la partie de récupération des tags ce n'est pas moi qui l'ai fait je l'ai récupéré sur le forum, pour ce qui est du problème voici ce qui ce passe quand il arrive sur une musique a convertir :
FFmpeg version 0.5-svn17737+3:0.svn20090303-1ubuntu6, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --extra-version=svn17737+3:0.svn20090303-1ubuntu6 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --disable-stripping --disable-vhook --enable-libdc1394 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-armvfp --disable-neon --disable-altivec --disable-vis --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 10 2009 23:18:41, gcc: 4.3.3
/bugs/Documents/Musiques/ChrisHorizonremix.ogg: no such file or directory
fopen: me/bugs/Documents/Musiques/keygen/ACME/ACME - Ancient Pledgeintro.xm: id3v2: No such file or directory
sachant que il récupère les musiques du dossier /home/bugs/Documents/Musiques et les met dans /home/bugs/Documents/musique
pour ce qui est d'expliquer le fonctionnement du script alors il commence par lire un nom d'un fichier contenu dans le dossier /home/bugs/Documents/Musiques, récupère l'extension, récupère ses tags, crée les dossier inexistant de destination, puis si c'est du .mp3 copie juste dans le dossier de destination, si c'est du wav de l'ogg ou du wma converti en mp3 en choisissant directement le dossier de destination en fonction du genre de l'artiste et de l'album, et sinon copie juste dans le dossier de destination.
Heu juste le problème est toujour présent même avec -ab a la place de -b en revanche si a la place de
ffmpeg -i "${fichier1}" -ab 128k "${fichier2%.*}.mp3"
je met
xterm -T "conversion de ${ichier1/${fichier1%.*}/}" -e ffmpeg -i "${fichier1}" -ab 128k "${fichier2%.*}.mp3"
sa marche.
Mais ce n'est pas très pratique
Dernière modification par bugs néo (Le 20/10/2009, à 20:44)
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#5 Le 20/10/2009, à 23:38
- twocats
Re : script de tri et convertion de musique
type="${fichier1/${fichier1%.*}/}"
C'est horrible ! Pour obtenir l'extension (sans le '.') fait :
type="${fichier1##*.}"
et vire les points de tout tes tests !
Et essaie :
ffmpeg -i "${fichier1}" -ab 128k "${fichier2%.*}".mp3
La différence est subtile...
La réponse est 42
Hors ligne
#6 Le 21/10/2009, à 12:55
- bugs néo
Re : script de tri et convertion de musique
bon ce que tu ma proposé ne sont que des amélioration mais pas des corrections le problème est toujours la.
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne