From ec3db89d1a8046a64df5c078ecef91cde28c5da0 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 23 Oct 2024 22:10:31 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Match=20anime=20correctly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/convids/main.go | 9 ++++----- convids/methods.go | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cmd/convids/main.go b/cmd/convids/main.go index bbe462b..f07e8db 100644 --- a/cmd/convids/main.go +++ b/cmd/convids/main.go @@ -28,10 +28,9 @@ func main() { data, err := convids.NewData(dataPath) cli.HandleErr(err) - fmt.Printf("Data: %+v\n", data) - - for s := range data.AllShows(false) { - fmt.Printf("Show: %+v\n", s) - } + convids.WalkFiles(data, false, false, func(s *convids.Show, path string) error { + fmt.Printf("%s for %+v\n", path, s) + return nil + }) fmt.Println("\nDone!") } diff --git a/convids/methods.go b/convids/methods.go index 2fe95b2..71689a9 100644 --- a/convids/methods.go +++ b/convids/methods.go @@ -11,6 +11,9 @@ import ( var ErrNoName = errors.New("missing name") +var animePattern = `^\[.+\] ` +var animeRegexp = regexp.MustCompile(animePattern) + func (s *Show) Match(path string) (bool, error) { if s.Pattern != "" { return s.matchRegexp(path) @@ -18,13 +21,24 @@ func (s *Show) Match(path string) (bool, error) { if s.Name == "" { return false, ErrNoName } + if s.Anime { + if !animeRegexp.MatchString(path) { + return false, nil + } + path = animeRegexp.ReplaceAllString(path, "") + } return strings.HasPrefix(path, s.Name), nil } func (s *Show) matchRegexp(path string) (f bool, err error) { if s.re == nil { p := s.Pattern - if !strings.HasPrefix(p, "^") { + if s.Anime { + if strings.HasPrefix(p, "^") { + p = strings.TrimPrefix(p, "^") + } + p = animePattern + p + } else if !strings.HasPrefix(p, "^") { p = "^" + p } s.re, err = regexp.Compile(p)