fix(naming): strip unsubstituted Sonarr tokens ({TvdbId}/{imdb-}) from titles
These tokens survived the provider-tag regex ([\w]+ doesn't match braces),
polluting parsed titles (e.g. 'A Girl & Her Guard Dog [tvdb-{TvdbId}]') so
they could not score-match. Broaden the regex to drop {...} and empty tokens.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package naming
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestStripInferProviderTags_HandlesBrokenSonarrTokens(t *testing.T) {
|
||||
cases := []struct {
|
||||
in string
|
||||
want string
|
||||
}{
|
||||
{"A Girl & Her Guard Dog [tvdb-{TvdbId}]", "A Girl & Her Guard Dog"},
|
||||
{"A Raven in the Harem [tvdb-{TvdbId}]", "A Raven in the Harem"},
|
||||
{"A Salad Bowl of Eccentrics {imdb-}", "A Salad Bowl of Eccentrics"},
|
||||
{"Coronation Street {imdb-}", "Coronation Street"},
|
||||
// well-formed tags must still be stripped:
|
||||
{"Some Show [tvdb-81189]", "Some Show"},
|
||||
{"Some Show {tmdb-27205}", "Some Show"},
|
||||
// no tag: unchanged:
|
||||
{"Cowboy Bebop", "Cowboy Bebop"},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := stripInferProviderTags(c.in); got != c.want {
|
||||
t.Errorf("stripInferProviderTags(%q) = %q, want %q", c.in, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,10 @@ var (
|
||||
inferSeasonDirRe = regexp.MustCompile(`(?i)^Season\s+(\d{1,4})(?:\s.*)?$`)
|
||||
inferNumericSeasonRe = regexp.MustCompile(`^\d{1,4}$`)
|
||||
inferSpecialsDirRe = regexp.MustCompile(`(?i)^(?:specials?|extras?)$`)
|
||||
inferProviderTagRe = regexp.MustCompile(`\s*[{\[](?:tmdb|tmdbid|imdb|imdbid|tvdb|tvdbid)-[\w]+[}\]]`)
|
||||
// Matches a well-formed tag ([tvdb-81189]), an unsubstituted Sonarr token
|
||||
// ([tvdb-{TvdbId}]), or an empty token ({imdb-}). The id part is either a
|
||||
// {...} placeholder or zero-or-more word chars.
|
||||
inferProviderTagRe = regexp.MustCompile(`\s*[{\[](?:tmdb|tmdbid|imdb|imdbid|tvdb|tvdbid)-(?:\{[^}]*\}|[\w]*)[}\]]`)
|
||||
)
|
||||
|
||||
type RootAssignment struct {
|
||||
|
||||
Reference in New Issue
Block a user