diff --git a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs index 1e9f6b2..d6ad136 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs @@ -229,6 +229,28 @@ namespace Jellyfin.Plugin.MetaShark.Providers return null; } + // 通过imdb获取tmdbId + protected async Task 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; + } diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs index 3c1f37b..7fbd844 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs @@ -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 { { DoubanProviderId, sid } }, diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs index c474cb6..24e3a6a 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs @@ -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); } } }