nicfit / eyeD3

eyeD3 is a Python module and command line program for processing ID3 tags. Information about mp3 files (i.e bit rate, sample frequency, play time, etc.) is also provided. The formats supported are ID3v1 (1.0/1.1) and ID3v2 (2.3/2.4).
http://eyed3.nicfit.net/
GNU General Public License v3.0
547 stars 59 forks source link

Set MEDIA year #426

Closed idezigns closed 4 years ago

idezigns commented 4 years ago

eyeD3 sets -Y as release year, however most readers like windows file explorer, serato dj, use and display the media year, not release year. How can we write to this tag?

nicfit commented 4 years ago

What exactly is "media year"? There is no such ID3 frame.

IDv2.3 has TYER and TORY, that is "year" (meaning nothing specific) and "original release year" IDv2.4 has TYER, TDOR, TDRL, and TDRC. That is year (again, not specific), original release date, release date, and recording date, respectively.

So, dates are a mess, especially when converting between versions. There is method to get the "best" date .. as to get something to use. In my opinion, and this function's implementation, the original release date is the must useful, and a TON of apps to even look at this value. Why is it the best? Take for example Black Sabbath's first record... it had a vinyl remix release in 2015 (TDRL), but what was originally released in 1970 (TDOR), and although I don't know the dates it was recorded, suppose I do.. set it in TDRC. If looking at the list of Black Sabbath releases, do I really want the TDRL date used.. no, I want to see list ordered correctly based on TDOR. Most apps do this wrong if they the choose TDRL, and most do. Also TDOR (2.4) and TORY (2.3) mean the same thing, and 2.3 does not even have a concept of TDRC.. unless TYER is used for that, as eyeD3 tries to do.

Anyway, even eyeD3 is trying to do to much mapping of these values.. I really wish I would have implemented a strict mode.. it it might in the future. For example, setReleaseDate() when tag is 2.3, raise NotImplemented (or whatever), rather than stuff it somewhere and potentially lose it want converting.

idezigns commented 4 years ago

So let me see if I can sort this, so under ID3v2.x you have TORY, original year, and TYER YEAR, when eyeD3 saves the year, File Explorer, Serato, Tag Scanner, or any other software uses that year, perhaps, a method to pick the specific tag column to use?

Here is a file with eyeD3 year added, you will see it is not there. (year is suppose to be next to artist and genre (huge blank space) example

nicfit commented 4 years ago

Basically I'm saying there are lots of tag values from which an app (windows file explorer, serato dj, etc.) could pull from to display that single "media year" value and eyeD3 can't predict. It can enable you to stuff whatever date you need in wherever you want/need it. That is my suggestion. If WindowsExplorer only uses TYER (that's a guess, no idea) then make your sure tags have a TYER value. Which value to put there? Your call, I suggest original release year because it's IMO what you want most of the time.

I encountered an app that only used "recording year", which is usually most relevant for live recordings, not albums.

Tremus commented 2 years ago

I had luck in iTunes using this flag --recording-date=XXXX

The way I debugged the problem was to clear all the data on my file, go to iTunes and set the year using their interface. Then simply print the metadata eyeD3 filename.mp3. Try that trick with whatever media player you use.