Fix some warnings
This commit is contained in:
parent
46c8a6c1e8
commit
e11a57f19b
|
@ -6,6 +6,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Models.General
|
|||
{
|
||||
public class Videos
|
||||
{
|
||||
public List<Video> Results { get; set; }
|
||||
public IReadOnlyList<Video> Results { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Models.Movies
|
|||
{
|
||||
public class Trailers
|
||||
{
|
||||
public List<Youtube> Youtube { get; set; }
|
||||
public IReadOnlyList<Youtube> Youtube { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Models.People
|
|||
{
|
||||
public class PersonImages
|
||||
{
|
||||
public List<Profile> Profiles { get; set; }
|
||||
public IReadOnlyList<Profile> Profiles { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
|
||||
public static string ProviderName => TmdbUtils.ProviderName;
|
||||
|
||||
/// <inheritdoc />
|
||||
public int Order => 0;
|
||||
|
||||
public bool Supports(BaseItem item)
|
||||
{
|
||||
return item is Movie || item is MusicVideo || item is Trailer;
|
||||
|
@ -201,8 +204,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
return null;
|
||||
}
|
||||
|
||||
public int Order => 0;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
|
||||
|
|
|
@ -6,22 +6,17 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
{
|
||||
internal class TmdbImageSettings
|
||||
{
|
||||
public List<string> backdrop_sizes { get; set; }
|
||||
public IReadOnlyList<string> backdrop_sizes { get; set; }
|
||||
|
||||
public string secure_base_url { get; set; }
|
||||
|
||||
public List<string> poster_sizes { get; set; }
|
||||
public IReadOnlyList<string> poster_sizes { get; set; }
|
||||
|
||||
public List<string> profile_sizes { get; set; }
|
||||
public IReadOnlyList<string> profile_sizes { get; set; }
|
||||
|
||||
public string GetImageUrl(string image)
|
||||
{
|
||||
return secure_base_url + image;
|
||||
}
|
||||
}
|
||||
|
||||
internal class TmdbSettingsResult
|
||||
{
|
||||
public TmdbImageSettings images { get; set; }
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
private const string TmdbConfigUrl = TmdbUtils.BaseTmdbApiUrl + "3/configuration?api_key={0}";
|
||||
private const string GetMovieInfo3 = TmdbUtils.BaseTmdbApiUrl + @"3/movie/{0}?api_key={1}&append_to_response=casts,releases,images,keywords,trailers";
|
||||
|
||||
internal static TmdbMovieProvider Current { get; private set; }
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
|
@ -44,7 +44,10 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
private readonly ILibraryManager _libraryManager;
|
||||
private readonly IApplicationHost _appHost;
|
||||
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
/// <summary>
|
||||
/// The _TMDB settings task.
|
||||
/// </summary>
|
||||
private TmdbSettingsResult _tmdbSettings;
|
||||
|
||||
public TmdbMovieProvider(
|
||||
IJsonSerializer jsonSerializer,
|
||||
|
@ -65,6 +68,14 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
Current = this;
|
||||
}
|
||||
|
||||
internal static TmdbMovieProvider Current { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
/// <inheritdoc />
|
||||
public int Order => 1;
|
||||
|
||||
public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(MovieInfo searchInfo, CancellationToken cancellationToken)
|
||||
{
|
||||
return GetMovieSearchResults(searchInfo, cancellationToken);
|
||||
|
@ -131,13 +142,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
return movieDb.GetMetadata(id, cancellationToken);
|
||||
}
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
/// <summary>
|
||||
/// The _TMDB settings task.
|
||||
/// </summary>
|
||||
private TmdbSettingsResult _tmdbSettings;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the TMDB settings.
|
||||
/// </summary>
|
||||
|
@ -272,7 +276,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
languages.Add("en");
|
||||
}
|
||||
|
||||
return string.Join(",", languages);
|
||||
return string.Join(',', languages);
|
||||
}
|
||||
|
||||
public static string NormalizeLanguage(string language)
|
||||
|
@ -381,15 +385,13 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
/// <summary>
|
||||
/// Gets the movie db response.
|
||||
/// </summary>
|
||||
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
|
||||
internal Task<HttpResponseMessage> GetMovieDbResponse(HttpRequestMessage message, CancellationToken cancellationToken = default)
|
||||
{
|
||||
message.Headers.UserAgent.ParseAdd(_appHost.ApplicationUserAgent);
|
||||
return _httpClientFactory.CreateClient(NamedClient.Default).SendAsync(message, cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public int Order => 1;
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
|
|
|
@ -207,7 +207,12 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
return results
|
||||
.Select(i =>
|
||||
{
|
||||
var remoteResult = new RemoteSearchResult {SearchProviderName = TmdbMovieProvider.Current.Name, Name = i.Title ?? i.Name ?? i.Original_Title, ImageUrl = string.IsNullOrWhiteSpace(i.Poster_Path) ? null : baseImageUrl + i.Poster_Path};
|
||||
var remoteResult = new RemoteSearchResult
|
||||
{
|
||||
SearchProviderName = TmdbMovieProvider.Current.Name,
|
||||
Name = i.Title ?? i.Name ?? i.Original_Title,
|
||||
ImageUrl = string.IsNullOrWhiteSpace(i.Poster_Path) ? null : baseImageUrl + i.Poster_Path
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(i.Release_Date))
|
||||
{
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#pragma warning disable CS1591
|
||||
|
||||
namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
||||
{
|
||||
internal class TmdbSettingsResult
|
||||
{
|
||||
public TmdbImageSettings images { get; set; }
|
||||
}
|
||||
}
|
|
@ -14,6 +14,8 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Music
|
|||
{
|
||||
public class TmdbMusicVideoProvider : IRemoteMetadataProvider<MusicVideo, MusicVideoInfo>
|
||||
{
|
||||
public string Name => TmdbMovieProvider.Current.Name;
|
||||
|
||||
public Task<MetadataResult<MusicVideo>> GetMetadata(MusicVideoInfo info, CancellationToken cancellationToken)
|
||||
{
|
||||
return TmdbMovieProvider.Current.GetItemMetadata<MusicVideo>(info, cancellationToken);
|
||||
|
@ -24,8 +26,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Music
|
|||
return Task.FromResult((IEnumerable<RemoteSearchResult>)new List<RemoteSearchResult>());
|
||||
}
|
||||
|
||||
public string Name => TmdbMovieProvider.Current.Name;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
|
|||
{
|
||||
public class TmdbPersonProvider : IRemoteMetadataProvider<Person, PersonLookupInfo>
|
||||
{
|
||||
const string DataFileName = "info.json";
|
||||
private const string DataFileName = "info.json";
|
||||
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
|
||||
|
@ -39,20 +39,17 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
|
|||
private readonly IFileSystem _fileSystem;
|
||||
private readonly IServerConfigurationManager _configurationManager;
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly ILogger<TmdbPersonProvider> _logger;
|
||||
|
||||
public TmdbPersonProvider(
|
||||
IFileSystem fileSystem,
|
||||
IServerConfigurationManager configurationManager,
|
||||
IJsonSerializer jsonSerializer,
|
||||
IHttpClientFactory httpClientFactory,
|
||||
ILogger<TmdbPersonProvider> logger)
|
||||
IHttpClientFactory httpClientFactory)
|
||||
{
|
||||
_fileSystem = fileSystem;
|
||||
_configurationManager = configurationManager;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_logger = logger;
|
||||
Current = this;
|
||||
}
|
||||
|
||||
|
@ -75,7 +72,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
|
|||
var dataFilePath = GetPersonDataFilePath(_configurationManager.ApplicationPaths, tmdbId);
|
||||
var info = _jsonSerializer.DeserializeFromFile<PersonResult>(dataFilePath);
|
||||
|
||||
var images = (info.Images ?? new PersonImages()).Profiles ?? new List<Profile>();
|
||||
IReadOnlyList<Profile> images = info.Images?.Profiles ?? Array.Empty<Profile>();
|
||||
|
||||
var result = new RemoteSearchResult
|
||||
{
|
||||
|
@ -95,7 +92,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People
|
|||
if (searchInfo.IsAutomated)
|
||||
{
|
||||
// Don't hammer moviedb searching by name
|
||||
return new List<RemoteSearchResult>();
|
||||
return Array.Empty<RemoteSearchResult>();
|
||||
}
|
||||
|
||||
var url = string.Format(
|
||||
|
|
|
@ -28,7 +28,13 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
{
|
||||
public TmdbEpisodeImageProvider(IHttpClientFactory httpClientFactory, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILoggerFactory loggerFactory)
|
||||
: base(httpClientFactory, configurationManager, jsonSerializer, fileSystem, localization, loggerFactory)
|
||||
{ }
|
||||
{
|
||||
}
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
// After TheTvDb
|
||||
public int Order => 1;
|
||||
|
||||
public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
|
||||
{
|
||||
|
@ -43,7 +49,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
var episode = (Controller.Entities.TV.Episode)item;
|
||||
var series = episode.Series;
|
||||
|
||||
var seriesId = series != null ? series.GetProviderId(MetadataProvider.Tmdb) : null;
|
||||
var seriesId = series?.GetProviderId(MetadataProvider.Tmdb);
|
||||
|
||||
var list = new List<RemoteImageInfo>();
|
||||
|
||||
|
@ -62,8 +68,12 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
var language = item.GetPreferredMetadataLanguage();
|
||||
|
||||
var response = await GetEpisodeInfo(seriesId, seasonNumber.Value, episodeNumber.Value,
|
||||
language, cancellationToken).ConfigureAwait(false);
|
||||
var response = await GetEpisodeInfo(
|
||||
seriesId,
|
||||
seasonNumber.Value,
|
||||
episodeNumber.Value,
|
||||
language,
|
||||
cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var tmdbSettings = await TmdbMovieProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
|
@ -120,14 +130,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
return GetResponse(url, cancellationToken);
|
||||
}
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
public bool Supports(BaseItem item)
|
||||
{
|
||||
return item is Controller.Entities.TV.Episode;
|
||||
}
|
||||
|
||||
// After TheTvDb
|
||||
public int Order => 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,13 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
{
|
||||
public TmdbEpisodeProvider(IHttpClientFactory httpClientFactory, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILoggerFactory loggerFactory)
|
||||
: base(httpClientFactory, configurationManager, jsonSerializer, fileSystem, localization, loggerFactory)
|
||||
{ }
|
||||
{
|
||||
}
|
||||
|
||||
// After TheTvDb
|
||||
public int Order => 1;
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(EpisodeInfo searchInfo, CancellationToken cancellationToken)
|
||||
{
|
||||
|
@ -41,7 +47,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
return list;
|
||||
}
|
||||
|
||||
var metadataResult = await GetMetadata(searchInfo, cancellationToken);
|
||||
var metadataResult = await GetMetadata(searchInfo, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (metadataResult.HasMetadata)
|
||||
{
|
||||
|
@ -205,10 +211,5 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
{
|
||||
return GetResponse(url, cancellationToken);
|
||||
}
|
||||
|
||||
// After TheTvDb
|
||||
public int Order => 1;
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,11 +21,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
public abstract class TmdbEpisodeProviderBase
|
||||
{
|
||||
private const string EpisodeUrlPattern = TmdbUtils.BaseTmdbApiUrl + @"3/tv/{0}/season/{1}/episode/{2}?api_key={3}&append_to_response=images,external_ids,credits,videos";
|
||||
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IServerConfigurationManager _configurationManager;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly ILocalizationManager _localization;
|
||||
private readonly ILogger<TmdbEpisodeProviderBase> _logger;
|
||||
|
||||
protected TmdbEpisodeProviderBase(IHttpClientFactory httpClientFactory, IServerConfigurationManager configurationManager, IJsonSerializer jsonSerializer, IFileSystem fileSystem, ILocalizationManager localization, ILoggerFactory loggerFactory)
|
||||
|
@ -34,13 +34,16 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
_configurationManager = configurationManager;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_fileSystem = fileSystem;
|
||||
_localization = localization;
|
||||
_logger = loggerFactory.CreateLogger<TmdbEpisodeProviderBase>();
|
||||
}
|
||||
|
||||
protected ILogger Logger => _logger;
|
||||
|
||||
protected async Task<EpisodeResult> GetEpisodeInfo(string seriesTmdbId, int season, int episodeNumber, string preferredMetadataLanguage,
|
||||
protected async Task<EpisodeResult> GetEpisodeInfo(
|
||||
string seriesTmdbId,
|
||||
int season,
|
||||
int episodeNumber,
|
||||
string preferredMetadataLanguage,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
await EnsureEpisodeInfo(seriesTmdbId, season, episodeNumber, preferredMetadataLanguage, cancellationToken)
|
||||
|
@ -93,7 +96,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
var path = TmdbSeriesProvider.GetSeriesDataPath(_configurationManager.ApplicationPaths, tmdbId);
|
||||
|
||||
var filename = string.Format(CultureInfo.InvariantCulture, "season-{0}-episode-{1}-{2}.json",
|
||||
var filename = string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"season-{0}-episode-{1}-{2}.json",
|
||||
seasonNumber.ToString(CultureInfo.InvariantCulture),
|
||||
episodeNumber.ToString(CultureInfo.InvariantCulture),
|
||||
preferredLanguage);
|
||||
|
|
|
@ -28,26 +28,32 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
public class TmdbSeasonProvider : IRemoteMetadataProvider<Season, SeasonInfo>
|
||||
{
|
||||
private const string GetTvInfo3 = TmdbUtils.BaseTmdbApiUrl + @"3/tv/{0}/season/{1}?api_key={2}&append_to_response=images,keywords,external_ids,credits,videos";
|
||||
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IServerConfigurationManager _configurationManager;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly ILocalizationManager _localization;
|
||||
private readonly ILogger<TmdbSeasonProvider> _logger;
|
||||
|
||||
internal static TmdbSeasonProvider Current { get; private set; }
|
||||
|
||||
public TmdbSeasonProvider(IHttpClientFactory httpClientFactory, IServerConfigurationManager configurationManager, IFileSystem fileSystem, ILocalizationManager localization, IJsonSerializer jsonSerializer, ILogger<TmdbSeasonProvider> logger)
|
||||
public TmdbSeasonProvider(
|
||||
IHttpClientFactory httpClientFactory,
|
||||
IServerConfigurationManager configurationManager,
|
||||
IFileSystem fileSystem,
|
||||
IJsonSerializer jsonSerializer,
|
||||
ILogger<TmdbSeasonProvider> logger)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_configurationManager = configurationManager;
|
||||
_fileSystem = fileSystem;
|
||||
_localization = localization;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_logger = logger;
|
||||
Current = this;
|
||||
}
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
public async Task<MetadataResult<Season>> GetMetadata(SeasonInfo info, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = new MetadataResult<Season>();
|
||||
|
@ -116,8 +122,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
return result;
|
||||
}
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(SeasonInfo searchInfo, CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.FromResult<IEnumerable<RemoteSearchResult>>(new List<RemoteSearchResult>());
|
||||
|
@ -128,7 +132,10 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
|
||||
}
|
||||
|
||||
private async Task<SeasonResult> GetSeasonInfo(string seriesTmdbId, int season, string preferredMetadataLanguage,
|
||||
private async Task<SeasonResult> GetSeasonInfo(
|
||||
string seriesTmdbId,
|
||||
int season,
|
||||
string preferredMetadataLanguage,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
await EnsureSeasonInfo(seriesTmdbId, season, preferredMetadataLanguage, cancellationToken)
|
||||
|
@ -181,7 +188,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
var path = TmdbSeriesProvider.GetSeriesDataPath(_configurationManager.ApplicationPaths, tmdbId);
|
||||
|
||||
var filename = string.Format(CultureInfo.InvariantCulture, "season-{0}-{1}.json",
|
||||
var filename = string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"season-{0}-{1}.json",
|
||||
seasonNumber.ToString(CultureInfo.InvariantCulture),
|
||||
preferredLanguage);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
|
@ -25,9 +26,8 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
{
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
|
||||
public TmdbSeriesImageProvider(IJsonSerializer jsonSerializer, IHttpClientFactory httpClientFactory, IFileSystem fileSystem)
|
||||
public TmdbSeriesImageProvider(IJsonSerializer jsonSerializer, IHttpClientFactory httpClientFactory)
|
||||
{
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_httpClientFactory = httpClientFactory;
|
||||
|
@ -38,6 +38,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
public static string ProviderName => TmdbUtils.ProviderName;
|
||||
|
||||
// After tvdb and fanart
|
||||
public int Order => 2;
|
||||
|
||||
public bool Supports(BaseItem item)
|
||||
{
|
||||
return item is Series;
|
||||
|
@ -56,7 +59,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
{
|
||||
var list = new List<RemoteImageInfo>();
|
||||
|
||||
var results = await FetchImages(item, null, _jsonSerializer, cancellationToken).ConfigureAwait(false);
|
||||
var results = await FetchImages(item, null, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (results == null)
|
||||
{
|
||||
|
@ -148,10 +151,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="language">The language.</param>
|
||||
/// <param name="jsonSerializer">The json serializer.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task{MovieImages}.</returns>
|
||||
private async Task<Images> FetchImages(BaseItem item, string language, IJsonSerializer jsonSerializer,
|
||||
private async Task<Images> FetchImages(
|
||||
BaseItem item,
|
||||
string language,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var tmdbId = item.GetProviderId(MetadataProvider.Tmdb);
|
||||
|
@ -165,22 +169,14 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
var path = TmdbSeriesProvider.Current.GetDataFilePath(tmdbId, language);
|
||||
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
if (!string.IsNullOrEmpty(path) && File.Exists(path))
|
||||
{
|
||||
var fileInfo = _fileSystem.GetFileInfo(path);
|
||||
|
||||
if (fileInfo.Exists)
|
||||
{
|
||||
return jsonSerializer.DeserializeFromFile<SeriesResult>(path).Images;
|
||||
}
|
||||
return _jsonSerializer.DeserializeFromFile<SeriesResult>(path).Images;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// After tvdb and fanart
|
||||
public int Order => 2;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
|
||||
|
|
|
@ -17,8 +17,6 @@ using MediaBrowser.Controller.Entities.TV;
|
|||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.Providers;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using MediaBrowser.Providers.Plugins.Tmdb.Models.Search;
|
||||
|
@ -33,38 +31,35 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
private const string GetTvInfo3 = TmdbUtils.BaseTmdbApiUrl + @"3/tv/{0}?api_key={1}&append_to_response=credits,images,keywords,external_ids,videos,content_ratings";
|
||||
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly IServerConfigurationManager _configurationManager;
|
||||
private readonly ILogger<TmdbSeriesProvider> _logger;
|
||||
private readonly ILocalizationManager _localization;
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
|
||||
internal static TmdbSeriesProvider Current { get; private set; }
|
||||
|
||||
public TmdbSeriesProvider(
|
||||
IJsonSerializer jsonSerializer,
|
||||
IFileSystem fileSystem,
|
||||
IServerConfigurationManager configurationManager,
|
||||
ILogger<TmdbSeriesProvider> logger,
|
||||
ILocalizationManager localization,
|
||||
IHttpClientFactory httpClientFactory,
|
||||
ILibraryManager libraryManager)
|
||||
{
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_fileSystem = fileSystem;
|
||||
_configurationManager = configurationManager;
|
||||
_logger = logger;
|
||||
_localization = localization;
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_libraryManager = libraryManager;
|
||||
Current = this;
|
||||
}
|
||||
|
||||
internal static TmdbSeriesProvider Current { get; private set; }
|
||||
|
||||
public string Name => TmdbUtils.ProviderName;
|
||||
|
||||
// After TheTVDB
|
||||
public int Order => 1;
|
||||
|
||||
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken)
|
||||
{
|
||||
var tmdbId = searchInfo.GetProviderId(MetadataProvider.Tmdb);
|
||||
|
@ -129,8 +124,10 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
public async Task<MetadataResult<Series>> GetMetadata(SeriesInfo info, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = new MetadataResult<Series>();
|
||||
result.QueriedById = true;
|
||||
var result = new MetadataResult<Series>
|
||||
{
|
||||
QueriedById = true
|
||||
};
|
||||
|
||||
var tmdbId = info.GetProviderId(MetadataProvider.Tmdb);
|
||||
|
||||
|
@ -206,9 +203,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
await EnsureSeriesInfo(tmdbId, language, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var result = new MetadataResult<Series>();
|
||||
result.Item = new Series();
|
||||
result.ResultLanguage = seriesInfo.ResultLanguage;
|
||||
var result = new MetadataResult<Series>
|
||||
{
|
||||
Item = new Series(),
|
||||
ResultLanguage = seriesInfo.ResultLanguage
|
||||
};
|
||||
|
||||
var settings = await TmdbMovieProvider.Current.GetTmdbSettings(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
|
@ -474,12 +473,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
|
||||
var path = GetDataFilePath(tmdbId, language);
|
||||
|
||||
var fileInfo = _fileSystem.GetFileSystemInfo(path);
|
||||
|
||||
var fileInfo = new FileInfo(path);
|
||||
if (fileInfo.Exists)
|
||||
{
|
||||
// If it's recent or automatic updates are enabled, don't re-download
|
||||
if ((DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(fileInfo)).TotalDays <= 2)
|
||||
if ((DateTime.UtcNow - fileInfo.LastWriteTimeUtc).TotalDays <= 2)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
@ -549,9 +547,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV
|
|||
return null;
|
||||
}
|
||||
|
||||
// After TheTVDB
|
||||
public int Order => 1;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
|
||||
|
|
|
@ -21,6 +21,10 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Trailers
|
|||
_httpClientFactory = httpClientFactory;
|
||||
}
|
||||
|
||||
public string Name => TmdbMovieProvider.Current.Name;
|
||||
|
||||
public int Order => 0;
|
||||
|
||||
public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(TrailerInfo searchInfo, CancellationToken cancellationToken)
|
||||
{
|
||||
return TmdbMovieProvider.Current.GetMovieSearchResults(searchInfo, cancellationToken);
|
||||
|
@ -31,10 +35,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Trailers
|
|||
return TmdbMovieProvider.Current.GetItemMetadata<Trailer>(info, cancellationToken);
|
||||
}
|
||||
|
||||
public string Name => TmdbMovieProvider.Current.Name;
|
||||
|
||||
public int Order => 0;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
|
||||
|
|
|
@ -33,6 +33,8 @@ namespace MediaBrowser.Providers.Studios
|
|||
|
||||
public string Name => "Emby Designs";
|
||||
|
||||
public int Order => 0;
|
||||
|
||||
public bool Supports(BaseItem item)
|
||||
{
|
||||
return item is Studio;
|
||||
|
@ -119,8 +121,6 @@ namespace MediaBrowser.Providers.Studios
|
|||
return EnsureList(url, file, _fileSystem, cancellationToken);
|
||||
}
|
||||
|
||||
public int Order => 0;
|
||||
|
||||
public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient(NamedClient.Default);
|
||||
|
@ -161,12 +161,12 @@ namespace MediaBrowser.Providers.Studios
|
|||
|
||||
private string GetComparableName(string name)
|
||||
{
|
||||
return name.Replace(" ", string.Empty)
|
||||
.Replace(".", string.Empty)
|
||||
.Replace("&", string.Empty)
|
||||
.Replace("!", string.Empty)
|
||||
.Replace(",", string.Empty)
|
||||
.Replace("/", string.Empty);
|
||||
return name.Replace(" ", string.Empty, StringComparison.Ordinal)
|
||||
.Replace(".", string.Empty, StringComparison.Ordinal)
|
||||
.Replace("&", string.Empty, StringComparison.Ordinal)
|
||||
.Replace("!", string.Empty, StringComparison.Ordinal)
|
||||
.Replace(",", string.Empty, StringComparison.Ordinal)
|
||||
.Replace("/", string.Empty, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetAvailableImages(string file)
|
||||
|
|
|
@ -303,7 +303,7 @@ namespace MediaBrowser.Providers.Subtitles
|
|||
|
||||
private ISubtitleProvider GetProvider(string id)
|
||||
{
|
||||
return _subtitleProviders.First(i => string.Equals(id, GetProviderId(i.Name)));
|
||||
return _subtitleProviders.First(i => string.Equals(id, GetProviderId(i.Name), StringComparison.Ordinal));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
|
@ -48,18 +48,25 @@ namespace MediaBrowser.Providers.TV
|
|||
|
||||
public async Task<bool> Run(Series series, bool addNewItems, CancellationToken cancellationToken)
|
||||
{
|
||||
var tvdbId = series.GetProviderId(MetadataProvider.Tvdb);
|
||||
if (string.IsNullOrEmpty(tvdbId))
|
||||
var tvdbIdString = series.GetProviderId(MetadataProvider.Tvdb);
|
||||
if (string.IsNullOrEmpty(tvdbIdString))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var episodes = await _tvdbClientManager.GetAllEpisodesAsync(Convert.ToInt32(tvdbId), series.GetPreferredMetadataLanguage(), cancellationToken);
|
||||
var episodes = await _tvdbClientManager.GetAllEpisodesAsync(
|
||||
int.Parse(tvdbIdString, CultureInfo.InvariantCulture),
|
||||
series.GetPreferredMetadataLanguage(),
|
||||
cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var episodeLookup = episodes
|
||||
.Select(i =>
|
||||
{
|
||||
DateTime.TryParse(i.FirstAired, out var firstAired);
|
||||
if (!DateTime.TryParse(i.FirstAired, out var firstAired))
|
||||
{
|
||||
firstAired = default;
|
||||
}
|
||||
|
||||
var seasonNumber = i.AiredSeason.GetValueOrDefault(-1);
|
||||
var episodeNumber = i.AiredEpisodeNumber.GetValueOrDefault(-1);
|
||||
return (seasonNumber, episodeNumber, firstAired);
|
||||
|
|
|
@ -27,6 +27,9 @@ namespace MediaBrowser.Providers.TV
|
|||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override bool EnableUpdatingPremiereDateFromChildren => true;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override ItemUpdateType BeforeSaveInternal(Season item, bool isFullRefresh, ItemUpdateType currentUpdateType)
|
||||
{
|
||||
|
@ -67,9 +70,6 @@ namespace MediaBrowser.Providers.TV
|
|||
return updateType;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override bool EnableUpdatingPremiereDateFromChildren => true;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override IList<BaseItem> GetChildrenForMetadataUpdates(Season item)
|
||||
=> item.GetEpisodes();
|
||||
|
|
Loading…
Reference in New Issue
Block a user