fix: name matching

This commit is contained in:
Simon Ding
2024-08-03 15:03:47 +08:00
parent 241e30152b
commit ffa5c37c4c
4 changed files with 26 additions and 38 deletions

View File

@@ -29,20 +29,11 @@ func ParseTv(name string) *Metadata {
func parseEnglishName(name string) *Metadata {
re := regexp.MustCompile(`[^\p{L}\w\s]`)
name = re.ReplaceAllString(strings.ToLower(name), " ")
splits := strings.Split(strings.TrimSpace(name), " ")
var newSplits []string
for _, p := range splits {
p = strings.TrimSpace(p)
if p == "" {
continue
}
newSplits = append(newSplits, p)
}
newSplits := strings.Split(strings.TrimSpace(name), " ")
seasonRe := regexp.MustCompile(`^s\d{1,2}`)
resRe := regexp.MustCompile(`^\d{3,4}p`)
episodeRe := regexp.MustCompile(`e\d{1,2}`)
episodeRe := regexp.MustCompile(`e\d{1,3}`)
var seasonIndex = -1
var episodeIndex = -1
@@ -58,7 +49,7 @@ func parseEnglishName(name string) *Metadata {
} else if resRe.MatchString(p) {
resIndex = i
}
if episodeRe.MatchString(p) {
if i >= seasonIndex && episodeRe.MatchString(p) {
episodeIndex = i
}
}
@@ -137,7 +128,7 @@ func parseEnglishName(name string) *Metadata {
//resolution exists
meta.Resolution = newSplits[resIndex]
}
if meta.Episode == -1 || strings.Contains(name, "complete") {
if meta.Episode == -1 {
meta.Episode = -1
meta.IsSeasonPack = true
}

View File

@@ -101,8 +101,8 @@ func Test_ParseTV10(t *testing.T) {
m := ParseTv(s1)
log.Infof("results: %+v", m)
assert.Equal(t, 2, m.Season)
assert.Equal(t, 01, m.Episode)
assert.Equal(t, false, m.IsSeasonPack)
//assert.Equal(t, 01, m.Episode)
assert.Equal(t, true, m.IsSeasonPack)
assert.Equal(t, "720p", m.Resolution)
}
@@ -127,13 +127,13 @@ func Test_ParseTV12(t *testing.T) {
}
func Test_ParseTV13(t *testing.T) {
s1 := ""
s1 := "House of Dragon 2024 1080p S02E08 Leaked HQCAM NOT COMPLETE English Audio x264 ESub BOTHD"
m := ParseTv(s1)
log.Infof("results: %+v", m)
assert.Equal(t, 2, m.Season)
assert.Equal(t, 01, m.Episode)
assert.Equal(t, 8, m.Episode)
assert.Equal(t, false, m.IsSeasonPack)
assert.Equal(t, "720p", m.Resolution)
assert.Equal(t, "1080p", m.Resolution)
}
func Test_ParseTV14(t *testing.T) {