mirror of
https://github.com/navidrome/navidrome.git
synced 2025-06-06 18:33:10 +03:00
fix: use a regex to match year in ffmpeg date field. close #63
This commit is contained in:
parent
029290f304
commit
ab10719d27
@ -201,20 +201,17 @@ var tagYearFormats = []string{
|
|||||||
time.RFC3339,
|
time.RFC3339,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dateRegex = regexp.MustCompile(`^([12]\d\d\d)`)
|
||||||
|
|
||||||
func (m *Metadata) parseYear(tagName string) int {
|
func (m *Metadata) parseYear(tagName string) int {
|
||||||
if v, ok := m.tags[tagName]; ok {
|
if v, ok := m.tags[tagName]; ok {
|
||||||
var y time.Time
|
match := dateRegex.FindStringSubmatch(v)
|
||||||
var err error
|
if len(match) == 0 {
|
||||||
for _, fmt := range tagYearFormats {
|
|
||||||
if y, err = time.Parse(fmt, v); err == nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
log.Error("Error parsing year from ffmpeg date field. Please report this issue", "file", m.filePath, "date", v)
|
log.Error("Error parsing year from ffmpeg date field. Please report this issue", "file", m.filePath, "date", v)
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return y.Year()
|
year, _ := strconv.Atoi(match[1])
|
||||||
|
return year
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -145,10 +145,13 @@ Tracklist:
|
|||||||
Context("parseYear", func() {
|
Context("parseYear", func() {
|
||||||
It("parses the year correctly", func() {
|
It("parses the year correctly", func() {
|
||||||
var examples = map[string]int{
|
var examples = map[string]int{
|
||||||
"1985": 1985,
|
"1985": 1985,
|
||||||
"2002-01": 2002,
|
"2002-01": 2002,
|
||||||
"1969.06": 1969,
|
"1969.06": 1969,
|
||||||
"1980.07.25": 1980,
|
"1980.07.25": 1980,
|
||||||
|
"2004-00-00": 2004,
|
||||||
|
"2013-May-12": 2013,
|
||||||
|
"May 12, 2016": 0,
|
||||||
}
|
}
|
||||||
for tag, expected := range examples {
|
for tag, expected := range examples {
|
||||||
md := &Metadata{tags: map[string]string{"year": tag}}
|
md := &Metadata{tags: map[string]string{"year": tag}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user