Pages : 1
#1 Le 22/12/2016, à 15: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, à 18: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, à 18:08)
Hors ligne
#3 Le 22/12/2016, à 18: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, à 18: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, à 07: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, à 07: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, à 08: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, à 08: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, à 09: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, à 10: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, à 11:08
- pingouinux
Re : Encodage de caratères
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, à 11:29)
Hors ligne
#12 Le 27/12/2016, à 11: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
Hors ligne
#13 Le 27/12/2016, à 11: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, à 11: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, à 11: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, à 13: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...
Hors ligne
#17 Le 27/12/2016, à 16: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, à 17: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
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, à 09:25)
Hors ligne
#20 Le 27/12/2016, à 18: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
Pages : 1