From bd67fa2711c83fcdf3072ed6ad35fd13bab8a173 Mon Sep 17 00:00:00 2001 From: cxfksword <718792+cxfksword@users.noreply.github.com> Date: Sun, 5 Mar 2023 16:10:52 +0800 Subject: [PATCH] Optimize bilibili match --- Jellyfin.Plugin.Danmu.Test/BilibiliTest.cs | 37 ++++++++++++++++++- .../Scrapers/Bilibili/Bilibili.cs | 11 ++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/Jellyfin.Plugin.Danmu.Test/BilibiliTest.cs b/Jellyfin.Plugin.Danmu.Test/BilibiliTest.cs index a0f9e2a..a2af429 100644 --- a/Jellyfin.Plugin.Danmu.Test/BilibiliTest.cs +++ b/Jellyfin.Plugin.Danmu.Test/BilibiliTest.cs @@ -73,7 +73,7 @@ namespace Jellyfin.Plugin.Danmu.Test var item = new Movie { - Name = "异邦人:无皇刃谭" + Name = "扬名立万" }; var list = new List(); @@ -162,5 +162,40 @@ namespace Jellyfin.Plugin.Danmu.Test } + + + [TestMethod] + public void TestAddSeason() + { + var scraperManager = new ScraperManager(loggerFactory); + scraperManager.register(new Bilibili(loggerFactory)); + + var fileSystemStub = new Mock(); + var directoryServiceStub = new Mock(); + var libraryManagerStub = new Mock(); + var libraryManagerEventsHelper = new LibraryManagerEventsHelper(libraryManagerStub.Object, loggerFactory, fileSystemStub.Object, scraperManager); + + var item = new Season + { + Name = "逃避虽可耻但有用", + ProductionYear = 2016, + }; + + var list = new List(); + list.Add(new LibraryEvent { Item = item, EventType = EventType.Add }); + + Task.Run(async () => + { + try + { + await libraryManagerEventsHelper.ProcessQueuedSeasonEvents(list, EventType.Add); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + }).GetAwaiter().GetResult(); + + } } } diff --git a/Jellyfin.Plugin.Danmu/Scrapers/Bilibili/Bilibili.cs b/Jellyfin.Plugin.Danmu/Scrapers/Bilibili/Bilibili.cs index 7d5790a..42182f5 100644 --- a/Jellyfin.Plugin.Danmu/Scrapers/Bilibili/Bilibili.cs +++ b/Jellyfin.Plugin.Danmu/Scrapers/Bilibili/Bilibili.cs @@ -351,6 +351,7 @@ public class Bilibili : AbstractScraper { try { + var isMovieItemType = item is MediaBrowser.Controller.Entities.Movies.Movie; var searchResult = await _api.SearchAsync(searchName, CancellationToken.None).ConfigureAwait(false); if (searchResult != null && searchResult.Result != null) { @@ -364,6 +365,16 @@ public class Bilibili : AbstractScraper var title = media.Title; var pubYear = Jellyfin.Plugin.Danmu.Core.Utils.UnixTimeStampToDateTime(media.PublishTime).Year; + if (isMovieItemType && media.SeasonTypeName != "电影") + { + continue; + } + + if (!isMovieItemType && media.SeasonTypeName == "电影") + { + continue; + } + // 检测标题是否相似(越大越相似) var score = searchName.Distance(title); if (score < 0.7)