-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Navidrome currently only reads one date tag: date
(TDRC
in id3, DATE
in FLAC, aka "Recording Date"). There are two more tags:
releasedate
(TDRL
in id3,RELEASEDATE
in FLAC)originaldate
(TDOR
in id3,ORIGINALDATE
in FLAC)
Support for the releasedate
tag would be useful: id3-compliant taggers will put the (re-)release date of the album in releasedate
, which would allow for better distinguishing between different editions of the same album.
Support for the originaldate
tag would also be useful, since the popular auto-tagger MusicBrainz Picard (mis-)uses this tag to store the release date of the "master" edition of an album, and many users would like to see this field used for sorting albums/tracks chronologically, instead of the date
tag (where Picard stores the reissue date from years later).
This topic will follow the efforts to implement them in a useful way.
Update 13 Jan 2023
I think a good way to implement this without any inconvenience to people who don't use these two tags would be as below. This concept does not add any additional complexity to the UI, just a few extra dates to display.
Work in progress is ongoing in this fork: https://github.com/certuna/navidrome
Serverside (Go)
- new server configuration option
Scanner.GroupAlbumEditions = true/false
(defaulttrue
) - new columns
date
&release_date
(date) inmedia_file
table - new columns
date
&release_date
(date) inalbum
table - scanner: rollup
date
andrelease_date
to album level if they're all the same - count number of different releasedates on an album, and store that as
editions
(int) in thealbum
table
Normally, we do like the id3 & Vorbis specs prescribe:
- scanner:
date
tag ->year
(= already implemented) anddate
(new, full date) - scanner:
releasedate
tag ->release_date
(new)
If files are tagged like MusicBrainz Picard does (originaldate
tag has the 'real' album date, the date
tag has the (re-)release date, and there's nothing in the releasedate
tag):
- scanner:
originaldate
->year
&date
(= the date used for sorting/filtering etc) - scanner:
date
tag ->release_date
If GroupAlbumEditions = true
(default)
- no change to current behaviour, i.e. all tracks that happen to have the exact same album artist + album name ("Alice & Bob - Sing Songs Together") are grouped as 1 album, so the 1997 original and 2005 reissue are 1 album - but with visual dividers, see below.
If GroupAlbumEditions = false
:
- create a separate albumID for each
releasedate
(i.e. the 2005 reissue and the 1997 original will be two different albums)
Native API:
- send new fields
date
andreleaseDate
in thesong
API endpoint - send new fields
date
,releaseDate
andeditions
in thealbum
API endpoint
Subsonic API:
- nothing changes
WebUI (JavaScript)
- Song List: no changes needed
- AlbumGrid: no changes needed
- AlbumList: no changes needed
- Year filter in Album List view: no changes needed
- Now Playing: no changes needed
- AlbumDetails: display in the desktop view like: ♫ 1993-1997 · Released 6 September 2005 · 6 Songs · 35:43 · 48.92 MB If
year
=releaseyear
, just display the short form 2005 · 6 Songs · 35:43 · 48.92 MB (= how it's done now). In the mobile view: ♫ 1993-1997 · ○ 2005 · 6 Songs - AlbumSongs: sort album tracklists first by
releaseDate
, thendiscNumber
, thentrackNumber
. Use a divider to divide different release versions of the same album, like "1997 Release" -> (tracklist of the 1997 edition) -> "2005 Release" -> (tracklist of the 2005 reissue) - note: this can only happen whenGroupAlbumEditions = true
, because otherwise, a different release year means a different album. - AlbumGridView for Artist View: display the release year in the second line under the album cover like:
- either 2005, when the release year is not different (= how it's done now)
- or ♫ 1993-1997 · ○ 2005 when they are not equal
- or ♫ 1993-1997 · ( 3 ))) when there are multiple release dates/editions of the album.