diff --git a/Jellyfin.Plugin.MetaShark.Test/EpisodeProviderTest.cs b/Jellyfin.Plugin.MetaShark.Test/EpisodeProviderTest.cs index 41ff6ff..4ddb907 100644 --- a/Jellyfin.Plugin.MetaShark.Test/EpisodeProviderTest.cs +++ b/Jellyfin.Plugin.MetaShark.Test/EpisodeProviderTest.cs @@ -42,6 +42,9 @@ namespace Jellyfin.Plugin.MetaShark.Test indexNumber = provider.GuessEpisodeNumber("Fullmetal Alchemist Brotherhood.E05.1920X1080"); Assert.AreEqual(indexNumber, 5); + + indexNumber = provider.GuessEpisodeNumber("[SAIO-Raws] Neon Genesis Evangelion 05 [BD 1440x1080 HEVC-10bit OPUSx2 ASSx2].mkv"); + Assert.AreEqual(indexNumber, 5); } } diff --git a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj index 7e473a4..f78e44e 100644 --- a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj +++ b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj @@ -14,6 +14,8 @@ + + diff --git a/Jellyfin.Plugin.MetaShark/Api/DoubanApi.cs b/Jellyfin.Plugin.MetaShark/Api/DoubanApi.cs index 8455117..ed7dfb9 100644 --- a/Jellyfin.Plugin.MetaShark/Api/DoubanApi.cs +++ b/Jellyfin.Plugin.MetaShark/Api/DoubanApi.cs @@ -354,7 +354,7 @@ namespace Jellyfin.Plugin.MetaShark.Api list.Add(celebrity); } - _memoryCache.Set>(cacheKey, list.Take(15).ToList(), expiredOption); + _memoryCache.Set>(cacheKey, list, expiredOption); return list; } diff --git a/Jellyfin.Plugin.MetaShark/Core/StringExtension.cs b/Jellyfin.Plugin.MetaShark/Core/StringExtension.cs index 36a42e1..6f42527 100644 --- a/Jellyfin.Plugin.MetaShark/Core/StringExtension.cs +++ b/Jellyfin.Plugin.MetaShark/Core/StringExtension.cs @@ -56,7 +56,7 @@ namespace Jellyfin.Plugin.MetaShark.Core var match = reg.Match(text); if (match.Success && match.Groups.Count > 1) { - return match.Groups[1].Value; + return match.Groups[1].Value.Trim(); } return string.Empty; diff --git a/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs index 638333c..ac04833 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs @@ -78,6 +78,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers // 修正anime命名格式导致的episodeNumber错误 var fileName = Path.GetFileName(info.Path) ?? string.Empty; var newEpisodeNumber = this.GuessEpisodeNumber(fileName); + this.Log("GuessEpisodeNumber: fileName: {0} episodeNumber: {1}", fileName, newEpisodeNumber); if (newEpisodeNumber.HasValue && newEpisodeNumber != episodeNumber) { episodeNumber = newEpisodeNumber; @@ -88,7 +89,6 @@ namespace Jellyfin.Plugin.MetaShark.Providers ParentIndexNumber = seasonNumber, IndexNumber = episodeNumber }; - this.Log("GuessEpisodeNumber: fileName: {0} episodeNumber: {1}", fileName, newEpisodeNumber); } @@ -156,14 +156,17 @@ namespace Jellyfin.Plugin.MetaShark.Providers episodeIndex = result.Value.ToInt(); } - foreach (var regex in EpisodeFileNameRegex) + if (!episodeIndex.HasValue) { - if (!regex.IsMatch(fileName)) - continue; - if (!int.TryParse(regex.Match(fileName).Groups[1].Value.Trim('.'), out var index)) - continue; - episodeIndex = index; - break; + foreach (var regex in EpisodeFileNameRegex) + { + if (!regex.IsMatch(fileName)) + continue; + if (!int.TryParse(regex.Match(fileName).Groups[1].Value.Trim('.'), out var index)) + continue; + episodeIndex = index; + break; + } } if (episodeIndex > 1000) diff --git a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs index 2251bdd..ff7bf47 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs @@ -140,7 +140,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers result.Item = movie; result.QueriedById = true; result.HasMetadata = true; - subject.Celebrities.ForEach(c => result.AddPerson(new PersonInfo + subject.Celebrities.Take(this._config.MaxCastMembers).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, Type = c.RoleType, diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs index 62500c4..6b6daba 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs @@ -122,7 +122,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers result.Item = movie; result.HasMetadata = true; - subject.Celebrities.ForEach(c => result.AddPerson(new PersonInfo + subject.Celebrities.Take(this._config.MaxCastMembers).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, Type = c.RoleType, diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs index 808b1b5..4ab02c7 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs @@ -139,7 +139,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers result.Item = item; result.QueriedById = true; result.HasMetadata = true; - subject.Celebrities.ForEach(c => result.AddPerson(new PersonInfo + subject.Celebrities.Take(this._config.MaxCastMembers).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, Type = c.RoleType,