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 22/12/2016, à 16:45

KubunTof

Encodage de caratères

Bonjour,

Encore une fois des soucis avec les accents !

Dans un Terminal je tape la commande suivante :
id3info *.*

Elle extrait les informations contenues dans les TagsMP3 des fichiers, et le Titre de la chanson s'affiche correctement avec les accents, bien !

Mais avec cette commande, qui fait un peu la même chose, mais mieux :
hachoir-metadata *.*

Les accents s'affichent mal : le "é" devient "é", etc.

Je réutilise le résultat de ces commandes dans une appli Java pour Androïd, et après plusieurs tentatives d'encodage du flux d'entrée, rien ne fonctionne !

Je suis sous Ubuntu 16.04 et mes "locales" sont comme ceci :

utof@mTof:~$ locale
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

Pourrais-je régler le problème au niveau d'Ubuntu et/ou de "hachoir-metadata" ?

Merci pour votre aide.

Hors ligne

#2 Le 22/12/2016, à 19:01

pingouinux

Re : Encodage de caratères

Bonsoir,
Essaye ceci

hachoir-metadata *.* | iconv -t iso8859-1

Ajouté :
Si ça ne marche pas, donne le retour de

id3info *.* | file
hachoir-metadata *.* | file

Dernière modification par pingouinux (Le 22/12/2016, à 19:08)

Hors ligne

#3 Le 22/12/2016, à 19:05

LeoMajor

Re : Encodage de caratères

bonsoir,

echo "é" | iconv  -f UTF8 -t ISO-8859-1
é
echo "é" | iconv  -f ISO-8859-1 -t UTF8
é

grillé

Hors ligne

#4 Le 23/12/2016, à 19:02

KubunTof

Re : Encodage de caratères

Bonsoir,
Merci beaucoup ça marche nickel et ça me reservira sûrement...

Hors ligne

#5 Le 27/12/2016, à 08:39

KubunTof

Re : Encodage de caratères

Re,

Je me suis réjouis un peu vite, en fait la commande :

