diff --git a/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs index a5f823f7c6..4f86a0293a 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetProvider.cs @@ -189,7 +189,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets cancellationToken.ThrowIfCancellationRequested(); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var mainResponse = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage); await using var stream = await mainResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); var mainResult = await _json.DeserializeFromStreamAsync(stream).ConfigureAwait(false); @@ -209,7 +213,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets } using var langRequestMessage = new HttpRequestMessage(HttpMethod.Get, url); - langRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + langRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + await using var langStream = await mainResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); mainResult = await _json.DeserializeFromStreamAsync(langStream).ConfigureAwait(false); } diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs index f078153f69..685561e2dc 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs @@ -146,7 +146,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies } using var requestMessage = new HttpRequestMessage(HttpMethod.Get, string.Format(CultureInfo.InvariantCulture, TmdbConfigUrl, TmdbUtils.ApiKey)); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await GetMovieDbResponse(requestMessage).ConfigureAwait(false); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); _tmdbSettings = await _jsonSerializer.DeserializeFromStreamAsync(stream).ConfigureAwait(false); @@ -325,7 +329,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies cancellationToken.ThrowIfCancellationRequested(); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var mainResponse = await GetMovieDbResponse(requestMessage); if (mainResponse.StatusCode == HttpStatusCode.NotFound) { @@ -354,7 +362,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies } using var langRequestMessage = new HttpRequestMessage(HttpMethod.Get, url); - langRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + langRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var langResponse = await GetMovieDbResponse(langRequestMessage); await using var langStream = await langResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs index d5dfca98a4..48f2a68a63 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbSearch.cs @@ -170,7 +170,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies var url3 = string.Format(_searchURL, WebUtility.UrlEncode(name), TmdbUtils.ApiKey, language, type); var requestMessage = new HttpRequestMessage(HttpMethod.Get, url3); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage).ConfigureAwait(false); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); var searchResults = await _json.DeserializeFromStreamAsync>(stream).ConfigureAwait(false); @@ -209,7 +213,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies var url3 = string.Format(_searchURL, WebUtility.UrlEncode(name), TmdbUtils.ApiKey, language, "tv"); var requestMessage = new HttpRequestMessage(HttpMethod.Get, url3); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage).ConfigureAwait(false); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); var searchResults = await _json.DeserializeFromStreamAsync>(stream).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs index 97482f34a9..e9fb5c7034 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonProvider.cs @@ -98,7 +98,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People var url = string.Format(TmdbUtils.BaseTmdbApiUrl + @"3/search/person?api_key={1}&query={0}", WebUtility.UrlEncode(searchInfo.Name), TmdbUtils.ApiKey); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage).ConfigureAwait(false); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); @@ -225,7 +229,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.People var url = string.Format(TmdbUtils.BaseTmdbApiUrl + @"3/person/{1}?api_key={0}&append_to_response=credits,images,external_ids", TmdbUtils.ApiKey, id); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage).ConfigureAwait(false); Directory.CreateDirectory(Path.GetDirectoryName(dataFilePath)); await using var fs = new FileStream(dataFilePath, FileMode.Create, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, true); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs index 5ccccc04f2..154664321f 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProviderBase.cs @@ -126,7 +126,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV cancellationToken.ThrowIfCancellationRequested(); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); return await _jsonSerializer.DeserializeFromStreamAsync(stream).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs index 247b794b16..2b9077f557 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonProvider.cs @@ -213,7 +213,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV cancellationToken.ThrowIfCancellationRequested(); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage).ConfigureAwait(false); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); return await _jsonSerializer.DeserializeFromStreamAsync(stream).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs index 6679f0684e..ac577b125a 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesProvider.cs @@ -415,7 +415,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV cancellationToken.ThrowIfCancellationRequested(); using var mainRequestMessage = new HttpRequestMessage(HttpMethod.Get, url); - mainRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + mainRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var mainResponse = await TmdbMovieProvider.Current.GetMovieDbResponse(mainRequestMessage); await using var mainStream = await mainResponse.Content.ReadAsStreamAsync().ConfigureAwait(false); var mainResult = await _jsonSerializer.DeserializeFromStreamAsync(mainStream).ConfigureAwait(false); @@ -444,7 +448,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV } using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + mainRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); var englishResult = await _jsonSerializer.DeserializeFromStreamAsync(stream).ConfigureAwait(false); @@ -501,7 +509,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV externalSource); using var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(TmdbUtils.AcceptHeader)); + foreach (var header in TmdbUtils.AcceptHeaders) + { + requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(header)); + } + using var response = await TmdbMovieProvider.Current.GetMovieDbResponse(requestMessage); await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs b/MediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs index 2f1e8b791a..1415d69761 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TmdbUtils.cs @@ -1,4 +1,5 @@ using System; +using System.Net.Mime; using MediaBrowser.Model.Entities; using MediaBrowser.Providers.Plugins.Tmdb.Models.General; @@ -32,7 +33,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb /// /// Value of the Accept header for requests to the provider. /// - public const string AcceptHeader = "application/json,image/*"; + public static readonly string[] AcceptHeaders = { MediaTypeNames.Application.Json, "image/*" }; /// /// Maps the TMDB provided roles for crew members to Jellyfin roles.