diff --git a/go.mod b/go.mod index a074c5c..29fe3d8 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( github.com/sentriz/gormstore v0.0.0-20220105134332-64e31f7f6981 github.com/stretchr/testify v1.9.0 go.senan.xyz/flagconf v0.1.9 + go.senan.xyz/wrtag v0.0.0-20240912173011-55fc2821f3f9 golang.org/x/net v0.29.0 golang.org/x/sync v0.8.0 gopkg.in/gormigrate.v1 v1.6.0 diff --git a/go.sum b/go.sum index bff7b82..c12af78 100644 --- a/go.sum +++ b/go.sum @@ -141,6 +141,8 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.senan.xyz/flagconf v0.1.9 h1:LBDmqiVFgijfqFXDzH97gPn0qDbg1Dq6/vxsxS/TzC4= go.senan.xyz/flagconf v0.1.9/go.mod h1:NqOFfSwJvNWXOTUabcRZ8mPK9+sJmhStJhqtEt74wNQ= +go.senan.xyz/wrtag v0.0.0-20240912173011-55fc2821f3f9 h1:cTyJaIbwsL8Wclc4RGFU35IOrD7+zqy+/cVcdJ/2OOs= +go.senan.xyz/wrtag v0.0.0-20240912173011-55fc2821f3f9/go.mod h1:bnHbnDhLgt0ckjAzT/YNJmzHFXf0hHI4BVVS4w4V7S8= golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -197,8 +199,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/scanner/scanner.go b/scanner/scanner.go index adbd8d4..77e8711 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -25,6 +25,7 @@ import ( "go.senan.xyz/gonic/db" "go.senan.xyz/gonic/fileutil" "go.senan.xyz/gonic/tags/tagcommon" + "go.senan.xyz/wrtag/coverparse" ) var ( @@ -277,8 +278,8 @@ func (s *Scanner) scanDir(tx *db.DB, st *State, absPath string) error { continue } - if isCover(item.Name()) { - cover = item.Name() + if coverparse.IsCover(item.Name()) { + coverparse.BestBetween(&cover, item.Name()) continue } if s.tagReader.CanRead(absPath) { @@ -671,26 +672,6 @@ func (s *Scanner) cleanGenres(st *State) error { //nolint:unparam return nil } -//nolint:gochecknoglobals -var coverNames = map[string]struct{}{} - -//nolint:gochecknoinits -func init() { - for _, name := range []string{"cover", "folder", "front", "albumart", "album", "artist"} { - for _, ext := range []string{"jpg", "jpeg", "png", "bmp", "gif"} { - coverNames[fmt.Sprintf("%s.%s", name, ext)] = struct{}{} - for i := 0; i < 3; i++ { - coverNames[fmt.Sprintf("%s.%d.%s", name, i, ext)] = struct{}{} // support beets extras - } - } - } -} - -func isCover(name string) bool { - _, ok := coverNames[strings.ToLower(name)] - return ok -} - // decoded converts a string to it's latin equivalent. // it will be used by the model's *UDec fields, and is only set if it // differs from the original. the fields are used for searching.