From a43b0d6d8629bd67045dd6ccc5e3e155dd671a09 Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Fri, 19 Jul 2024 21:51:28 +0800 Subject: [PATCH] fix: lowercase --- pkg/utils/utils.go | 25 +++++++++++++++++++++++++ server/scheduler.go | 29 +++++++++-------------------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index be0d588..b6f9f6d 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -1,7 +1,9 @@ package utils import ( + "errors" "regexp" + "strconv" "strings" "unicode" @@ -59,3 +61,26 @@ func IsNameAcceptable(name1, name2 string) bool { name2 = re.ReplaceAllString(strings.ToLower(name2), "") return strutil.Similarity(name1, name2, metrics.NewHamming()) > 0.1 } + +func FindSeasonEpisodeNum(name string) (se int, ep int, err error) { + seRe := regexp.MustCompile(`S\d+`) + epRe := regexp.MustCompile(`E\d+`) + nameUpper := strings.ToUpper(name) + matchEp := epRe.FindAllString(nameUpper, -1) + if len(matchEp) == 0 { + err = errors.New("no episode num") + } + matchSe := seRe.FindAllString(nameUpper, -1) + if len(matchSe) == 0 { + err = errors.New("no season num") + } + if err != nil { + return 0, 0, err + } + + epNum := strings.TrimPrefix(matchEp[0], "E") + epNum1, _ := strconv.Atoi(epNum) + seNum := strings.TrimPrefix(matchSe[0], "S") + seNum1, _ := strconv.Atoi(seNum) + return seNum1, epNum1, nil +} diff --git a/server/scheduler.go b/server/scheduler.go index 764b7dc..52eadb6 100644 --- a/server/scheduler.go +++ b/server/scheduler.go @@ -10,9 +10,7 @@ import ( "polaris/log" "polaris/pkg" "polaris/pkg/storage" - "regexp" - "strconv" - "strings" + "polaris/pkg/utils" "github.com/pkg/errors" ) @@ -150,8 +148,7 @@ func (s *Server) checkDownloadedSeriesFiles(m *ent.Media) error { if err != nil { return errors.Wrapf(err, "read dir %s", m.TargetDir) } - seRe := regexp.MustCompile(`S\d+`) - epRe := regexp.MustCompile(`E\d+`) + for _, in := range files { if !in.IsDir() { //season dir, ignore file continue @@ -164,22 +161,14 @@ func (s *Server) checkDownloadedSeriesFiles(m *ent.Media) error { } for _, ep := range epFiles { log.Infof("found file: %v", ep.Name()) - matchEp := epRe.FindAllString(ep.Name(), -1) - if len(matchEp) == 0 { + seNum, epNum, err := utils.FindSeasonEpisodeNum(ep.Name()) + if err != nil { + log.Errorf("find season episode num error: %v", err) continue } - matchSe := seRe.FindAllString(ep.Name(), -1) - if len(matchSe) == 0 { - continue - } - - epNum := strings.TrimPrefix(matchEp[0], "E") - epNum1, _ := strconv.Atoi(epNum) - seNum := strings.TrimPrefix(matchSe[0], "S") - seNum1, _ := strconv.Atoi(seNum) var dirname = filepath.Join(in.Name(), ep.Name()) - log.Infof("found match, season num %d, episode num %d", seNum1, epNum1) - err := s.db.UpdateEpisodeFile(m.ID, seNum1, epNum1, dirname) + log.Infof("found match, season num %d, episode num %d", seNum, epNum) + err = s.db.UpdateEpisodeFile(m.ID, seNum, epNum, dirname) if err != nil { log.Error("update episode: %v", err) } @@ -212,12 +201,12 @@ func (s *Server) downloadTvSeries() { if lastEpisode.Title != detail.LastEpisodeToAir.Name { s.db.UpdateEpiode(lastEpisode.ID, detail.LastEpisodeToAir.Name, detail.LastEpisodeToAir.Overview) } - if lastEpisode.Status == episode.StatusMissing { + if lastEpisode.Status == episode.StatusMissing { name, err := s.searchAndDownload(series.ID, lastEpisode.SeasonNumber, lastEpisode.EpisodeNumber) if err != nil { log.Infof("cannot find resource to download for %s: %v", lastEpisode.Title, err) } else { - log.Infof("begin download torrent resource: %v",name) + log.Infof("begin download torrent resource: %v", name) } }