.upc metadata

This commit is contained in:
afkarxyz
2026-04-13 22:39:58 +07:00
parent 66e3f0e572
commit 5a3f819cef
9 changed files with 355 additions and 51 deletions
+23
View File
@@ -31,6 +31,7 @@ type AudioMetadata struct {
DiscNumber int `json:"disc_number"`
Year string `json:"year"`
ISRC string `json:"isrc"`
UPC string `json:"upc"`
}
type RenamePreview struct {
@@ -178,6 +179,10 @@ func readFlacMetadata(filePath string) (*AudioMetadata, error) {
metadata.Year = value
case "ISRC", "TSRC":
metadata.ISRC = value
case "UPC":
assignPreferredUPC(&metadata.UPC, value, true)
case "BARCODE":
assignPreferredUPC(&metadata.UPC, value, false)
}
}
}
@@ -229,6 +234,22 @@ func readMp3Metadata(filePath string) (*AudioMetadata, error) {
metadata.ISRC = textFrame.Text
}
}
if frames := tag.GetFrames("TXXX"); len(frames) > 0 {
for _, frame := range frames {
userTextFrame, ok := frame.(id3v2.UserDefinedTextFrame)
if !ok {
continue
}
matched, preferred := classifyUPCDescription(userTextFrame.Description)
if !matched {
continue
}
assignPreferredUPC(&metadata.UPC, userTextFrame.Value, preferred)
if preferred && strings.TrimSpace(metadata.UPC) != "" {
break
}
}
}
return metadata, nil
}
@@ -315,6 +336,8 @@ func readMetadataWithFFprobe(filePath string) (*AudioMetadata, error) {
}
}
metadata.UPC = firstPreferredFFprobeUPCValue(allTags)
return metadata, nil
}