From 6bc3a6f49ebd4a73f2e4dc9b4eda720a1b76ee3b Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Tue, 16 Jul 2024 18:58:13 +0800 Subject: [PATCH] fix: naming match --- pkg/utils/utils.go | 11 +++++++++++ server/resources.go | 8 +++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 2cbd884..be0d588 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -2,8 +2,11 @@ package utils import ( "regexp" + "strings" "unicode" + "github.com/adrg/strutil" + "github.com/adrg/strutil/metrics" "golang.org/x/crypto/bcrypt" "golang.org/x/exp/rand" ) @@ -48,3 +51,11 @@ func RandString(n int) string { } return string(b) } + +func IsNameAcceptable(name1, name2 string) bool { + + re := regexp.MustCompile(`[^\p{L}\w\s]`) + name1 = re.ReplaceAllString(strings.ToLower(name1), "") + name2 = re.ReplaceAllString(strings.ToLower(name2), "") + return strutil.Similarity(name1, name2, metrics.NewHamming()) > 0.1 +} diff --git a/server/resources.go b/server/resources.go index 92da944..355e340 100644 --- a/server/resources.go +++ b/server/resources.go @@ -9,12 +9,11 @@ import ( "polaris/log" "polaris/pkg/torznab" "polaris/pkg/transmission" + "polaris/pkg/utils" "sort" "strconv" "strings" - "github.com/adrg/strutil" - "github.com/adrg/strutil/metrics" "github.com/gin-gonic/gin" "github.com/pkg/errors" ) @@ -226,9 +225,8 @@ func (s *Server) SearchAvailableMovies(c *gin.Context) (interface{}, error) { if !strings.Contains(r.Name, strconv.Itoa(year)) && !strings.Contains(r.Name, strconv.Itoa(year+1)) && !strings.Contains(r.Name, strconv.Itoa(year-1)) { continue //not the same movie, if year is not correct } - distCn := strutil.Similarity(strings.ToLower(r.Name), movieDetail.NameCn, metrics.NewHamming()) - distEn := strutil.Similarity(strings.ToLower(r.Name), strings.ToLower(movieDetail.NameEn), metrics.NewHamming()) - if distCn == 0 && distEn == 0 { + + if !utils.IsNameAcceptable(r.Name, movieDetail.NameCn) && !utils.IsNameAcceptable(r.Name, movieDetail.NameEn) { continue //name not match } searchResults = append(searchResults, TorznabSearchResult{