From 1b547f7aaf5b4aaffbea75936e17b66c6921d99c Mon Sep 17 00:00:00 2001 From: cxfksword <718792+cxfksword@users.noreply.github.com> Date: Sun, 12 May 2024 17:15:46 +0800 Subject: [PATCH] Compatible with Jellyfin 10.9. #76 --- .github/workflows/beta.yaml | 6 ++--- .github/workflows/build.yaml | 2 +- .github/workflows/publish.yaml | 6 ++--- AnitomySharp/AnitomySharp.csproj | 2 +- .../Jellyfin.Plugin.MetaShark.Test.csproj | 2 +- .../Jellyfin.Plugin.MetaShark.csproj | 11 +++++--- .../Providers/BaseProvider.cs | 6 ++--- .../Providers/MovieProvider.cs | 7 +++--- .../Providers/SeasonProvider.cs | 3 ++- .../Providers/SeriesProvider.cs | 9 ++++--- .../ServiceRegistrator.cs | 25 ++++++------------- README.md | 8 +++--- 12 files changed, 41 insertions(+), 46 deletions(-) diff --git a/.github/workflows/beta.yaml b/.github/workflows/beta.yaml index bdf331a..ba8ce63 100644 --- a/.github/workflows/beta.yaml +++ b/.github/workflows/beta.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: env: - dotnet-version: 6.0.x + dotnet-version: 8.0.x python-version: 3.8 project: Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj artifact: metashark @@ -36,9 +36,9 @@ jobs: - name: Build run: | dotnet restore ${{ env.project }} --no-cache - dotnet publish --nologo --no-restore --configuration=Release --framework=net6.0 ${{ env.project }} + dotnet publish --nologo --no-restore --configuration=Release --framework=net8.0 ${{ env.project }} mkdir -p artifacts - cp ./Jellyfin.Plugin.MetaShark/bin/Release/net6.0/Jellyfin.Plugin.MetaShark.dll ./artifacts/ + cp ./Jellyfin.Plugin.MetaShark/bin/Release/net8.0/Jellyfin.Plugin.MetaShark.dll ./artifacts/ - name: Upload artifact uses: actions/upload-artifact@v3 with: diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 889a178..293fba8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-dotnet@v3 id: dotnet with: - dotnet-version: 6.0.x + dotnet-version: 8.0.x - name: Change default dotnet version run: | echo '{"sdk":{"version": "${{ steps.dotnet.outputs.dotnet-version }}"}}' > ./global.json diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 301405a..9494e79 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -5,7 +5,7 @@ on: tags: ["*"] env: - dotnet-version: 6.0.x + dotnet-version: 8.0.x python-version: 3.8 project: Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj artifact: metashark @@ -41,9 +41,9 @@ jobs: - name: Build run: | dotnet restore ${{ env.project }} --no-cache - dotnet publish --nologo --no-restore --configuration=Release --framework=net6.0 -p:Version=${{steps.vars.outputs.VERSION}} ${{ env.project }} + dotnet publish --nologo --no-restore --configuration=Release --framework=net8.0 -p:Version=${{steps.vars.outputs.VERSION}} ${{ env.project }} mkdir -p artifacts - zip -j ./artifacts/${{ env.artifact }}_${{steps.vars.outputs.VERSION}}.zip ./Jellyfin.Plugin.MetaShark/bin/Release/net6.0/Jellyfin.Plugin.MetaShark.dll + zip -j ./artifacts/${{ env.artifact }}_${{steps.vars.outputs.VERSION}}.zip ./Jellyfin.Plugin.MetaShark/bin/Release/net8.0/Jellyfin.Plugin.MetaShark.dll - name: Generate manifest run: python3 ./scripts/generate_manifest.py ./artifacts/${{ env.artifact }}_${{steps.vars.outputs.VERSION}}.zip ${GITHUB_REF#refs/*/} env: diff --git a/AnitomySharp/AnitomySharp.csproj b/AnitomySharp/AnitomySharp.csproj index eb7f21b..c375cd6 100644 --- a/AnitomySharp/AnitomySharp.csproj +++ b/AnitomySharp/AnitomySharp.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 true AnitomySharp.NET6 0.4.0 diff --git a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj index 110ee80..4e111b4 100644 --- a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj +++ b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj @@ -1,6 +1,6 @@ - net6.0 + net8.0 enable enable false diff --git a/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj b/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj index cbc3b63..2d0a602 100644 --- a/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj +++ b/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj @@ -1,6 +1,6 @@  - net6.0 + net8.0 Jellyfin.Plugin.MetaShark False true @@ -21,9 +21,12 @@ - - - + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + diff --git a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs index adce066..7ddf486 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/BaseProvider.cs @@ -125,13 +125,13 @@ namespace Jellyfin.Plugin.MetaShark.Providers item = result.Where(x => x.Year == info.Year && x.Name == searchName).FirstOrDefault(); if (item != null) { - this.Log($"GuessByDouban found -> {item.Name}({item.Sid}) (suggest)"); + this.Log($"Found douban [id]: {item.Name}({item.Sid}) (suggest)"); return item.Sid; } item = result.Where(x => x.Year == info.Year).FirstOrDefault(); if (item != null) { - this.Log($"GuessByDouban found -> {item.Name}({item.Sid}) (suggest)"); + this.Log($"Found douban [id]: {item.Name}({item.Sid}) (suggest)"); return item.Sid; } } @@ -169,7 +169,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers item = result.Where(x => x.Category == cat).FirstOrDefault(); if (item != null) { - this.Log($"GuessByDouban found -> {item.Name}({item.Sid})"); + this.Log($"Found douban [id] by first match: {item.Name}({item.Sid})"); return item.Sid; } diff --git a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs index cad287c..228e17a 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/MovieProvider.cs @@ -7,6 +7,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using AngleSharp.Text; +using Jellyfin.Data.Enums; using Jellyfin.Plugin.MetaShark.Api; using Jellyfin.Plugin.MetaShark.Core; using Jellyfin.Plugin.MetaShark.Model; @@ -182,7 +183,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers subject.LimitDirectorCelebrities.Take(Configuration.PluginConfiguration.MAX_CAST_MEMBERS).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, - Type = c.RoleType, + Type = c.RoleType == PersonType.Director ? PersonKind.Director : PersonKind.Actor, Role = c.Role, ImageUrl = this.GetLocalProxyImageUrl(c.Img), ProviderIds = new Dictionary { { DoubanProviderId, c.Id } }, @@ -301,7 +302,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers { Name = actor.Name.Trim(), Role = actor.Character, - Type = PersonType.Actor, + Type = PersonKind.Actor, SortOrder = actor.Order, }; @@ -344,7 +345,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers { Name = person.Name.Trim(), Role = person.Job, - Type = type + Type = type == PersonType.Director ? PersonKind.Director : (type == PersonType.Producer ? PersonKind.Producer : PersonKind.Actor), }; if (!string.IsNullOrWhiteSpace(person.ProfilePath)) diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs index b896e69..d3f8d9d 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeasonProvider.cs @@ -14,6 +14,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; +using Jellyfin.Data.Enums; namespace Jellyfin.Plugin.MetaShark.Providers { @@ -89,7 +90,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers subject.LimitDirectorCelebrities.Take(Configuration.PluginConfiguration.MAX_CAST_MEMBERS).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, - Type = c.RoleType, + Type = c.RoleType == PersonType.Director ? PersonKind.Director : PersonKind.Actor, Role = c.Role, ImageUrl = this.GetLocalProxyImageUrl(c.Img), ProviderIds = new Dictionary { { DoubanProviderId, c.Id } }, diff --git a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs index 6dcd7b6..60ab804 100644 --- a/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs +++ b/Jellyfin.Plugin.MetaShark/Providers/SeriesProvider.cs @@ -1,4 +1,5 @@ -using Jellyfin.Plugin.MetaShark.Api; +using Jellyfin.Data.Enums; +using Jellyfin.Plugin.MetaShark.Api; using Jellyfin.Plugin.MetaShark.Model; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; @@ -152,7 +153,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers subject.LimitDirectorCelebrities.Take(Configuration.PluginConfiguration.MAX_CAST_MEMBERS).ToList().ForEach(c => result.AddPerson(new PersonInfo { Name = c.Name, - Type = c.RoleType, + Type = c.RoleType == PersonType.Director ? PersonKind.Director : PersonKind.Actor, Role = c.Role, ImageUrl = this.GetLocalProxyImageUrl(c.Img), ProviderIds = new Dictionary { { DoubanProviderId, c.Id } }, @@ -356,7 +357,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers { Name = actor.Name.Trim(), Role = actor.Character, - Type = PersonType.Actor, + Type = PersonKind.Actor, SortOrder = actor.Order, }; @@ -400,7 +401,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers { Name = person.Name.Trim(), Role = person.Job, - Type = type + Type = type == PersonType.Director ? PersonKind.Director : (type == PersonType.Producer ? PersonKind.Producer : PersonKind.Actor), }; if (!string.IsNullOrWhiteSpace(person.ProfilePath)) diff --git a/Jellyfin.Plugin.MetaShark/ServiceRegistrator.cs b/Jellyfin.Plugin.MetaShark/ServiceRegistrator.cs index 7c0b590..c771ac1 100644 --- a/Jellyfin.Plugin.MetaShark/ServiceRegistrator.cs +++ b/Jellyfin.Plugin.MetaShark/ServiceRegistrator.cs @@ -1,18 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Jellyfin.Plugin.MetaShark.Api; -using Jellyfin.Plugin.MetaShark.Providers; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Common.Plugins; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.IO; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Plugins; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using MediaBrowser.Controller.Persistence; -using System.Net.Http; namespace Jellyfin.Plugin.MetaShark { @@ -20,21 +10,22 @@ namespace Jellyfin.Plugin.MetaShark public class ServiceRegistrator : IPluginServiceRegistrator { /// - public void RegisterServices(IServiceCollection serviceCollection) + public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost) { - serviceCollection.AddSingleton((ctx) => + + serviceCollection.AddSingleton((ctx) => { return new DoubanApi(ctx.GetRequiredService()); }); - serviceCollection.AddSingleton((ctx) => + serviceCollection.AddSingleton((ctx) => { return new TmdbApi(ctx.GetRequiredService()); }); - serviceCollection.AddSingleton((ctx) => + serviceCollection.AddSingleton((ctx) => { return new OmdbApi(ctx.GetRequiredService()); }); - serviceCollection.AddSingleton((ctx) => + serviceCollection.AddSingleton((ctx) => { return new ImdbApi(ctx.GetRequiredService()); }); diff --git a/README.md b/README.md index 5390060..497dcb5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # jellyfin-plugin-metashark [![release](https://img.shields.io/github/v/release/cxfksword/jellyfin-plugin-metashark)](https://github.com/cxfksword/jellyfin-plugin-metashark/releases) -[![platform](https://img.shields.io/badge/jellyfin-10.8.x-lightgrey?logo=jellyfin)](https://github.com/cxfksword/jellyfin-plugin-metashark/releases) +[![platform](https://img.shields.io/badge/jellyfin-10.8.x|10.9.x-lightgrey?logo=jellyfin)](https://github.com/cxfksword/jellyfin-plugin-metashark/releases) [![license](https://img.shields.io/github/license/cxfksword/jellyfin-plugin-metashark)](https://github.com/cxfksword/jellyfin-plugin-metashark/main/LICENSE) jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TheMovieDb补全缺失的剧集数据。 @@ -14,8 +14,6 @@ jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TheMov ## 安装插件 -只支持最新的`jellyfin 10.8.x`版本 - 添加插件存储库: 国内加速:https://mirror.ghproxy.com/https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest_cn.json @@ -42,7 +40,7 @@ jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TheMov 1. Clone or download this repository -2. Ensure you have .NET Core SDK 6.0 setup and installed +2. Ensure you have .NET Core SDK 8.0 setup and installed 3. Build plugin with following command. @@ -56,7 +54,7 @@ dotnet publish --configuration=Release Jellyfin.Plugin.MetaShark/Jellyfin.Plugin 1. Build the plugin -2. Create a folder, like `metashark` and copy `./Jellyfin.Plugin.MetaShark/bin/Release/net6.0/Jellyfin.Plugin.MetaShark.dll` into it +2. Create a folder, like `metashark` and copy `./Jellyfin.Plugin.MetaShark/bin/Release/net8.0/Jellyfin.Plugin.MetaShark.dll` into it 3. Move folder `metashark` to jellyfin `data/plugins` folder