Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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