Existe-t-il un bon outil ID3 en ligne de commande pour OS X?

45

Quelqu'un connaît-il un outil * ID3 en ligne de commande, prenant en charge ID3v2 , que vous pouvez travailler avec Mac OS X avec un effort raisonnable? Il devrait prendre en charge les balises de lecture et d'écriture.

( * Je veux pouvoir l'appeler, par exemple, à partir de scripts Python, de sorte qu'un outil graphique ne suffira pas.)

L' utilitaire id3tool est par ailleurs bon, mais ne supporte pas ID3v2 (et ne joue donc pas très bien avec iTunes). Je devais le compiler à partir des sources, mais c'était assez simple avec un Mac doté d'outils Xcode et de développement (notamment un compilateur C). Quoi qu'il en soit, j'aimerais particulièrement quelque chose avec des options de ligne de commande similaires à id3tool. Voici un exemple de marquage d'un fichier:

id3tool -t "Song Title" -r Artist -a "Album Name" -c 2 track-02.mp3
Jonik
la source
J'ai travaillé sur l'écriture de quelque chose comme ceci ... il y a des bibliothèques disponibles en python et il existe un outil appelé betteraves qui les utilise, donc j'étudie comment il est écrit.
Robert S Ciaccio
2
en plus ... MusicBrainz Picard est écrit en Python et est open source, il y a donc probablement beaucoup à en tirer, à part son code et son utilisation dans la bibliothèque.
Robert S Ciaccio
je suis d'accord, Picard est tout simplement génial
Rohan Monga

Réponses:

48

Si vous avez installé Homebrew (hautement recommandé), vous pouvez simplement faire:

brew install id3lib

Il installe plusieurs outils de ligne de commande id3, y compris id3tag, id3convert, id3cpet id3info. Pas besoin de scripts Python ou Perl; utilisez simplement des commandes de shell régulières.

Usage: id3tag [OPTIONS]... [FILES]...
   -h         --help            Print help and exit
   -V         --version         Print version and exit
   -1         --v1tag           Render only the id3v1 tag (default=off)
   -2         --v2tag           Render only the id3v2 tag (default=off)
   -aSTRING   --artist=STRING   Set the artist information
   -ASTRING   --album=STRING    Set the album title information
   -sSTRING   --song=STRING     Set the title information
   -cSTRING   --comment=STRING  Set the comment information
   -CSTRING   --desc=STRING     Set the comment description
   -ySTRING   --year=STRING     Set the year
   -tSTRING   --track=STRING    Set the track number
   -TSTRING   --total=STRING    Set the total number of tracks
   -gSHORT    --genre=SHORT     Set the genre
   -w         --warning         Turn on warnings (for debugging) (default=off)
   -n         --notice          Turn on notices (for debugging) (default=off)
huyz
la source
Est-ce qu'il prend en charge ID3v2?
Jonik
id3lib fonctionne également dans d'autres distributions telles que macports. En parlant de cela, est-il utile de passer des ports à l’homebrew? J'ai eu tellement mal à passer de fink ...
HiQ CJ
"Erreur: Aucune formule disponible pour mid3v2". Quelqu'un est intéressé à contribuer une formule?
ManuelSchneid3r
3
@Jonik id3lib peut écrire et manipuler à la fois ID3v1 et ID3v2
jchook le
1
Il vient également avec id3v2, qui est la commande "tout faire". Cela vous permettra d'écrire n'importe quelle balise arbitraire dans un fichier.
Edward Falk
14

Une version compatible avec OS X de la bibliothèque id3lib est disponible ici sur GitHub . Il prétend prendre en charge à la fois ID3v1 et ID3v2.

Jeff Swensen
la source
1
Merci! Cela répond pleinement à ma question. Il n’y avait que le paquet source disponible, mais l’installation à partir de celui-ci (sur un Mac avec des outils de développement) était plutôt simple: le tarif Unix standard de configure, makeet make install. id3lib est composé de 4 fichiers binaires distincts: id3info (pour lire les balises), id3tag (pour écrire des balises), id3convert et id3cp. Tout fonctionne bien (et iTunes respecte les balises v2 écrites avec id3tag).
Jonik
@ Jonik qu'avez-vous utilisé pour emballer la bibliothèque? Un peu de python tu as écrit?
Robert S Ciaccio
@calavera: Oui, j'ai des scripts simples qui tentent de déterminer le numéro de piste ou le nom à partir d'un nom de fichier (tel que "Artiste - 03 - Track.mp3") et, le cas échéant, de l'écrire également sur la balise ID3.
Jonik
@Jonk: seriez-vous prêt à partager? Je n'ai pas beaucoup d'expérience avec le python, alors ce serait bien de pouvoir jouer avec et prolonger ...
Robert S Ciaccio
@calavera: Voilà . Utilisation: add-track-names.py *mp3ou add-track-numbers.py *mp3. Les éléments courants (la plupart du code) se trouvent dans un fichier .py séparé. Je ne suis pas vraiment un codeur Python non plus, donc le code est probablement loin d'être "pythonique". :) Mais j'ai (ré) appris beaucoup quand je l'ai écrit, et il est probablement facile de l'étendre si vos besoins en marquage sont similaires aux miens.
Jonik
5

