This commit is contained in:
cxfksword 2022-12-16 00:41:49 +08:00
parent da2ffec151
commit 898a989e68
2 changed files with 30 additions and 17 deletions

View File

@ -32,6 +32,11 @@ namespace Jellyfin.Plugin.MetaShark.Api
public async Task<OmdbItem?> GetByImdbID(string id, CancellationToken cancellationToken) public async Task<OmdbItem?> GetByImdbID(string id, CancellationToken cancellationToken)
{ {
if (!this.IsEnable())
{
return null;
}
var cacheKey = $"GetByImdbID_{id}"; var cacheKey = $"GetByImdbID_{id}";
var expiredOption = new MemoryCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30) }; var expiredOption = new MemoryCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30) };
OmdbItem? item; OmdbItem? item;
@ -69,5 +74,10 @@ namespace Jellyfin.Plugin.MetaShark.Api
_memoryCache.Dispose(); _memoryCache.Dispose();
} }
} }
private bool IsEnable()
{
return Plugin.Instance?.Configuration.EnableTmdb ?? true;
}
} }
} }

View File

@ -230,7 +230,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers
return null; return null;
} }
// 通过imdb获取tmdbId(豆瓣的imdb id可能是旧的需要先从omdb接口获取最新的imdb id)
protected async Task<string?> GetTmdbIdByImdbAsync(string imdb, string language, CancellationToken cancellationToken) protected async Task<string?> GetTmdbIdByImdbAsync(string imdb, string language, CancellationToken cancellationToken)
{ {
if (string.IsNullOrEmpty(imdb)) if (string.IsNullOrEmpty(imdb))
@ -238,27 +238,30 @@ namespace Jellyfin.Plugin.MetaShark.Providers
return null; return null;
} }
// 豆瓣的imdb id可能是旧的需要先从omdb接口获取最新的imdb id
var omdbItem = await this._omdbApi.GetByImdbID(imdb, cancellationToken).ConfigureAwait(false); var omdbItem = await this._omdbApi.GetByImdbID(imdb, cancellationToken).ConfigureAwait(false);
if (omdbItem != null) if (omdbItem != null)
{ {
var findResult = await this._tmdbApi.FindByExternalIdAsync(omdbItem.ImdbID, TMDbLib.Objects.Find.FindExternalSource.Imdb, language, cancellationToken).ConfigureAwait(false); imdb = omdbItem.ImdbID;
if (findResult?.MovieResults != null && findResult.MovieResults.Count > 0)
{
var tmdbId = findResult.MovieResults[0].Id;
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
return $"{tmdbId}";
}
if (findResult?.TvResults != null && findResult.TvResults.Count > 0)
{
var tmdbId = findResult.TvResults[0].Id;
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
return $"{tmdbId}";
}
} }
// 接口出错,返回旧的 // 通过imdb获取tmdbId
return imdb; var findResult = await this._tmdbApi.FindByExternalIdAsync(imdb, TMDbLib.Objects.Find.FindExternalSource.Imdb, language, cancellationToken).ConfigureAwait(false);
if (findResult?.MovieResults != null && findResult.MovieResults.Count > 0)
{
var tmdbId = findResult.MovieResults[0].Id;
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
return $"{tmdbId}";
}
if (findResult?.TvResults != null && findResult.TvResults.Count > 0)
{
var tmdbId = findResult.TvResults[0].Id;
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
return $"{tmdbId}";
}
return null;
} }