Add tmdb api host config

This commit is contained in:
cxfksword 2022-12-14 15:28:30 +08:00
parent d3e839ec0e
commit b7ee0b956d
6 changed files with 67 additions and 3 deletions

View File

@ -0,0 +1,53 @@
using Jellyfin.Plugin.MetaShark.Api;
using Jellyfin.Plugin.MetaShark.Core;
using Jellyfin.Plugin.MetaShark.Providers;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using Microsoft.Extensions.Logging;
using Moq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jellyfin.Plugin.MetaShark.Test
{
[TestClass]
public class SeasonProviderTest
{
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
builder.AddSimpleConsole(options =>
{
options.IncludeScopes = true;
options.SingleLine = true;
options.TimestampFormat = "hh:mm:ss ";
}));
[TestMethod]
public void TestGetMetadata()
{
var info = new SeasonInfo() { Name = "第 18 季", IndexNumber = 18, SeriesProviderIds = new Dictionary<string, string>() { { BaseProvider.DoubanProviderId, "2059529" }, { MetadataProvider.Tmdb.ToString(), "34860" } } };
var doubanApi = new DoubanApi(loggerFactory);
var tmdbApi = new TmdbApi(loggerFactory);
var omdbApi = new OmdbApi(loggerFactory);
var httpClientFactory = new DefaultHttpClientFactory();
var libraryManagerStub = new Mock<ILibraryManager>();
Task.Run(async () =>
{
var provider = new SeasonProvider(httpClientFactory, loggerFactory, libraryManagerStub.Object, doubanApi, tmdbApi, omdbApi);
var result = await provider.GetMetadata(info, CancellationToken.None);
Assert.IsNotNull(result);
var str = result.ToJson();
Console.WriteLine(result.ToJson());
}).GetAwaiter().GetResult();
}
}
}

View File

@ -23,6 +23,7 @@ namespace Jellyfin.Plugin.MetaShark.Api
public class TmdbApi : IDisposable
{
public const string DEFAULT_API_KEY = "4219e299c89411838049ab0dab19ebd5";
public const string DEFAULT_API_HOST = "api.tmdb.org";
private const int CacheDurationInHours = 1;
private readonly ILogger<TmdbApi> _logger;
private readonly IMemoryCache _memoryCache;
@ -37,7 +38,8 @@ namespace Jellyfin.Plugin.MetaShark.Api
_memoryCache = new MemoryCache(new MemoryCacheOptions());
var config = Plugin.Instance?.Configuration;
var apiKey = config == null || string.IsNullOrEmpty(config.TmdbApiKey) ? DEFAULT_API_KEY : config.TmdbApiKey;
_tmDbClient = new TMDbClient(apiKey);
var host = config == null || string.IsNullOrEmpty(config.TmdbHost) ? DEFAULT_API_HOST : config.TmdbHost;
_tmDbClient = new TMDbClient(apiKey, true, host);
_tmDbClient.RequestTimeout = TimeSpan.FromSeconds(10);
// Not really interested in NotFoundException
_tmDbClient.ThrowApiExceptions = false;

View File

@ -35,6 +35,8 @@ public class PluginConfiguration : BasePluginConfiguration
public string TmdbApiKey { get; set; } = string.Empty;
public string TmdbHost { get; set; } = string.Empty;
public string DoubanCookies { get; set; } = string.Empty;
public int MaxCastMembers { get; set; } = 15;

View File

@ -53,6 +53,12 @@
<input id="TmdbApiKey" name="TmdbApiKey" type="text" is="emby-input" />
<div class="fieldDescription">填写自定义Api Key不填写会使用默认api key.(需重启才能生效)</div>
</div>
<div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="TmdbHost">Api Host</label>
<input id="TmdbHost" name="TmdbHost" type="text" is="emby-input"
placeholder="api.tmdb.org" />
<div class="fieldDescription">填写Api域名默认api.tmdb.org.(需重启才能生效)</div>
</div>
</fieldset>
<button is="emby-button" type="submit" class="raised button-submit block emby-button">
<span>Save</span>
@ -75,6 +81,7 @@
document.querySelector('#EnableTmdb').checked = config.EnableTmdb;
document.querySelector('#EnableTmdbSearch').checked = config.EnableTmdbSearch;
document.querySelector('#TmdbApiKey').value = config.TmdbApiKey;
document.querySelector('#TmdbHost').value = config.TmdbHost;
Dashboard.hideLoadingMsg();
});
});
@ -87,6 +94,7 @@
config.EnableTmdb = document.querySelector('#EnableTmdb').checked;
config.EnableTmdbSearch = document.querySelector('#EnableTmdbSearch').checked;
config.TmdbApiKey = document.querySelector('#TmdbApiKey').value;
config.TmdbHost = document.querySelector('#TmdbHost').value;
ApiClient.updatePluginConfiguration(TemplateConfig.pluginUniqueId, config).then(function (result) {
Dashboard.processPluginConfigurationUpdateResult(result);
});

View File

@ -7,7 +7,6 @@
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Nullable>enable</Nullable>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@ -17,7 +17,7 @@ namespace TMDbLib.Client
public partial class TMDbClient : IDisposable
{
private const string ApiVersion = "3";
private const string ProductionUrl = "api.tmdb.org";
private const string ProductionUrl = "api.themoviedb.org";
private readonly ITMDbSerializer _serializer;
private RestClient _client;