Le module python Mutagen est livré avec l'outil de ligne de commande ID3 appelé mid3v2 replacement pour id3lib's.
De la documentation d'utilisation:

Vous pouvez définir la valeur de toute trame ID3v2 en utilisant "-" puis un ID de trame.
Par exemple:
mid3v2 --TIT3 "Monkey!" fichier.mp3 définirait le cadre "Sous-titre / Description" sur "Monkey!".

kraymer
la source
Mutagen peut être installé avec sudo pip install mutagenaprès l'installation de pip avec sudo easy_install pip.
Lri
vous pouvez sudo easy_install mutagenaussi lancer directement
user1259710
4

Vous voudrez peut-être essayer id3v2 . Il est basé sur id3lib mentionné par Huyz, mais semble être un meilleur outil en ligne de commande que ceux dotés de id3lib. Il supprime facilement les tags ID3V2 à partir de MP3 produits par iTunes, mais pas les fichiers M4A produits par iTunes (comme avec Apple Lossless).

Si vous avez besoin de fichiers M4A, une autre option est ffmpeg . Son outil de ligne de commande ffprobe imprime les métadonnées dans les fichiers et je crois que vous pouvez écrire des métadonnées via ffmpeg. Il fonctionne avec les fichiers MP3 et M4A produits par iTunes. ffprobe peut ne pas afficher toutes les métadonnées; MP4v2 est une autre bonne option.

Les trois programmes s’installent facilement via Homebrew. Pour le moment (janvier 2012), ffmpeg nécessite la compilation de gcc, donc brew install --use-gcc ffmpeg.

Nelson
la source
merci de suggérer mp4v2 pour m4a! fonctionne comme un charme, alors que id3v2 ne le faisait pas :(
Ilias Karim
mp4v2 est le seul à avoir modifié les tags d’une manière compatible avec iTunes (macOS 10.13, iTunes 12.7).
pointeur vide
2

Il y a toujours AppleScript. Je n'en suis pas un grand fan, mais iTunes est scriptable et vous pouvez manipuler toutes les balises mp3 à partir de là. Vous pouvez appeler Applescript à partir de la ligne de commande en utilisant osascript.

Eric
la source
2

Ce site: http://dougscripts.com/itunes/ contient de nombreux bons scripts et outils en ligne de commande superposés sur iTunes pour faire fonctionner votre bibliothèque musicale. Certains d'entre eux peuvent faire ce que vous voulez. Certains des outils sont gratuits et d'autres sont sous licence.

Chris Quenelle
la source
2

Puisque vous êtes à l'aise avec cli et Python, je peux vous recommander des modules Perl sur CPAN. MP3 :: Tag, (ainsi que MP3 :: Tag :: ID3v1 et :: ID3v2 et :: Utils), MP3 :: Info, MP3 :: ID3Lib sont tous disponibles pour la lecture et la manipulation des tags ID3.

Si vous allez sur search.cpan.org et recherchez "MP3", vous trouverez un monde * d'options!

(* Où "monde" est un petit ensemble limité d'options ...)

gWaldo
la source
1
CLI et Python oui, mais les modules Perl sur CPAN ... pas tellement :-) (Si vous pouvez les utiliser en Python aussi, je n'étais pas au courant de cela. Ou vouliez - vous dire par écrit à la place Perl?) Personnellement , je suis arrivé ce déjà résolu , mais peut-être est-ce utile pour les autres.
Jonik
2

Ayant eu divers problèmes de type 'abort trap' avec id3v2, j'ai découvert eyeD3 , un module python existant également en tant qu'outil de ligne de commande. Il semble avoir été mis à jour plus récemment que certains des autres programmes mentionnés ci-dessus.

Bryn
la source