From 9af8599fad6f0b7385392f0c5948ff12899ad882 Mon Sep 17 00:00:00 2001 From: cxfksword <718792+cxfksword@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:36:22 +0800 Subject: [PATCH] Optimize anime identity --- Jellyfin.Plugin.MetaShark.Test/ParseNameTest.cs | 5 +++++ Jellyfin.Plugin.MetaShark/Core/NameParser.cs | 4 +++- Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Jellyfin.Plugin.MetaShark.Test/ParseNameTest.cs b/Jellyfin.Plugin.MetaShark.Test/ParseNameTest.cs index b48461a..32b9a08 100644 --- a/Jellyfin.Plugin.MetaShark.Test/ParseNameTest.cs +++ b/Jellyfin.Plugin.MetaShark.Test/ParseNameTest.cs @@ -190,6 +190,11 @@ namespace Jellyfin.Plugin.MetaShark.Test Assert.AreEqual(parseResult.ParentIndexNumber, null); Assert.AreEqual(parseResult.IndexNumber, 1); + fileName = "[異域字幕組][她和她的貓 - Everything Flows -][She and Her Cat - Everything Flows -][01][720p][繁體]"; + parseResult = NameParser.Parse(fileName); + Assert.AreEqual(parseResult.Name, "她和她的貓 - Everything Flows"); + Assert.AreEqual(parseResult.ParentIndexNumber, null); + Assert.AreEqual(parseResult.IndexNumber, 1); // anime特典 fileName = "[KissSub][Steins;Gate][SP][GB_BIG5_JP][BDrip][1080P][HEVC] 边界曲面的缺失之环"; diff --git a/Jellyfin.Plugin.MetaShark/Core/NameParser.cs b/Jellyfin.Plugin.MetaShark/Core/NameParser.cs index 385f5aa..4d71c8a 100644 --- a/Jellyfin.Plugin.MetaShark/Core/NameParser.cs +++ b/Jellyfin.Plugin.MetaShark/Core/NameParser.cs @@ -18,6 +18,8 @@ namespace Jellyfin.Plugin.MetaShark.Core private static readonly Regex fixSeasonNumberReg = new Regex(@"(\[|\.)S(\d{1,2})(\]|\.)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static readonly Regex startWithHyphenCharReg = new Regex(@"^[-~~]", RegexOptions.Compiled); + public static ParseNameResult Parse(string fileName, bool isTvSeries = false) { var parseResult = new ParseNameResult(); @@ -35,7 +37,7 @@ namespace Jellyfin.Plugin.MetaShark.Core { var firstString = item.Value.Substring(0, firstSpaceIndex); var lastString = item.Value.Substring(firstSpaceIndex + 1); - if (firstString.HasChinese() && !lastString.HasChinese()) + if (firstString.HasChinese() && !lastString.HasChinese() && !startWithHyphenCharReg.IsMatch(lastString)) { parseResult.ChineseName = CleanName(firstString); parseResult.Name = CleanName(lastString); diff --git a/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs index 3e7b2f7..9df9242 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/EpisodeProvider.cs @@ -139,7 +139,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers var fileName = Path.GetFileNameWithoutExtension(info.Path) ?? info.Name; var parseResult = NameParser.Parse(fileName); info.Year = parseResult.Year; - info.Name = parseResult.Name; + info.Name = parseResult.ChineseName ?? parseResult.Name; // 没有season级目录或文件命名不规范时,ParentIndexNumber会为null if (info.ParentIndexNumber is null)