@ -9,6 +9,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Providers ;
using Microsoft.Extensions.Logging ;
using TvDbSharper ;
using TvDbSharper.Dto ;
namespace MediaBrowser.Providers.TV
@ -37,7 +38,7 @@ namespace MediaBrowser.Providers.TV
var list = new List < RemoteSearchResult > ( ) ;
// The search query must either provide an episode number or date
// TODO premieredate functionality is ded
// TODO premieredate functionality is ded , could grab all episodes and search for it
if ( ! searchInfo . IndexNumber . HasValue | | ! searchInfo . PremiereDate . HasValue )
{
return list ;
@ -45,25 +46,32 @@ namespace MediaBrowser.Providers.TV
if ( TvdbSeriesProvider . IsValidSeries ( searchInfo . SeriesProviderIds ) )
{
var episodeResult =
await _tvDbClientManager . GetEpisodesAsync ( ( int ) searchInfo . IndexNumber , cancellationToken ) ;
var metadataResult = MapEpisodeToResult ( searchInfo , episodeResult . Data ) ;
if ( metadataResult . HasMetadata )
try
{
var item = metadataResult . Item ;
var episodeResult =
await _tvDbClientManager . GetEpisodesAsync ( ( int ) searchInfo . IndexNumber , cancellationToken ) ;
var metadataResult = MapEpisodeToResult ( searchInfo , episodeResult . Data ) ;
list . Add ( new RemoteSearchResult
if ( metadataResult . HasMetadata )
{
IndexNumber = item . IndexNumber ,
Name = item . Name ,
ParentIndexNumber = item . ParentIndexNumber ,
PremiereDate = item . PremiereDate ,
ProductionYear = item . ProductionYear ,
ProviderIds = item . ProviderIds ,
SearchProviderName = Name ,
IndexNumberEnd = item . IndexNumberEnd
} ) ;
var item = metadataResult . Item ;
list . Add ( new RemoteSearchResult
{
IndexNumber = item . IndexNumber ,
Name = item . Name ,
ParentIndexNumber = item . ParentIndexNumber ,
PremiereDate = item . PremiereDate ,
ProductionYear = item . ProductionYear ,
ProviderIds = item . ProviderIds ,
SearchProviderName = Name ,
IndexNumberEnd = item . IndexNumberEnd
} ) ;
}
}
catch ( TvDbServerException e )
{
_logger . LogError ( e , "Failed to retrieve episode with id {TvDbId}" , searchInfo . IndexNumber ) ;
}
}
@ -82,10 +90,19 @@ namespace MediaBrowser.Providers.TV
if ( TvdbSeriesProvider . IsValidSeries ( searchInfo . SeriesProviderIds ) & &
( searchInfo . IndexNumber . HasValue | | searchInfo . PremiereDate . HasValue ) )
{
var episodeResult = await _tvDbClientManager . GetEpisodesAsync ( Convert . ToInt32 ( searchInfo . GetProviderId ( MetadataProviders . Tvdb ) ) ,
cancellationToken ) ;
var tvdbId = searchInfo . GetProviderId ( MetadataProviders . Tvdb ) ;
try
{
var episodeResult = await _tvDbClientManager . GetEpisodesAsync (
Convert . ToInt32 ( tvdbId ) ,
cancellationToken ) ;
result = MapEpisodeToResult ( searchInfo , episodeResult . Data ) ;
result = MapEpisodeToResult ( searchInfo , episodeResult . Data ) ;
}
catch ( TvDbServerException e )
{
_logger . LogError ( e , "Failed to retrieve episode with id {TvDbId}" , tvdbId ) ;
}
}
else
{
@ -178,14 +195,8 @@ namespace MediaBrowser.Providers.TV
Type = PersonType . Writer
} ) ;
}
// TODO result.ResultLanguage = episode.
// TODO wtf is additional part info?
// foreach (var node in xmlNodes.Skip(1))
// {
// FetchAdditionalPartInfo(result, node, cancellationToken);
// }
result . ResultLanguage = episode . Language . EpisodeName ;
return result ;
}