quodlibet / mutagen

Python module for handling audio metadata
https://mutagen.readthedocs.io
GNU General Public License v2.0
1.54k stars 158 forks source link

easyid3: Add tag mappings from MusicBrainz Picard #136

Open lazka opened 10 years ago

lazka commented 10 years ago

Originally reported by: Christoph Reiter (Bitbucket: lazka, GitHub: lazka)


From freso.dk on March 14, 2013 21:32:39

MusicBrainz Picard supports a heap of tags that aren't currently supported by Mutagen. Importing these mappings from Picard to Mutagen would 1) allow users of Mutagen access to make tags in a file without writing custom mappings themselves, 2) allow Picard and possibly other projects to reduce their code extending Mutagen's features.

Compare e.g. https://github.com/musicbrainz/picard/blob/master/picard/formats/id3.py#L89 https://code.google.com/p/mutagen/source/browse/mutagen/easyid3.py#404

Original issue: http://code.google.com/p/mutagen/issues/detail?id=136


lazka commented 8 years ago

Original comment by Brad Lanam (Bitbucket: bll123, GitHub: bll123):


Here is more documentation that also shows the mapping to Vorbis/FLAC.

http://picard.musicbrainz.org/docs/mappings/

UFID is very important -- that's the musicbrainz recording id (confusingly called musicbrainz_trackid). See also issue #234.

lazka commented 8 years ago

Original comment by kama radski (Bitbucket: kamaradski, GitHub: kamaradski):


In order for one of my newer scripts to use the fanart.tv API, i would need to be able to read: 'MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',

I can imagine there are more APIs\databases using exactly this tag. Any chance of this getting added soonish ?

lazka commented 9 years ago

Original comment by Ben Ockmore (Bitbucket: LordSputnik, GitHub: LordSputnik):


Some mappings have been added now - the following ones need a decision (and COMM needs some thinking about - tricky):

COMM
TIT1
TSSE
WCOP

"SCRIPT"
"LICENSE"
"Artists"
"Work"
"Writer"
lazka commented 9 years ago

Original comment by Ben Ockmore (Bitbucket: LordSputnik, GitHub: LordSputnik):


easyid3.py: added tag mappings from MusicBrainz Picard - see #136

lazka commented 9 years ago

Original comment by Freso Fenderson (Bitbucket: Freso, GitHub: Freso):


Honestly, I'd like Mutagen to support all the ones Picard uses ASAP, both so that we can remove some code (eventually - we will still need to support older Mutagen versions for a while), but also to make it easier for other programs relying on Mutagen to use and manipulate information saved by Picard.

lazka commented 9 years ago

Original comment by Ben Ockmore (Bitbucket: LordSputnik, GitHub: LordSputnik):


Ok, here's an updated list of tags which Picard supports and which aren't in the easyID3 interface:

'TIT1': 'grouping',
'TLAN': 'language',
'TDOR': 'originaldate',
'TSSE': 'encodersettings',
'WCOP': 'license',
'COMM': 'comment',

TXXX frames:

'MusicBrainz Release Track Id': 'musicbrainz_trackid',
'MusicBrainz Work Id': 'musicbrainz_workid',
'MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',
'Acoustid Fingerprint': 'acoustid_fingerprint',
'Acoustid Id': 'acoustid_id',
'SCRIPT': 'script',
'LICENSE': 'license',
'CATALOGNUMBER': 'catalognumber',
'Artists': 'artists',
'Work': 'work',
'Writer': 'writer',

Out of these, we probably want to support at least TLAN, TDOR, COMM, "MusicBrainz Release Track Id", "MusicBrainz Work Id", "MusicBrainz Release Group Id", "Acoustid Fingerprint", "Acoustid Id" and "CATALOGNUMBER", so I'm going to go ahead and add those. Can add more if needed, or wait until they're included as part of the universal metadata format extension.

@Freso any other important ones in your opinion, that should be added straight away?

lazka commented 10 years ago

Original comment by Freso Fenderson (Bitbucket: Freso, GitHub: Freso):


For updated source links: https://github.com/musicbrainz/picard/blob/master/picard/formats/id3.py#L100 https://bitbucket.org/lazka/mutagen/src/default/mutagen/easyid3.py#cl-441

lazka commented 10 years ago

Original comment by Christoph Reiter (Bitbucket: lazka, GitHub: lazka):


From reiter.christoph@gmail.com on March 15, 2013 08:28:05

picard - easyid3 =

{'COMM': 'comment',
 'TCON': 'genre',
 'TDOR': 'originaldate',
 'TDRC': 'date',
 'TIT1': 'grouping',
 'TLAN': 'language',
 'WCOP': 'license',
 'WOAR': 'website'}

Status: Accepted