Optimize code

This commit is contained in:
cxfksword 2022-11-10 17:14:01 +08:00
parent 367dcf882c
commit a49dcc71dc
3 changed files with 27 additions and 12 deletions

View File

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

View File

@ -64,7 +64,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers
}
var seriesName = series.Name;
// 存在tmdbid尝试从tmdb获取对应季的年份信息用于从豆瓣搜索对应季数据
// 没有季id存在tmdbid尝试从tmdb获取对应季的年份信息用于从豆瓣搜索对应季数据
if (string.IsNullOrEmpty(seasonSid))
{
var seasonYear = 0;
@ -131,7 +131,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers
}
// 从豆瓣获取不到季信息直接使用series信息
// 从豆瓣获取不到季信息直接使用series信息(还是不替换旧有信息好??)
result.Item = new Season
{
ProviderIds = new Dictionary<string, string> { { DoubanProviderId, sid } },

View File

@ -126,17 +126,10 @@ namespace Jellyfin.Plugin.MetaShark.Providers
item.SetProviderId(MetadataProvider.Imdb, subject.Imdb);
if (string.IsNullOrEmpty(tmdbId))
{
// 通过imdb获取TMDB id (豆瓣的imdb id可能是旧的需要先从omdb接口获取最新的imdb id
var omdbItem = await this._omdbApi.GetByImdbID(subject.Imdb, cancellationToken).ConfigureAwait(false);
if (omdbItem != null)
tmdbId = await this.GetTmdbIdByImdbAsync(subject.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
if (!string.IsNullOrEmpty(tmdbId))
{
var findResult = await this._tmdbApi.FindByExternalIdAsync(omdbItem.ImdbID, FindExternalSource.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
if (findResult?.TvResults != null && findResult.TvResults.Count > 0)
{
tmdbId = $"{findResult.TvResults[0].Id}";
this.Log($"GetSeriesMetadata found tmdb [id]: {tmdbId} by imdb id: {subject.Imdb}");
item.SetProviderId(MetadataProvider.Tmdb, tmdbId);
}
item.SetProviderId(MetadataProvider.Tmdb, tmdbId);
}
}
}