Files
Prowlarr-Prowlarr/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs
Icer Addis d727840fbf Indexer searching for special episodes using query string
Added SpecialEpisodeSearchCriteria criteria to handle special episode search queries
Added method NzbSearchService.SearchSpecial() for season0 episodes
Added IIndexer GetSearchUrls() for doing text based queries
2014-01-07 00:21:05 -08:00

44 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using NzbDrone.Common.EnsureThat;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.IndexerSearch.Definitions
{
public abstract class SearchCriteriaBase
{
private static readonly Regex NonWord = new Regex(@"[\W]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex BeginningThe = new Regex(@"^the\s", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public Series Series { get; set; }
public string SceneTitle { get; set; }
public List<Episode> Episodes { get; set; }
public string QueryTitle
{
get
{
return GetQueryTitle(SceneTitle);
}
}
public static string GetQueryTitle(string title)
{
Ensure.That(title,() => title).IsNotNullOrWhiteSpace();
var cleanTitle = BeginningThe.Replace(title, String.Empty);
cleanTitle = cleanTitle
.Replace("&", "and")
.Replace("`", "")
.Replace("'", "");
cleanTitle = NonWord.Replace(cleanTitle, "+");
//remove any repeating +s
cleanTitle = Regex.Replace(cleanTitle, @"\+{2,}", "+");
return cleanTitle.Trim('+', ' ');
}
}
}