fix: preserve embedded metadata details

This commit is contained in:
zarzet
2026-04-13 23:32:17 +07:00
parent 4b213f47d9
commit 4bac38ef2a
5 changed files with 60 additions and 14 deletions
+2 -2
View File
@@ -453,7 +453,7 @@ func apeKeysFromFields(fields map[string]string) map[string]struct{} {
"artist": "ARTIST",
"album": "ALBUM",
"album_artist": "ALBUM ARTIST",
"date": "YEAR",
"date": "DATE",
"genre": "GENRE",
"track_number": "TRACK",
"disc_number": "DISC",
@@ -475,7 +475,7 @@ func apeKeysFromFields(fields map[string]string) map[string]struct{} {
}
}
// Some fields have reader aliases that must also be cleared when the
// canonical key is updated (e.g. "Year" writer ↔ DATE/YEAR reader,
// canonical key is updated (e.g. DATE writer ↔ DATE/YEAR reader,
// DISC ↔ DISCNUMBER, TRACK ↔ TRACKNUMBER, "ALBUM ARTIST" ↔ ALBUMARTIST,
// LABEL ↔ PUBLISHER, LYRICS ↔ UNSYNCEDLYRICS).
if _, present := fields["date"]; present {
+12
View File
@@ -31,6 +31,8 @@ type LibraryScanResult struct {
SampleRate int `json:"sampleRate,omitempty"`
Bitrate int `json:"bitrate,omitempty"` // kbps, for lossy formats (MP3, Opus, Vorbis)
Genre string `json:"genre,omitempty"`
Label string `json:"label,omitempty"`
Copyright string `json:"copyright,omitempty"`
Format string `json:"format,omitempty"`
MetadataFromFilename bool `json:"metadataFromFilename,omitempty"`
}
@@ -368,6 +370,8 @@ func scanFLACFile(filePath string, result *LibraryScanResult, displayNameHint st
result.DiscNumber = metadata.DiscNumber
result.ReleaseDate = metadata.Date
result.Genre = metadata.Genre
result.Label = metadata.Label
result.Copyright = metadata.Copyright
quality, err := GetAudioQuality(filePath)
if err == nil {
@@ -403,6 +407,8 @@ func scanM4AFile(filePath string, result *LibraryScanResult, displayNameHint str
result.ReleaseDate = metadata.Year
}
result.Genre = metadata.Genre
result.Label = metadata.Label
result.Copyright = metadata.Copyright
}
quality, err := GetM4AQuality(filePath)
@@ -435,6 +441,8 @@ func scanMP3File(filePath string, result *LibraryScanResult, displayNameHint str
result.ReleaseDate = metadata.Year
}
result.ISRC = metadata.ISRC
result.Label = metadata.Label
result.Copyright = metadata.Copyright
quality, err := GetMP3Quality(filePath)
if err == nil {
@@ -467,6 +475,8 @@ func scanOggFile(filePath string, result *LibraryScanResult, displayNameHint str
result.DiscNumber = metadata.DiscNumber
result.Genre = metadata.Genre
result.ReleaseDate = metadata.Date
result.Label = metadata.Label
result.Copyright = metadata.Copyright
quality, err := GetOggQuality(filePath)
if err == nil {
@@ -508,6 +518,8 @@ func scanAPEFile(filePath string, result *LibraryScanResult, displayNameHint str
} else {
result.ReleaseDate = metadata.Year
}
result.Label = metadata.Label
result.Copyright = metadata.Copyright
applyDefaultLibraryMetadata(filePath, displayNameHint, result)