From bf97db9fb4309e9c182edee40c0b3ea1987dc709 Mon Sep 17 00:00:00 2001 From: cxfksword <718792+cxfksword@users.noreply.github.com> Date: Sat, 13 May 2023 11:17:48 +0800 Subject: [PATCH] Fix wrong imdb id --- .../Providers/BaseProvider.cs | 26 ++++++++++++++----- .../Providers/MovieProvider.cs | 4 ++- .../Providers/SeriesProvider.cs | 5 ++-- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs index 7f05a16..b56ae2a 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs @@ -317,13 +317,6 @@ namespace Jellyfin.Plugin.MetaShark.Providers return null; } - // 豆瓣的imdb id可能是旧的,需要先从omdb接口获取最新的imdb id - var omdbItem = await this._omdbApi.GetByImdbID(imdb, cancellationToken).ConfigureAwait(false); - if (!string.IsNullOrEmpty(omdbItem?.ImdbID)) - { - imdb = omdbItem.ImdbID; - } - // 通过imdb获取tmdbId var findResult = await this._tmdbApi.FindByExternalIdAsync(imdb, TMDbLib.Objects.Find.FindExternalSource.Imdb, language, cancellationToken).ConfigureAwait(false); if (findResult?.MovieResults != null && findResult.MovieResults.Count > 0) @@ -343,6 +336,25 @@ namespace Jellyfin.Plugin.MetaShark.Providers return null; } + /// + /// 豆瓣的imdb id可能是旧的,需要先从omdb接口获取最新的imdb id + /// + protected async Task CheckNewImdbID(string imdb, CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(imdb)) + { + return imdb; + } + + var omdbItem = await this._omdbApi.GetByImdbID(imdb, cancellationToken).ConfigureAwait(false); + if (!string.IsNullOrEmpty(omdbItem?.ImdbID)) + { + imdb = omdbItem.ImdbID; + } + + return imdb; + } + public int? GuessSeasonNumberByDirectoryName(string path) { diff --git a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs index 07d9d20..5e4c9cb 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs @@ -131,7 +131,9 @@ namespace Jellyfin.Plugin.MetaShark.Providers }; if (!string.IsNullOrEmpty(subject.Imdb)) { - movie.SetProviderId(MetadataProvider.Imdb, subject.Imdb); + var newImdbId = await this.CheckNewImdbID(subject.Imdb, cancellationToken).ConfigureAwait(false); + subject.Imdb = newImdbId; + movie.SetProviderId(MetadataProvider.Imdb, newImdbId); // 通过imdb获取TMDB id var newTmdbId = await this.GetTmdbIdByImdbAsync(subject.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs index 81b59bb..7860dec 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs @@ -117,7 +117,6 @@ namespace Jellyfin.Plugin.MetaShark.Providers ProductionYear = subject.Year, HomePageUrl = "https://www.douban.com", Genres = subject.Genres, - // ProductionLocations = [x?.Country], PremiereDate = subject.ScreenTime, Tagline = string.Empty, }; @@ -125,7 +124,9 @@ namespace Jellyfin.Plugin.MetaShark.Providers // 设置imdb元数据 if (!string.IsNullOrEmpty(subject.Imdb)) { - item.SetProviderId(MetadataProvider.Imdb, subject.Imdb); + var newImdbId = await this.CheckNewImdbID(subject.Imdb, cancellationToken).ConfigureAwait(false); + subject.Imdb = newImdbId; + item.SetProviderId(MetadataProvider.Imdb, newImdbId); } // 搜索匹配tmdbId