Files
seanime-docker/seanime-2.9.10/internal/util/parsing.go
2025-09-20 14:08:38 +01:00

60 lines
1.1 KiB
Go

package util
import (
"regexp"
"strings"
)
func ExtractSeasonNumber(title string) (int, string) {
title = strings.ToLower(title)
rgx := regexp.MustCompile(`((?P<a>\d+)(st|nd|rd|th)?\s*(season))|((season)\s*(?P<b>\d+))`)
matches := rgx.FindStringSubmatch(title)
if len(matches) < 1 {
return 0, title
}
m := matches[rgx.SubexpIndex("a")]
if m == "" {
m = matches[rgx.SubexpIndex("b")]
}
if m == "" {
return 0, title
}
ret, ok := StringToInt(m)
if !ok {
return 0, title
}
cTitle := strings.TrimSpace(rgx.ReplaceAllString(title, ""))
return ret, cTitle
}
func ExtractPartNumber(title string) (int, string) {
title = strings.ToLower(title)
rgx := regexp.MustCompile(`((?P<a>\d+)(st|nd|rd|th)?\s*(cour|part))|((cour|part)\s*(?P<b>\d+))`)
matches := rgx.FindStringSubmatch(title)
if len(matches) < 1 {
return 0, title
}
m := matches[rgx.SubexpIndex("a")]
if m == "" {
m = matches[rgx.SubexpIndex("b")]
}
if m == "" {
return 0, title
}
ret, ok := StringToInt(m)
if !ok {
return 0, title
}
cTitle := strings.TrimSpace(rgx.ReplaceAllString(title, ""))
return ret, cTitle
}