feat: compatible with Jellyfin 10.9. close #18

This commit is contained in:
cxfksword
2024-05-12 21:47:22 +08:00
parent 7e2b62de3e
commit 16a67da869
12 changed files with 42 additions and 62 deletions

View File

@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>Jellyfin.Plugin.Danmu</RootNamespace>
<GenerateDocumentationFile>False</GenerateDocumentationFile>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@@ -17,9 +17,12 @@
<ItemGroup>
<PackageReference Include="ComposableAsync.Core" Version="1.3.0" />
<PackageReference Include="Google.Protobuf" Version="3.22.0" />
<PackageReference Include="ILRepack.Lib.MSBuild.Minor" Version="2.1.19-alpha.2" />
<PackageReference Include="Jellyfin.Controller" Version="10.8.0" />
<PackageReference Include="Jellyfin.Model" Version="10.8.0" />
<PackageReference Include="ILRepack.Lib.MSBuild.Task" Version="2.0.32">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Jellyfin.Controller" Version="10.9.0" />
<PackageReference Include="Jellyfin.Model" Version="10.9.0" />
<PackageReference Include="RateLimiter" Version="2.2.0" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />
</ItemGroup>

View File

@@ -1,28 +1,18 @@
using System.Runtime.InteropServices;
using System.Net.Http;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Plugin.Danmu.Core;
using Jellyfin.Plugin.Danmu.Model;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
using MediaBrowser.Controller.Persistence;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Caching.Memory;
using Jellyfin.Plugin.Danmu.Scrapers;

View File

@@ -23,11 +23,12 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
/// </summary>
/// <param name="applicationPaths">Instance of the <see cref="IApplicationPaths"/> interface.</param>
/// <param name="xmlSerializer">Instance of the <see cref="IXmlSerializer"/> interface.</param>
public Plugin(IApplicationPaths applicationPaths, IApplicationHost applicationHost, IXmlSerializer xmlSerializer)
public Plugin(IApplicationPaths applicationPaths, IApplicationHost applicationHost, IXmlSerializer xmlSerializer, ScraperManager scraperManager)
: base(applicationPaths, xmlSerializer)
{
Instance = this;
Scrapers = applicationHost.GetExports<AbstractScraper>(false).Where(o => o != null).OrderBy(x => x.DefaultOrder).ToList().AsReadOnly();
scraperManager.Register(Scrapers);
}
/// <inheritdoc />

View File

@@ -1,26 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Session;
using Microsoft.Extensions.Logging;
using MediaBrowser.Common.Net;
using Jellyfin.Plugin.Danmu.Model;
using MediaBrowser.Model.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.IO;
using MediaBrowser.Controller.Providers;
using Jellyfin.Plugin.Danmu.Core.Extensions;
using Microsoft.Extensions.Hosting;
using System.Threading;
namespace Jellyfin.Plugin.Danmu
{
public class PluginStartup : IServerEntryPoint, IDisposable
public class PluginStartup : IHostedService, IDisposable
{
private readonly ILibraryManager _libraryManager;
private readonly LibraryManagerEventsHelper _libraryManagerEventsHelper;
@@ -47,7 +41,7 @@ namespace Jellyfin.Plugin.Danmu
_libraryManagerEventsHelper = libraryManagerEventsHelper;
}
public Task RunAsync()
public Task StartAsync(CancellationToken cancellationToken)
{
_libraryManager.ItemAdded += LibraryManagerItemAdded;
_libraryManager.ItemUpdated += LibraryManagerItemUpdated;
@@ -127,5 +121,9 @@ namespace Jellyfin.Plugin.Danmu
}
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
}

View File

@@ -1,8 +1,6 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Jellyfin.Plugin.Danmu.Core.Extensions;
using MediaBrowser.Common;
using Microsoft.Extensions.Logging;
namespace Jellyfin.Plugin.Danmu.Scrapers;
@@ -15,17 +13,18 @@ public class ScraperManager
public ScraperManager(ILoggerFactory logManager)
{
log = logManager.CreateLogger<ScraperManager>();
if (Plugin.Instance?.Scrapers != null)
{
this._scrapers.AddRange(Plugin.Instance.Scrapers);
}
}
public void register(AbstractScraper scraper)
public void Register(AbstractScraper scraper)
{
this._scrapers.Add(scraper);
}
public void Register(IList<AbstractScraper> scrapers)
{
this._scrapers.AddRange(scrapers);
}
public ReadOnlyCollection<AbstractScraper> All()
{
// 存在配置时,根据配置调整源顺序,并删除不启用的源

View File

@@ -1,19 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.IO;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using MediaBrowser.Controller.Persistence;
using Jellyfin.Plugin.Danmu.Scrapers;
using Jellyfin.Plugin.Danmu.Scrapers.Bilibili;
using Jellyfin.Plugin.Danmu.Scrapers.Dandan;
using MediaBrowser.Common;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Subtitles;
namespace Jellyfin.Plugin.Danmu
{
@@ -21,21 +12,21 @@ namespace Jellyfin.Plugin.Danmu
public class ServiceRegistrator : IPluginServiceRegistrator
{
/// <inheritdoc />
public void RegisterServices(IServiceCollection serviceCollection)
public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost)
{
serviceCollection.AddSingleton<ISubtitleProvider, DanmuSubtitleProvider>();
serviceCollection.AddSingleton<Jellyfin.Plugin.Danmu.Core.IFileSystem>((ctx) =>
{
return new Jellyfin.Plugin.Danmu.Core.FileSystem();
});
serviceCollection.AddSingleton<ScraperManager>((ctx) =>
serviceCollection.AddSingleton((ctx) =>
{
return new ScraperManager(ctx.GetRequiredService<ILoggerFactory>());
});
serviceCollection.AddSingleton<LibraryManagerEventsHelper>((ctx) =>
serviceCollection.AddSingleton((ctx) =>
{
return new LibraryManagerEventsHelper(ctx.GetRequiredService<ILibraryManager>(), ctx.GetRequiredService<ILoggerFactory>(), ctx.GetRequiredService<Jellyfin.Plugin.Danmu.Core.IFileSystem>(), ctx.GetRequiredService<ScraperManager>());
});
}
}
}