From 9ff12cd86ba54b10d7a92c6892f29fc1af66cc1f Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Sat, 10 Aug 2024 17:06:33 +0800 Subject: [PATCH] fix: movie year match --- pkg/metadata/movie.go | 22 ++++++++++++++++------ server/core/torrent.go | 6 +++--- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/pkg/metadata/movie.go b/pkg/metadata/movie.go index 48e5489..0a346a3 100644 --- a/pkg/metadata/movie.go +++ b/pkg/metadata/movie.go @@ -8,8 +8,7 @@ import ( ) type MovieMetadata struct { - NameEn string - NameCN string + Name string Year int Resolution string } @@ -29,11 +28,22 @@ func ParseMovie(name string) *MovieMetadata { panic(fmt.Sprintf("convert %s error: %v", y, err)) } meta.Year = n - } - if yearIndex != -1 { - meta.NameEn = name[:yearIndex] } else { - meta.NameEn = name + yearRe := regexp.MustCompile(`\d{4}`) + yearMatches := yearRe.FindAllString(name, -1) + if len(yearMatches) > 0 { + n, err := strconv.Atoi(yearMatches[0]) + if err != nil { + panic(fmt.Sprintf("convert %s error: %v", yearMatches[0], err)) + } + meta.Year = n + } + } + + if yearIndex != -1 { + meta.Name = name[:yearIndex] + } else { + meta.Name = name } resRe := regexp.MustCompile(`\d{3,4}p`) resMatches := resRe.FindAllString(name, -1) diff --git a/server/core/torrent.go b/server/core/torrent.go index 6f1a8cc..049722d 100644 --- a/server/core/torrent.go +++ b/server/core/torrent.go @@ -50,7 +50,7 @@ func SearchTvSeries(db1 *db.Client, seriesId, seasonNum int, episodes []int, che if checkResolution && meta.Resolution != series.Resolution.String() { continue } - if !utils.IsNameAcceptable(meta.NameEn, series.NameEn) && !utils.IsNameAcceptable(meta.NameCn, series.NameCn) && + if !utils.IsNameAcceptable(meta.NameEn, series.NameEn) && !utils.IsNameAcceptable(meta.NameCn, series.NameCn) && !utils.IsNameAcceptable(meta.NameCn, series.OriginalName) { continue } @@ -104,8 +104,8 @@ func SearchMovie(db1 *db.Client, movieId int, checkResolution bool, checkFileSiz var filtered []torznab.Result for _, r := range res { meta := metadata.ParseMovie(r.Name) - if !utils.IsNameAcceptable(meta.NameEn, movieDetail.NameEn) && !utils.IsNameAcceptable(meta.NameEn, movieDetail.NameCn) && - !utils.IsNameAcceptable(meta.NameEn, movieDetail.OriginalName) { + if !utils.IsNameAcceptable(meta.Name, movieDetail.NameEn) && !utils.IsNameAcceptable(meta.Name, movieDetail.NameCn) && + !utils.IsNameAcceptable(meta.Name, movieDetail.OriginalName) { continue } if checkResolution && meta.Resolution != movieDetail.Resolution.String() {