1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-05 02:22:31 +01:00

Fix: Series Titles with apostrophes when searched on NzbMatrix will now return valid results.

Each indexer can now override GetQueryTitle from IndexerBase if required for special title searching.
This commit is contained in:
Mark McDowall 2012-02-11 00:09:28 -08:00
parent 2a6f02be17
commit 308fd11c83
3 changed files with 32 additions and 3 deletions

View File

@ -270,10 +270,22 @@ public void nzbmatrix_multi_word_search_returns_valid_results()
[TestCase("hawaii five-0 (2010)", "hawaii+five+0+2010")] [TestCase("hawaii five-0 (2010)", "hawaii+five+0+2010")]
[TestCase("this& that", "this+that")] [TestCase("this& that", "this+that")]
[TestCase("this& that", "this+that")] [TestCase("this& that", "this+that")]
[TestCase("grey's anatomy", "grey+s+anatomy")]
public void get_query_title(string raw, string clean) public void get_query_title(string raw, string clean)
{ {
var result = IndexerBase.GetQueryTitle(raw); var mock = new Mock<IndexerBase>();
mock.CallBase = true;
var result = mock.Object.GetQueryTitle(raw);
result.Should().Be(clean);
}
[TestCase("hawaii five-0 (2010)", "hawaii+five+0+2010")]
[TestCase("this& that", "this+that")]
[TestCase("this& that", "this+that")]
[TestCase("grey's anatomy", "greys+anatomy")]
public void get_query_title_nzbmatrix_should_replace_apostrophe_with_empty_string(string raw, string clean)
{
var result = Mocker.Resolve<NzbMatrix>().GetQueryTitle(raw);
result.Should().Be(clean); result.Should().Be(clean);
} }

View File

@ -222,7 +222,12 @@ public EpisodeParseResult ParseFeed(SyndicationItem item)
return CustomParser(item, episodeParseResult); return CustomParser(item, episodeParseResult);
} }
public static string GetQueryTitle(string title) /// <summary>
/// This method can be overwritten to provide indexer specific title cleaning
/// </summary>
/// <param name="title">Title that needs to be cleaned</param>
/// <returns></returns>
public virtual string GetQueryTitle(string title)
{ {
var cleanTitle = TitleSearchRegex.Replace(title, "+").Trim('+', ' '); var cleanTitle = TitleSearchRegex.Replace(title, "+").Trim('+', ' ');

View File

@ -17,6 +17,8 @@ public NzbMatrix(HttpProvider httpProvider, ConfigProvider configProvider)
{ {
} }
private static readonly Regex TitleSearchRegex = new Regex(@"[\W]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
protected override string[] Urls protected override string[] Urls
{ {
get get
@ -94,7 +96,6 @@ public override string Name
get { return "NzbMatrix"; } get { return "NzbMatrix"; }
} }
protected override string NzbDownloadUrl(SyndicationItem item) protected override string NzbDownloadUrl(SyndicationItem item)
{ {
return item.Links[0].Uri.ToString(); return item.Links[0].Uri.ToString();
@ -110,5 +111,16 @@ protected override EpisodeParseResult CustomParser(SyndicationItem item, Episode
} }
return currentResult; return currentResult;
} }
public override string GetQueryTitle(string title)
{
//Replace apostrophe with empty string
title = title.Replace("'", "");
var cleanTitle = TitleSearchRegex.Replace(title, "+").Trim('+', ' ');
//remove any repeating +s
cleanTitle = Regex.Replace(cleanTitle, @"\+{1,100}", "+");
return cleanTitle;
}
} }
} }