sandreas / tone

tone is a cross platform audio tagger and metadata editor to dump and modify metadata for a wide variety of formats, including mp3, m4b, flac and more. It has no dependencies and can be downloaded as single binary for Windows, macOS, Linux and other common platforms.
https://pilabor.com
Apache License 2.0
422 stars 17 forks source link

[Enhancement]: TPE3 frame in ID3v2.3 should be used for narrator. #70

Open BrianAker opened 6 days ago

BrianAker commented 6 days ago

The TPE3 frame in ID3v2.3 is intended for “Conductor/Performer Refinement,” but it’s often used in audiobooks or spoken word media to denote the narrator. Many media players and library management tools recognize this frame and display it appropriately. • Example: TPE3 = “Narrated by John Doe”

When trying to do the following with a file which uses ID3v2.3 the following fails silently: tone tag --meta-narrator

The fix is just to map it to TPE3 for ID3v2.3.

Additionally, whenever tone fails to update a file a return value should be given so that a script can handle the failure. POSIX systems and windows allow to you use the return values between 1-254 for whatever you want ( BSD has sysexits.h, but it is not a hard rule at all ). Being able to programmatically errors would be very useful, at the moment you have to update and then open the file again to see if the changes you requested succeeded. I am happy to write this up in more detail if you want it as its own feature request.

sandreas commented 5 days ago

@BrianAker Thank you for taking the time. Accoring to MP3Tag Mapping TPE3 is used for Conductor, not Narrator.

Narrator has no mapping for id3v2. Since I'm following these pretty accurately with minor exceptions, I'd recommend to use --meta-conductor="Authors Name" to fix this for your use case. If you don't want to specify the narrator twice, you can also use --meta-conductor="Authors Name" --meta-equate="conductor,narrator" to overcome the problem.

However, since there is a possibility to use an extended field in id3v2 (TXXX:NARRATOR), I would implement this in addition to the conductor mapping to have at least any narrator mapping for id3v2.

Targeted for next release.

sandreas commented 5 days ago

Waiting for response here: https://github.com/Zeugma440/atldotnet/issues/289

BrianAker commented 3 days ago

Thanks!