aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-03-04 17:59:49 +0100
committerMartin Polden <mpolden@mpolden.no>2018-03-04 18:07:28 +0100
commitbe483a3681ec0bfb7237b99f53b3bdd9dcde3eb4 (patch)
tree3c61ca77943035c25d5ab752c0995eeb0edf20e1
parent8bf0d319493f3b1819279fb1ec7c30347f8ecce6 (diff)
Support season-only tags
-rw-r--r--parser/parser.go36
-rw-r--r--parser/parser_test.go14
2 files changed, 32 insertions, 18 deletions
diff --git a/parser/parser.go b/parser/parser.go
index f9bb2ae..06cf0b9 100644
--- a/parser/parser.go
+++ b/parser/parser.go
@@ -8,11 +8,12 @@ import (
var (
movieExp = regexp.MustCompile(`(.*?)\.(\d{4})`)
- episodeExp = regexp.MustCompile("(.*)\\.(?:(" +
- "(?:S(\\d{2}))?E(\\d{2})" + // S01E04, E04
- "|(\\d{1,2})x(\\d{2})" + // 1x04, 01x04
- "|Part\\.?(\\d{1,2})" + // Part4, Part11, Part.4, Part.11
- "))")
+ episodeExp = regexp.MustCompile(`(.*)\.(?:(` +
+ `(?:S(\d{2}))(?:E(\d{2}))?` + // S01, S01E04
+ `|(?:E(\d{2}))` + // E04
+ `|(\d{1,2})x(\d{2})` + // 1x04, 01x04
+ `|Part\.?(\d{1,2})` + // Part4, Part11, Part.4, Part.11
+ `))`)
)
type Parser func(s string) (Media, error)
@@ -67,21 +68,20 @@ func Show(s string) (Media, error) {
return Media{}, fmt.Errorf("failed to parse: %s", s)
}
name := m[0][1]
- var season string
- var episode string
- if m[0][4] != "" {
- if m[0][3] != "" {
- season = m[0][3]
- } else {
- season = "1"
+ season := "1"
+ episode := "0"
+ if m[0][3] != "" { // S01, S01E04
+ season = m[0][3]
+ if m[0][4] != "" {
+ episode = m[0][4]
}
- episode = m[0][4]
- } else if m[0][5] != "" && m[0][6] != "" {
- season = m[0][5]
- episode = m[0][6]
- } else if m[0][7] != "" {
- season = "1"
+ } else if m[0][5] != "" { // E04
+ episode = m[0][5]
+ } else if m[0][6] != "" && m[0][7] != "" { // 1x04, 01x04
+ season = m[0][6]
episode = m[0][7]
+ } else if m[0][8] != "" { // Part4, Part11, Part.4, Part.11
+ episode = m[0][8]
}
ss, err := strconv.Atoi(season)
if err != nil {
diff --git a/parser/parser_test.go b/parser/parser_test.go
index 3a98928..70b80d1 100644
--- a/parser/parser_test.go
+++ b/parser/parser_test.go
@@ -126,6 +126,20 @@ func TestShow(t *testing.T) {
Season: 1,
Episode: 4,
}},
+ {"Adventure.Time.With.Finn.And.Jake.S01.SUBPACK.720p.BluRay.x264-DEiMOS",
+ Media{
+ Release: "Adventure.Time.With.Finn.And.Jake.S01.SUBPACK.720p.BluRay.x264-DEiMOS",
+ Name: "Adventure.Time.With.Finn.And.Jake",
+ Season: 1,
+ Episode: 0,
+ }},
+ {"Orange.Is.The.New.Black.S02.NORDiC.SUBPACK.BluRay-REQ",
+ Media{
+ Release: "Orange.Is.The.New.Black.S02.NORDiC.SUBPACK.BluRay-REQ",
+ Name: "Orange.Is.The.New.Black",
+ Season: 2,
+ Episode: 0,
+ }},
}
for _, tt := range tests {
got, err := Show(tt.in)