Use imdbid as fallback in movie provider

Includes post-ProviderIdExtensions cleanup
pull/5431/head
cvium 3 years ago
parent 0ef8bea125
commit 880c8636bc

@ -148,6 +148,15 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
} }
} }
if (string.IsNullOrEmpty(tmdbId) && !string.IsNullOrEmpty(imdbId))
{
var movieResultFromImdbId = await _tmdbClientManager.FindByExternalIdAsync(imdbId, FindExternalSource.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
if (movieResultFromImdbId?.MovieResults.Count > 0)
{
tmdbId = movieResultFromImdbId.MovieResults[0].Id.ToString();
}
}
if (string.IsNullOrEmpty(tmdbId)) if (string.IsNullOrEmpty(tmdbId))
{ {
return new MetadataResult<Movie>(); return new MetadataResult<Movie>();

@ -43,9 +43,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken) public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken)
{ {
var tmdbId = searchInfo.GetProviderId(MetadataProvider.Tmdb); if (searchInfo.TryGetProviderId(MetadataProvider.Tmdb, out var tmdbId))
if (!string.IsNullOrEmpty(tmdbId))
{ {
var series = await _tmdbClientManager var series = await _tmdbClientManager
.GetSeriesAsync(Convert.ToInt32(tmdbId, CultureInfo.InvariantCulture), searchInfo.MetadataLanguage, searchInfo.MetadataLanguage, cancellationToken) .GetSeriesAsync(Convert.ToInt32(tmdbId, CultureInfo.InvariantCulture), searchInfo.MetadataLanguage, searchInfo.MetadataLanguage, cancellationToken)
@ -59,9 +57,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
} }
} }
var imdbId = searchInfo.GetProviderId(MetadataProvider.Imdb); if (searchInfo.TryGetProviderId(MetadataProvider.Imdb, out var imdbId))
if (!string.IsNullOrEmpty(imdbId))
{ {
var findResult = await _tmdbClientManager var findResult = await _tmdbClientManager
.FindByExternalIdAsync(imdbId, FindExternalSource.Imdb, searchInfo.MetadataLanguage, cancellationToken) .FindByExternalIdAsync(imdbId, FindExternalSource.Imdb, searchInfo.MetadataLanguage, cancellationToken)
@ -82,9 +78,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
} }
} }
var tvdbId = searchInfo.GetProviderId(MetadataProvider.Tvdb); if (searchInfo.TryGetProviderId(MetadataProvider.Tvdb, out var tvdbId))
if (!string.IsNullOrEmpty(tvdbId))
{ {
var findResult = await _tmdbClientManager var findResult = await _tmdbClientManager
.FindByExternalIdAsync(tvdbId, FindExternalSource.TvDb, searchInfo.MetadataLanguage, cancellationToken) .FindByExternalIdAsync(tvdbId, FindExternalSource.TvDb, searchInfo.MetadataLanguage, cancellationToken)
@ -171,33 +165,21 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
var tmdbId = info.GetProviderId(MetadataProvider.Tmdb); var tmdbId = info.GetProviderId(MetadataProvider.Tmdb);
if (string.IsNullOrEmpty(tmdbId)) if (string.IsNullOrEmpty(tmdbId) && info.TryGetProviderId(MetadataProvider.Imdb, out var imdbId))
{ {
var imdbId = info.GetProviderId(MetadataProvider.Imdb); var searchResult = await _tmdbClientManager.FindByExternalIdAsync(imdbId, FindExternalSource.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
if (searchResult?.TvResults.Count > 0)
if (!string.IsNullOrEmpty(imdbId))
{ {
var searchResult = await _tmdbClientManager.FindByExternalIdAsync(imdbId, FindExternalSource.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); tmdbId = searchResult.TvResults[0].Id.ToString(CultureInfo.InvariantCulture);
if (searchResult != null)
{
tmdbId = searchResult.TvResults.FirstOrDefault()?.Id.ToString(CultureInfo.InvariantCulture);
}
} }
} }
if (string.IsNullOrEmpty(tmdbId)) if (string.IsNullOrEmpty(tmdbId) && info.TryGetProviderId(MetadataProvider.Tvdb, out var tvdbId))
{ {
var tvdbId = info.GetProviderId(MetadataProvider.Tvdb); var searchResult = await _tmdbClientManager.FindByExternalIdAsync(tvdbId, FindExternalSource.TvDb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
if (searchResult?.TvResults.Count > 0)
if (!string.IsNullOrEmpty(tvdbId))
{ {
var searchResult = await _tmdbClientManager.FindByExternalIdAsync(tvdbId, FindExternalSource.TvDb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); tmdbId = searchResult.TvResults[0].Id.ToString(CultureInfo.InvariantCulture);
if (searchResult != null)
{
tmdbId = searchResult.TvResults.FirstOrDefault()?.Id.ToString(CultureInfo.InvariantCulture);
}
} }
} }
@ -215,32 +197,34 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
} }
} }
if (!string.IsNullOrEmpty(tmdbId)) if (string.IsNullOrEmpty(tmdbId))
{ {
cancellationToken.ThrowIfCancellationRequested(); return result;
}
var tvShow = await _tmdbClientManager cancellationToken.ThrowIfCancellationRequested();
.GetSeriesAsync(Convert.ToInt32(tmdbId, CultureInfo.InvariantCulture), info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken)
.ConfigureAwait(false);
result = new MetadataResult<Series> var tvShow = await _tmdbClientManager
{ .GetSeriesAsync(Convert.ToInt32(tmdbId, CultureInfo.InvariantCulture), info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken)
Item = MapTvShowToSeries(tvShow, info.MetadataCountryCode), .ConfigureAwait(false);
ResultLanguage = info.MetadataLanguage ?? tvShow.OriginalLanguage
};
foreach (var person in GetPersons(tvShow)) result = new MetadataResult<Series>
{ {
result.AddPerson(person); Item = MapTvShowToSeries(tvShow, info.MetadataCountryCode),
} ResultLanguage = info.MetadataLanguage ?? tvShow.OriginalLanguage
};
result.HasMetadata = result.Item != null; foreach (var person in GetPersons(tvShow))
{
result.AddPerson(person);
} }
result.HasMetadata = result.Item != null;
return result; return result;
} }
private Series MapTvShowToSeries(TvShow seriesResult, string preferredCountryCode) private static Series MapTvShowToSeries(TvShow seriesResult, string preferredCountryCode)
{ {
var series = new Series var series = new Series
{ {

Loading…
Cancel
Save