From 906164a5de34047444efe75b52b014737c111bc4 Mon Sep 17 00:00:00 2001 From: sentriz Date: Fri, 10 Mar 2023 16:59:38 +0000 Subject: [PATCH] feat(scanner): support more cover types like bmp gif, and also files like folder.1.jpg like beets can create sometimes --- scanner/scanner.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/scanner/scanner.go b/scanner/scanner.go index 66c87ff..10d52fd 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -578,21 +578,26 @@ func (s *Scanner) cleanGenres(c *Context) error { return nil } -func isCover(name string) bool { - switch path := strings.ToLower(name); path { - case - "cover.png", "cover.jpg", "cover.jpeg", - "folder.png", "folder.jpg", "folder.jpeg", - "album.png", "album.jpg", "album.jpeg", - "albumart.png", "albumart.jpg", "albumart.jpeg", - "front.png", "front.jpg", "front.jpeg", - "artist.png", "artist.jpg", "artist.jpeg": - return true - default: - return false +//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.