diff options
| author | Bond_009 <bond.009@outlook.com> | 2020-09-08 16:12:47 +0200 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2020-09-08 16:12:47 +0200 |
| commit | e11a57f19b6f77138765b0924fe8f2731b32b6dc (patch) | |
| tree | b6501427caac0efaef524bcdc4f57fb491e2d258 | |
| parent | 46c8a6c1e832e00c4f9475f6dee980a515dc7e64 (diff) | |
Fix some warnings
21 files changed, 146 insertions, 119 deletions
diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Models/General/Videos.cs b/MediaBrowser.Providers/Plugins/Tmdb/Models/General/Videos.cs index 241dcab4d..1c673fdbd 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Models/General/Videos.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Models/General/Videos.cs @@ -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; } } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Models/Movies/Trailers.cs b/MediaBrowser.Providers/Plugins/Tmdb/Models/Movies/Trailers.cs index 166860f51..057177294 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Models/Movies/Trailers.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Models/Movies/Trailers.cs @@ -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; } } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Models/People/PersonImages.cs b/MediaBrowser.Providers/Plugins/Tmdb/Models/People/PersonImages.cs index 3ea12334e..d82e0fc6d 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Models/People/PersonImages.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Models/People/PersonImages.cs @@ -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; } } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageProvider.cs index a975fb8f6..9db7e0997 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSettings.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageSettings.cs index 128258ab3..1ba8f9072 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSettings.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbImageSettings.cs @@ -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; } - } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs index 5d383722a..31cfd8649 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs @@ -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,6 +385,7 @@ 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); @@ -388,9 +393,6 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies } /// <inheritdoc /> - public int Order => 1; - - /// <inheritdoc /> public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken) { return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs index d885cd90b..36a4eef8a 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs @@ -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)) { diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSettingsResult.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSettingsResult.cs new file mode 100644 index 000000000..c7ba97438 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSettingsResult.cs @@ -0,0 +1,9 @@ +#pragma warning disable CS1591 + +namespace MediaBrowser.Providers.Plugins.Tmdb.Movies +{ + internal class TmdbSettingsResult + { + public TmdbImageSettings images { get; set; } + } +} diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Music/TmdbMusicVideoProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Music/TmdbMusicVideoProvider.cs index 73e49ba5b..b88ecce87 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Music/TmdbMusicVideoProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Music/TmdbMusicVideoProvider.cs @@ -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(); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs index 8d1a854d6..777ebce49 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs @@ -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( diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeImageProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeImageProvider.cs index eebecdac6..c56774f8e 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeImageProvider.cs @@ -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; } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index ed4739acb..a7e3a03fe 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -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; } } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs index 55b0f0409..34d2424a3 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs @@ -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); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs index 40f1c4e69..c9b257fcc 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesImageProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesImageProvider.cs index 125560175..e2cd5e441 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesImageProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs index fa0873b9d..287ebca8c 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Trailers/TmdbTrailerProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Trailers/TmdbTrailerProvider.cs index 25296387b..613dc17e3 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Trailers/TmdbTrailerProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Trailers/TmdbTrailerProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs index 76dc7df7f..90e13f12f 100644 --- a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs +++ b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs @@ -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) diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs index 0f7cb3f8f..f25d3d5ee 100644 --- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs +++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs @@ -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 /> diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index 616c61ec0..c833b1227 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -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); diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs index 5431de623..4e59f78bc 100644 --- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs @@ -28,6 +28,9 @@ namespace MediaBrowser.Providers.TV } /// <inheritdoc /> + protected override bool EnableUpdatingPremiereDateFromChildren => true; + + /// <inheritdoc /> protected override ItemUpdateType BeforeSaveInternal(Season item, bool isFullRefresh, ItemUpdateType currentUpdateType) { var updateType = base.BeforeSaveInternal(item, isFullRefresh, currentUpdateType); @@ -68,9 +71,6 @@ namespace MediaBrowser.Providers.TV } /// <inheritdoc /> - protected override bool EnableUpdatingPremiereDateFromChildren => true; - - /// <inheritdoc /> protected override IList<BaseItem> GetChildrenForMetadataUpdates(Season item) => item.GetEpisodes(); |
