diff --git a/API.Tests/Services/ScrobblingServiceTests.cs b/API.Tests/Services/ScrobblingServiceTests.cs index 2d40c5211..60bf09447 100644 --- a/API.Tests/Services/ScrobblingServiceTests.cs +++ b/API.Tests/Services/ScrobblingServiceTests.cs @@ -7,6 +7,8 @@ public class ScrobblingServiceTests { [Theory] [InlineData("https://anilist.co/manga/35851/Byeontaega-Doeja/", 35851)] + [InlineData("https://anilist.co/manga/30105", 30105)] + [InlineData("https://anilist.co/manga/30105/Kekkaishi/", 30105)] public void CanParseWeblink(string link, long expectedId) { Assert.Equal(ScrobblingService.ExtractId(link, ScrobblingService.AniListWeblinkWebsite), expectedId); diff --git a/API/Services/Plus/ScrobblingService.cs b/API/Services/Plus/ScrobblingService.cs index 4f679fb2b..38d27fbc5 100644 --- a/API/Services/Plus/ScrobblingService.cs +++ b/API/Services/Plus/ScrobblingService.cs @@ -829,12 +829,12 @@ public class ScrobblingService : IScrobblingService if (!webLink.StartsWith(website)) continue; var tokens = webLink.Split(website)[1].Split('/'); var value = tokens[index]; - if (typeof(T) == typeof(int)) + if (typeof(T) == typeof(int?)) { if (int.TryParse(value, out var intValue)) return (T)(object)intValue; } - else if (typeof(T) == typeof(long)) + else if (typeof(T) == typeof(long?)) { if (long.TryParse(value, out var longValue)) return (T)(object)longValue; diff --git a/API/Services/Tasks/Scanner/Parser/Parser.cs b/API/Services/Tasks/Scanner/Parser/Parser.cs index efc11a215..0b71ec67b 100644 --- a/API/Services/Tasks/Scanner/Parser/Parser.cs +++ b/API/Services/Tasks/Scanner/Parser/Parser.cs @@ -109,9 +109,9 @@ public static class Parser new Regex( @"(?.*)(\b|_)v(?\d+-?\d+)( |_)", MatchOptions, RegexTimeout), - // NEEDLESS_Vol.4_-Simeon_6_v2[SugoiSugoi].rar + // Nagasarete Airantou - Vol. 30 Ch. 187.5 - Vol.31 Omake new Regex( - @"(?.*)(\b|_)(?!\[)(vol\.?)(?\d+(-\d+)?)(?!\])", + @"^(?.+?)(\s*Chapter\s*\d+)?(\s|_|\-\s)+(Vol(ume)?\.?(\s|_)?)(?\d+(\.\d+)?)(.+?|$)", MatchOptions, RegexTimeout), // Historys Strongest Disciple Kenichi_v11_c90-98.zip or Dance in the Vampire Bund v16-17 new Regex( @@ -137,6 +137,7 @@ public static class Parser new Regex( @"(vol_)(?\d+(\.\d)?)", MatchOptions, RegexTimeout), + // Chinese Volume: 第n卷 -> Volume n, 第n册 -> Volume n, 幽游白书完全版 第03卷 天下 or 阿衰online 第1册 new Regex( @"第(?\d+)(卷|册)",