From a51c14536116dcf14b6f467421ee94d329869933 Mon Sep 17 00:00:00 2001 From: cxfksword <718792+cxfksword@users.noreply.github.com> Date: Sat, 18 Mar 2023 23:37:01 +0800 Subject: [PATCH] Optimize identity --- .../Providers/BaseProvider.cs | 12 ++++++++---- .../Providers/MovieProvider.cs | 16 ++++++++-------- .../Providers/SeriesProvider.cs | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs index 1d03054..10f0a93 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs @@ -492,14 +492,18 @@ namespace Jellyfin.Plugin.MetaShark.Providers } - protected string GetOriginalFileName(ItemLookupInfo info) { - // movie放在文件夹中时,应该使用文件夹名 switch (info) { - case SeriesInfo: - case SeasonInfo: + case MovieInfo: + // 当movie放在文件夹中并只有一部影片时, info.name是根据文件夹名解析的,但info.Path是影片的路径名 + // 当movie放在文件夹中并有多部影片时,info.Name和info.Path都是具体的影片 + var directoryName = Path.GetFileName(Path.GetDirectoryName(info.Path)); + if (directoryName != null && directoryName.Contains(info.Name)) + { + return directoryName; + } return Path.GetFileNameWithoutExtension(info.Path) ?? info.Name; default: return Path.GetFileNameWithoutExtension(info.Path) ?? info.Name; diff --git a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs index 473e917..d164c85 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs @@ -90,16 +90,9 @@ namespace Jellyfin.Plugin.MetaShark.Providers /// public async Task> GetMetadata(MovieInfo info, CancellationToken cancellationToken) { - this.Log($"GetMovieMetadata of [name]: {info.Name}"); + this.Log($"GetMovieMetadata of [name]: {info.Name} IsAutomated: {info.IsAutomated}"); var result = new MetadataResult(); - // 处理extras影片 - var extraResult = this.HandleExtraType(info); - if (extraResult != null) - { - return extraResult; - } - // 使用刷新元数据时,providerIds会保留旧有值,只有识别/新增才会没值 var sid = info.GetProviderId(DoubanProviderId); var tmdbId = info.GetProviderId(MetadataProvider.Tmdb); @@ -109,6 +102,13 @@ namespace Jellyfin.Plugin.MetaShark.Providers var hasDoubanMeta = metaSource != MetaSource.Tmdb && !string.IsNullOrEmpty(sid); if (!hasDoubanMeta && !hasTmdbMeta) { + // 处理extras影片 + var extraResult = this.HandleExtraType(info); + if (extraResult != null) + { + return extraResult; + } + // 自动扫描搜索匹配元数据 sid = await this.GuessByDoubanAsync(info, cancellationToken).ConfigureAwait(false); } diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs index 9130c84..0f98866 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs @@ -81,7 +81,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers /// public async Task> GetMetadata(SeriesInfo info, CancellationToken cancellationToken) { - this.Log($"GetSeriesMetadata of [name]: {info.Name} [providerIds]: {info.ProviderIds.ToJson()} IsAutomated: {info.IsAutomated}"); + this.Log($"GetSeriesMetadata of [name]: {info.Name} IsAutomated: {info.IsAutomated}"); var result = new MetadataResult(); var sid = info.GetProviderId(DoubanProviderId);