diff --git a/internal/domain/release.go b/internal/domain/release.go index 972c3ae..d297728 100644 --- a/internal/domain/release.go +++ b/internal/domain/release.go @@ -238,7 +238,9 @@ func (r *Release) ParseReleaseTagsString(tags string) { if len(t.Other) > 0 { r.Other = append(r.Other, t.Other...) } - + if r.Origin == "" && t.Origin != "" { + r.Origin = t.Origin + } if r.Container == "" && t.Container != "" { r.Container = t.Container } @@ -464,6 +466,10 @@ func (r *Release) MapVars(def *IndexerDefinition, varMap map[string]string) erro r.Tags = tagArr } + if title, err := getStringMapValue(varMap, "title"); err == nil { + r.Title = title + } + // handle releaseTags. Most of them are redundant but some are useful if releaseTags, err := getStringMapValue(varMap, "releaseTags"); err == nil { r.ReleaseTags = releaseTags diff --git a/internal/domain/releasetags.go b/internal/domain/releasetags.go index 5417f60..6b7623c 100644 --- a/internal/domain/releasetags.go +++ b/internal/domain/releasetags.go @@ -128,6 +128,14 @@ func init() { } types["other"] = other + origin := []*TagInfo{ + {tag: "P2P", title: "P2P", regexp: "", re: nil}, + {tag: "Scene", title: "Scene", regexp: "", re: nil}, + {tag: "O-Scene", title: "O-Scene", regexp: "", re: nil}, + {tag: "Internal", title: "Internal", regexp: "", re: nil}, + } + types["origin"] = origin + source := []*TagInfo{ {tag: "Cassette", title: "Cassette", regexp: "", re: nil}, {tag: "CD", title: "Compact Disc", regexp: "cd[\\-\\._ ]?(?:album)?", re: nil}, @@ -268,14 +276,15 @@ func Find(infos ...*TagInfo) FindFunc { type ReleaseTags struct { Audio []string - Channels string - Source string - Resolution string - Container string - Codec string - HDR []string - Other []string Bonus []string + Channels string + Codec string + Container string + HDR []string + Origin string + Other []string + Resolution string + Source string } func ParseReleaseTags(tags []string) ReleaseTags { @@ -309,6 +318,9 @@ func ParseReleaseTags(tags []string) ReleaseTags { case "hdr": releaseTags.HDR = append(releaseTags.HDR, info.Tag()) continue + case "origin": + releaseTags.Origin = info.Tag() + break case "other": releaseTags.Other = append(releaseTags.Other, info.Tag()) continue @@ -360,6 +372,9 @@ func ParseReleaseTagString(tags string) ReleaseTags { case "hdr": releaseTags.HDR = append(releaseTags.HDR, info.Tag()) continue + case "origin": + releaseTags.Origin = info.Tag() + break case "other": releaseTags.Other = append(releaseTags.Other, info.Tag()) continue diff --git a/internal/domain/releasetags_test.go b/internal/domain/releasetags_test.go index 0e72d37..0f08946 100644 --- a/internal/domain/releasetags_test.go +++ b/internal/domain/releasetags_test.go @@ -49,6 +49,9 @@ func TestParseReleaseTagString(t *testing.T) { {name: "movies_8", args: args{tags: "H.264, DVD, Freeleech!"}, want: ReleaseTags{Codec: "H.264", Source: "DVD", Bonus: []string{"Freeleech"}}}, {name: "anime_1", args: args{tags: "Web / MKV / h264 / 1080p / AAC 2.0 / Softsubs (SubsPlease) / Episode 22 / Freeleech"}, want: ReleaseTags{Audio: []string{"AAC"}, Channels: "2.0", Source: "WEB", Resolution: "1080p", Container: "mkv", Codec: "H.264", Bonus: []string{"Freeleech"}}}, {name: "anime_2", args: args{tags: "Web | ISO | h264 | 1080p | AAC 2.0 | Softsubs (SubsPlease) | Episode 22 | Freeleech"}, want: ReleaseTags{Audio: []string{"AAC"}, Channels: "2.0", Source: "WEB", Resolution: "1080p", Container: "iso", Codec: "H.264", Bonus: []string{"Freeleech"}}}, + {name: "tv_1", args: args{tags: "MKV | H.264 | WEB-DL | 1080p | Internal | FastTorrent"}, want: ReleaseTags{Source: "WEB-DL", Codec: "H.264", Resolution: "1080p", Container: "mkv", Origin: "Internal"}}, + {name: "tv_2", args: args{tags: "MKV | H.264 | WEB-DL | 1080p | Scene | FastTorrent"}, want: ReleaseTags{Source: "WEB-DL", Codec: "H.264", Resolution: "1080p", Container: "mkv", Origin: "Scene"}}, + {name: "tv_3", args: args{tags: "MKV | H.264 | WEB-DL | 1080p | P2P | FastTorrent"}, want: ReleaseTags{Source: "WEB-DL", Codec: "H.264", Resolution: "1080p", Container: "mkv", Origin: "P2P"}}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/internal/indexer/definitions/btn.yaml b/internal/indexer/definitions/btn.yaml index 8c2deb3..7ecc4f9 100644 --- a/internal/indexer/definitions/btn.yaml +++ b/internal/indexer/definitions/btn.yaml @@ -70,12 +70,11 @@ parse: - torrentName - test: - "[ Title: S06E07 ] [ Series: The Show ]" - pattern: '^\[ Title: (.*) \] \[ Series: (.*) \]' + pattern: '^\[ Title: .* \] \[ Series: (.*) \]' vars: - title - - name1 - test: - - "[ 2010 ] [ Episode ] [ MKV | x264 | WEB ] [ Uploader: Uploader1 ]" + - "[ 2010 ] [ Episode ] [ MKV | x264 | WEB | P2P ] [ Uploader: Uploader1 ]" pattern: '^(?:\[ (\d+) \] )?\[ (.*) \] \[ (.*) \] \[ Uploader: (.*?) \](?: \[ Pretime: (.*) \])?' vars: - year