From 729e1d4dccf24ae69b1a466046af1bd846c8c92a Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Mon, 4 Nov 2024 15:50:34 -0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Skip=20downloading=20files=20in=20c?= =?UTF-8?q?onvids?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- convids/logic.go | 28 ++++++++++++++++++++++------ convids/models.go | 1 + 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/convids/logic.go b/convids/logic.go index 2909c1c..3dbc7b6 100644 --- a/convids/logic.go +++ b/convids/logic.go @@ -1,6 +1,7 @@ package convids import ( + "errors" "fmt" "io" "os" @@ -48,6 +49,7 @@ func WalkFiles(d *Data, stopOnError bool, gp GroupPrinter, cb ShowWalker) (err e } for s := range d.AllShows(gp) { var found bool + start: for _, file := range files { if file.IsDir() { continue @@ -59,13 +61,27 @@ func WalkFiles(d *Data, stopOnError bool, gp GroupPrinter, cb ShowWalker) (err e if err != nil { return } - if found { - err = cb(s, fp.Join(d.Config.Source, file.Name())) - if err != nil && stopOnError { - return - } - break + if !found { + continue } + + path := fp.Join(d.Config.Source, file.Name()) + for _, ext := range d.Config.Skip { + if !strings.HasPrefix(ext, ".") { + ext = "." + ext + } + skipper := path + ext + _, err := os.Stat(skipper) + if !errors.Is(err, os.ErrNotExist) { + break start + } + } + + err = cb(s, path) + if err != nil && stopOnError { + return + } + break } } return nil diff --git a/convids/models.go b/convids/models.go index 55d0e64..b7ad695 100644 --- a/convids/models.go +++ b/convids/models.go @@ -11,6 +11,7 @@ type Config struct { Source string Extensions []string Groups []string + Skip []string extRe *regexp.Regexp }