hachoir-metadata /dossier/*.* | iconv -t iso8859-1

marche bien pour les fichiers mp3, mais pas pour les flacs ! Les accents se transforment en losange avec un "?" dedans ! En enlevant le "| iconv" les accents des flacs redeviennent corrects... Le souci c'est que je ne sais pas avant cette commande si le dossier va contenir des flacs, des mp3, ...

Donc l'idéal serait d'exécuter le "| conv" uniquement si l'extension du fichier est "flac" ?
Si vous avez une idée je suis preneur ?

Merci pour votre aide.

Hors ligne

#6 Le 27/12/2016, à 08:48

pingouinux

Re : Encodage de caratères

Comme je te l'ai demandé en #2, dans les différents cas, donne le retour de

hachoir-metadata fichier | file

Hors ligne

#7 Le 27/12/2016, à 09:53

KubunTof

Re : Encodage de caratères

Voici les résultats sur un fichier flac :

1) hachoir-metadata 03.flac

Metadata:
- Title: La ballade des gens qui sont nés quelque part
- Artist: Georges Brassens
- Album: Fernande
- Duration: 3 min 28 sec 133 ms
- Music genre: Chanson
- Track number: 3
- Track total: 11
- Channel: stereo
- Sample rate: 44.1 kHz
- Bits/sample: 16 bits
- Creation date: 1972
- Producer: reference libFLAC 1.1.2 20050205
- MIME type: audio/x-flac
- Endianness: Big endian

2) hachoir-metadata 03.flac | iconv -t iso8859-1
Metadata:
- Title: La ballade des gens qui sont ns quelque part
- Artist: Georges Brassens
- Album: Fernande
- Duration: 3 min 28 sec 133 ms
- Music genre: Chanson
- Track number: 3
- Track total: 11
- Channel: stereo
- Sample rate: 44.1 kHz
- Bits/sample: 16 bits
- Creation date: 1972
- Producer: reference libFLAC 1.1.2 20050205
- MIME type: audio/x-flac
- Endianness: Big endian

Si dans la commande il y avait moyen de faire le pipe sous condition de l'extension du fichier ça serait top ?

Hors ligne

#8 Le 27/12/2016, à 09:57

KubunTof

Re : Encodage de caratères

Pour la 2ème commande, le titre de la Chanson : "La ballade des gens qui sont nés quelque part", s'affiche avec un losange contenant un "?" à la place du "é". Mais quand j'envoie le message sur le Forum, ce caractère est supprimé.

Hors ligne

#9 Le 27/12/2016, à 10:08

pingouinux

Re : Encodage de caratères

Tu n'as pas donné le résultat de la commande que je t'ai demandée en #6.

Hors ligne

#10 Le 27/12/2016, à 11:15

KubunTof

Re : Encodage de caratères

Exact, voilà les résultats de ,

1) hachoir-metadata fichier | file :

Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
[err!] Unable to open file fichier: [Errno 2] Aucun fichier ou dossier de ce type: 'fichier'

Alors, j'ai remplacé "fichier" par un nom de fichier existant, et ça donne :

2) hachoir-metadata 03.flac | file

Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr

J'espère que ça te parle, moi pas trop !

Hors ligne

#11 Le 27/12/2016, à 12:08

pingouinux

Re : Encodage de caratères

KubunTof a écrit :

2) hachoir-metadata 03.flac | file

Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]

Là je ne comprends pas.

hachoir-metadata 03.flac

écrit-il bien sur la sortie standard (affichage à l'écran) ?

Édité :
J'ai fait une erreur. La bonne commande est

hachoir-metadata 03.flac | file -

Dernière modification par pingouinux (Le 27/12/2016, à 12:29)

Hors ligne

#12 Le 27/12/2016, à 12:13

KubunTof

Re : Encodage de caratères

Oui.

En fait ma question se résume maintenant à :

Est-il possible dans la commande :

hachoir-metadata /dossier/*.* | iconv -t iso8859-1

de n'effectuer le "iconv" que si l'extension du fichier traité est différente de "flac" ?

Ca m'arrangerait drôlement bien wink

Hors ligne

#13 Le 27/12/2016, à 12:16

pingouinux

Re : Encodage de caratères

Je me suis trompé dans la commande. C'est

hachoir-metadata 03.flac | file -

Au vu du résultat pour les deux types de fichiers, je devrais te tirer d'affaire.

Hors ligne

#14 Le 27/12/2016, à 12:27

pingouinux

Re : Encodage de caratères

Tu peux déjà essayer ceci

for i in *.*
do 
   if [[ $i =~ .flac ]] 
   then  
      hachoir-metadata "$i"
   else
      hachoir-metadata "$i" | iconv -t iso8859-1
   fi
done

Hors ligne

#15 Le 27/12/2016, à 12:51

KubunTof

Re : Encodage de caratères

Ah, ok, je comprends mieux, voici donc le résultat de la commande "hachoir-metadata 03.flac | file -" :

/dev/stdin: UTF-8 Unicode text

Sinon j'ai intégré le p'tit bout de script dans un fichier bash, et cette fois je crois bien que j'ai tous les accents ! Mais bon avec 3500 Titres je vais peut-être encore avoir des surprises...

En attendant, merci beaucoup ça marche très bien.

Hors ligne

#16 Le 27/12/2016, à 14:23

KubunTof

Re : Encodage de caratères

Décidément !

Encore un p'tit souci : le script que j'exécute, et surtout, dont je récupère le résultat, ne contient plus en 1ère colonne le nom du fichier ! Alors que hachoir-metadata le renvoie bien. Pourrait-on le rajouter, ou éviter qu'il ne disparaisse d'un coup de "magic script" ?

Voici le bout de script :
'tag_mp3')
        for i in $2/*.*
        do
               if [[ $i =~ .flac ]]
               then 
                      hachoir-metadata "$i"
               else
                      hachoir-metadata "$i" | iconv -t iso8859-1
               fi
        done   
    ;;
que j'appelle comme ça : hr tag_mp3 /dossier

J'y suis presque... wink

Hors ligne

#17 Le 27/12/2016, à 17:48

pingouinux

Re : Encodage de caratères

Soit le nom du fichier est écrit sur stderr (ce qui m'étonnerait), soit hachoir-metadata ne précise pas le nom du fichier lorsqu'il n'y a qu'un seul argument.
Quels sont les retours (entre balises-codes) de ces commandes :

hachoir-metadata fichier1
hachoir-metadata fichier1 fichier2

fichier1 et fichier2 sont évidemment à remplacer par des noms de fichiers.

Hors ligne

#18 Le 27/12/2016, à 18:26

KubunTof

Re : Encodage de caratères

Bonsoir,

Ouais c'est bien ça que j'ai réalisé : quand hachoir-metadata reçoit un nom de fichier précis, il ne réécrit pas le nom du fichier avant les Metadatas ! Et bien sûr, j'en ai besoin !!
Pour un fichier, voici le résultat de hachoir-metadata (là c'est sans le conv) :

Metadata:
- Title: Je T'ai Manqué
- Author: Alain Bashung
- Album: Bleu Pétrole
- Duration: 3 min 39 sec 861 ms
- Track number: 1
- Channel: Joint stereo
- Sample rate: 44.1 kHz
- Bits/sample: 16 bits
- Compression rate: 8.8x
- Creation date: 2008
- Bit rate: 160.0 Kbit/sec (Variable bit rate)
- Format version: MPEG version 1 layer III
- MIME type: audio/mpeg
- Endianness: Big endian

Alors qu'avec /*.*, ça donne :

/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: Metadata:
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Title: Je T'ai Manqué
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Author: Alain Bashung
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Album: Bleu Pétrole
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Duration: 3 min 39 sec 861 ms
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Track number: 1
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Channel: Joint stereo
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Sample rate: 44.1 kHz
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Bits/sample: 16 bits
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Compression rate: 8.8x
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Creation date: 2008
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Bit rate: 160.0 Kbit/sec (Variable bit rate)
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Format version: MPEG version 1 layer III
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - MIME type: audio/mpeg
/media/ssd500/TheWall/Musique/AlainBashung/BleuPetrole/01.mp3: - Endianness: Big endian

Alors j'ai bricolé un truc comme ça :

'tag_mp3')
		for i in $2/*.*
		do 
   			if [[ $i =~ .flac ]] 
   			then  
      				echo "$i `hachoir-metadata "$i"`"
   			else
      				echo "$i `hachoir-metadata "$i" | iconv -t iso8859-1`"
   			fi
		done	
	;;

Qui me renvoie ceci :

/media/ssd500/TheWall/Musique/GeorgesBrassens/Fernande/01.flac Metadata:
- Title: Fernande
- Artist: Georges Brassens
- Album: Fernande
- Duration: 3 min 42 sec 573 ms
- Music genre: Chanson
- Track number: 1
- Track total: 11
- Channel: stereo
- Sample rate: 44.1 kHz
- Bits/sample: 16 bits
- Creation date: 1972
- Producer: reference libFLAC 1.1.2 20050205
- MIME type: audio/x-flac
- Endianness: Big endian

Mais je suis passé de 3min. à 12min. pour le même traitement...
Je suis vraiment pas un pro du bash, peut-être y'a t'il moyen de faire plus rapide ?
En attendant je m'en contenterais car cette fois j'ai bien tous les caractères wink
Merci de ton aide, et si t'as une idée pour booster le truc, je suis preneur.
Mais bon le gros du problème est résolu.

Dernière modification par KubunTof (Le 28/12/2016, à 10:25)

Hors ligne

#19 Le 27/12/2016, à 18:31

cqfd93

Re : Encodage de caratères

Pour les scripts et retours divers et variés → balises code ! Merci de modifier les messages déjà postés !

Ajout des balises à un texte existant :

  • sélectionner le texte

  • cliquer sur le <> de l'éditeur de message
    1471986854.png


cqfd93

Hors ligne

#20 Le 27/12/2016, à 19:13

pingouinux

Re : Encodage de caratères

Tu peux essayer ceci

do
   echo "$i"
   if [[ $i =~ .flac ]]
   then
      hachoir-metadata "$i" 
   else
      hachoir-metadata "$i" | iconv -t iso8859-1
   fi
done

ou cela

do
   if [[ $i =~ .flac ]]
   then
      hachoir-metadata "$i" 
   else
      hachoir-metadata "$i" | iconv -t iso8859-1
   fi | sed "s/^/$i: /"

Hors ligne