@ -20,7 +20,7 @@ namespace NzbDrone.Core.MetadataSource
{
private readonly Logger _logger ;
private static readonly Regex CollapseSpaceRegex = new Regex ( @"\s+" , RegexOptions . Compiled ) ;
private static readonly Regex InvalidSearchCharRegex = new Regex ( @"(?:\*|\(|\)|'|!|@ )", RegexOptions . Compiled ) ;
private static readonly Regex InvalidSearchCharRegex = new Regex ( @"(?:\*|\(|\)|'|!|@ |\+ )", RegexOptions . Compiled ) ;
public TraktProxy ( Logger logger )
{
@ -30,6 +30,35 @@ namespace NzbDrone.Core.MetadataSource
public List < Series > SearchForNewSeries ( string title )
{
try
{
if ( title . StartsWith ( "tvdb:" ) | | title . StartsWith ( "tvdbid:" ) | | title . StartsWith ( "slug:" ) )
{
try
{
var slug = title . Split ( ':' ) [ 1 ] ;
if ( slug . IsNullOrWhiteSpace ( ) | | slug . Any ( char . IsWhiteSpace ) )
{
return new List < Series > ( ) ;
}
var client = BuildClient ( "show" , "summary" ) ;
var restRequest = new RestRequest ( GetSearchTerm ( slug ) + "/extended" ) ;
var response = client . ExecuteAndValidate < Show > ( restRequest ) ;
return new List < Series > { MapSeries ( response ) } ;
}
catch ( RestException ex )
{
if ( ex . Response . StatusCode = = HttpStatusCode . NotFound )
{
return new List < Series > ( ) ;
}
throw ;
}
}
else
{
var client = BuildClient ( "search" , "shows" ) ;
var restRequest = new RestRequest ( GetSearchTerm ( title ) + "/30/seasons" ) ;
@ -39,6 +68,7 @@ namespace NzbDrone.Core.MetadataSource
. OrderBy ( v = > title . LevenshteinDistanceClean ( v . Title ) )
. ToList ( ) ;
}
}
catch ( WebException ex )
{
throw new TraktException ( "Search for '{0}' failed. Unable to communicate with Trakt." , title ) ;
@ -173,7 +203,6 @@ namespace NzbDrone.Core.MetadataSource
phrase = phrase . Trim ( '-' ) ;
phrase = HttpUtility . UrlEncode ( phrase ) ;
return phrase ;
}