feat: support MBIDs in smart playlists

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan
2025-07-01 10:38:36 -04:00
parent f92c807c0f
commit 4096760b67
+43 -37
View File
@@ -10,43 +10,49 @@ import (
) )
var fieldMap = map[string]*mappedField{ var fieldMap = map[string]*mappedField{
"title": {field: "media_file.title"}, "title": {field: "media_file.title"},
"album": {field: "media_file.album"}, "album": {field: "media_file.album"},
"hascoverart": {field: "media_file.has_cover_art"}, "hascoverart": {field: "media_file.has_cover_art"},
"tracknumber": {field: "media_file.track_number"}, "tracknumber": {field: "media_file.track_number"},
"discnumber": {field: "media_file.disc_number"}, "discnumber": {field: "media_file.disc_number"},
"year": {field: "media_file.year"}, "year": {field: "media_file.year"},
"date": {field: "media_file.date", alias: "recordingdate"}, "date": {field: "media_file.date", alias: "recordingdate"},
"originalyear": {field: "media_file.original_year"}, "originalyear": {field: "media_file.original_year"},
"originaldate": {field: "media_file.original_date"}, "originaldate": {field: "media_file.original_date"},
"releaseyear": {field: "media_file.release_year"}, "releaseyear": {field: "media_file.release_year"},
"releasedate": {field: "media_file.release_date"}, "releasedate": {field: "media_file.release_date"},
"size": {field: "media_file.size"}, "size": {field: "media_file.size"},
"compilation": {field: "media_file.compilation"}, "compilation": {field: "media_file.compilation"},
"dateadded": {field: "media_file.created_at"}, "dateadded": {field: "media_file.created_at"},
"datemodified": {field: "media_file.updated_at"}, "datemodified": {field: "media_file.updated_at"},
"discsubtitle": {field: "media_file.disc_subtitle"}, "discsubtitle": {field: "media_file.disc_subtitle"},
"comment": {field: "media_file.comment"}, "comment": {field: "media_file.comment"},
"lyrics": {field: "media_file.lyrics"}, "lyrics": {field: "media_file.lyrics"},
"sorttitle": {field: "media_file.sort_title"}, "sorttitle": {field: "media_file.sort_title"},
"sortalbum": {field: "media_file.sort_album_name"}, "sortalbum": {field: "media_file.sort_album_name"},
"sortartist": {field: "media_file.sort_artist_name"}, "sortartist": {field: "media_file.sort_artist_name"},
"sortalbumartist": {field: "media_file.sort_album_artist_name"}, "sortalbumartist": {field: "media_file.sort_album_artist_name"},
"albumtype": {field: "media_file.mbz_album_type", alias: "releasetype"}, "albumtype": {field: "media_file.mbz_album_type", alias: "releasetype"},
"albumcomment": {field: "media_file.mbz_album_comment"}, "albumcomment": {field: "media_file.mbz_album_comment"},
"catalognumber": {field: "media_file.catalog_num"}, "catalognumber": {field: "media_file.catalog_num"},
"filepath": {field: "media_file.path"}, "filepath": {field: "media_file.path"},
"filetype": {field: "media_file.suffix"}, "filetype": {field: "media_file.suffix"},
"duration": {field: "media_file.duration"}, "duration": {field: "media_file.duration"},
"bitrate": {field: "media_file.bit_rate"}, "bitrate": {field: "media_file.bit_rate"},
"bitdepth": {field: "media_file.bit_depth"}, "bitdepth": {field: "media_file.bit_depth"},
"bpm": {field: "media_file.bpm"}, "bpm": {field: "media_file.bpm"},
"channels": {field: "media_file.channels"}, "channels": {field: "media_file.channels"},
"loved": {field: "COALESCE(annotation.starred, false)"}, "loved": {field: "COALESCE(annotation.starred, false)"},
"dateloved": {field: "annotation.starred_at"}, "dateloved": {field: "annotation.starred_at"},
"lastplayed": {field: "annotation.play_date"}, "lastplayed": {field: "annotation.play_date"},
"playcount": {field: "COALESCE(annotation.play_count, 0)"}, "playcount": {field: "COALESCE(annotation.play_count, 0)"},
"rating": {field: "COALESCE(annotation.rating, 0)"}, "rating": {field: "COALESCE(annotation.rating, 0)"},
"mbz_album_id": {field: "media_file.mbz_album_id"},
"mbz_album_artist_id": {field: "media_file.mbz_album_artist_id"},
"mbz_artist_id": {field: "media_file.mbz_artist_id"},
"mbz_recording_id": {field: "media_file.mbz_recording_id"},
"mbz_release_track_id": {field: "media_file.mbz_release_track_id"},
"mbz_release_group_id": {field: "media_file.mbz_release_group_id"},
// special fields // special fields
"random": {field: "", order: "random()"}, // pseudo-field for random sorting "random": {field: "", order: "random()"}, // pseudo-field for random sorting