inital working release

This commit is contained in:
CodeDevMLH
2025-12-15 16:37:36 +01:00
parent 19e66c79c0
commit 265e3ba143
14 changed files with 394 additions and 241 deletions

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@ obj/
.vs/ .vs/
.idea/ .idea/
artifacts artifacts
RELEASE_GUIDE.md

View File

@@ -1,7 +0,0 @@
<Project>
<PropertyGroup>
<Version>1.0.0.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
</PropertyGroup>
</Project>

View File

@@ -45,7 +45,6 @@ public class SeasonalsController : ControllerBase
var assembly = Assembly.GetExecutingAssembly(); var assembly = Assembly.GetExecutingAssembly();
// Convert path to resource name // Convert path to resource name
// path: "autumn_images/acorn1.png" -> "Jellyfin.Plugin.Seasonals.Web.autumn_images.acorn1.png"
var resourcePath = path.Replace('/', '.').Replace('\\', '.'); var resourcePath = path.Replace('/', '.').Replace('\\', '.');
var resourceName = $"Jellyfin.Plugin.Seasonals.Web.{resourcePath}"; var resourceName = $"Jellyfin.Plugin.Seasonals.Web.{resourcePath}";

View File

@@ -5,26 +5,20 @@
<TargetFramework Condition="$(JellyfinVersion.StartsWith('10.11'))">net9.0</TargetFramework> <TargetFramework Condition="$(JellyfinVersion.StartsWith('10.11'))">net9.0</TargetFramework>
<TargetFramework Condition="!$(JellyfinVersion.StartsWith('10.11'))">net8.0</TargetFramework> <TargetFramework Condition="!$(JellyfinVersion.StartsWith('10.11'))">net8.0</TargetFramework>
<RootNamespace>Jellyfin.Plugin.Seasonals</RootNamespace> <RootNamespace>Jellyfin.Plugin.Seasonals</RootNamespace>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<AnalysisMode>AllEnabledByDefault</AnalysisMode> <!-- <AnalysisMode>AllEnabledByDefault</AnalysisMode> -->
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet> <!-- <CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet> -->
<!-- <GenerateDocumentationFile>true</GenerateDocumentationFile> -->
<!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> -->
<Title>Jellyfin Seasonals Plugin</Title>
<Authors>CodeDevMLH</Authors> <Authors>CodeDevMLH</Authors>
<Company>CodeDevMLH</Company>
<Product>Jellyfin Seasonals Plugin</Product>
<Version>1.0.0.0</Version> <Version>1.0.0.0</Version>
<PackageProjectUrl>https://github.com/CodeDevMLH/jellyfin-plugin-seasonals</PackageProjectUrl>
<RepositoryUrl>https://github.com/CodeDevMLH/jellyfin-plugin-seasonals</RepositoryUrl> <RepositoryUrl>https://github.com/CodeDevMLH/jellyfin-plugin-seasonals</RepositoryUrl>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Jellyfin.Controller" Version="$(JellyfinVersion)"> <PackageReference Include="Jellyfin.Controller" Version="$(JellyfinVersion)" />
<ExcludeAssets>runtime</ExcludeAssets> <PackageReference Include="Jellyfin.Model" Version="$(JellyfinVersion)" />
</PackageReference>
<PackageReference Include="Jellyfin.Model" Version="$(JellyfinVersion)">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -32,6 +26,9 @@
<EmbeddedResource Include="Configuration\configPage.html" /> <EmbeddedResource Include="Configuration\configPage.html" />
<None Remove="Web\**" /> <None Remove="Web\**" />
<EmbeddedResource Include="Web\**" /> <EmbeddedResource Include="Web\**" />
<None Include="..\README.md" />
<None Include="..\logo.png" CopyToOutputDirectory="Always" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -15,25 +15,64 @@
"Jellyfin.Plugin.Seasonals.dll": {} "Jellyfin.Plugin.Seasonals.dll": {}
} }
}, },
"BitFaster.Caching/2.5.4": {}, "BitFaster.Caching/2.5.4": {
"Diacritics/4.0.17": {}, "runtime": {
"lib/net6.0/BitFaster.Caching.dll": {
"assemblyVersion": "2.5.4.0",
"fileVersion": "2.5.4.0"
}
}
},
"Diacritics/4.0.17": {
"runtime": {
"lib/net9.0/Diacritics.dll": {
"assemblyVersion": "4.0.17.0",
"fileVersion": "4.0.17.0"
}
}
},
"ICU4N/60.1.0-alpha.356": { "ICU4N/60.1.0-alpha.356": {
"dependencies": { "dependencies": {
"J2N": "2.0.0", "J2N": "2.0.0",
"Microsoft.Extensions.Caching.Memory": "9.0.10" "Microsoft.Extensions.Caching.Memory": "9.0.10"
},
"runtime": {
"lib/netstandard2.0/ICU4N.dll": {
"assemblyVersion": "60.0.0.0",
"fileVersion": "60.1.0.0"
}
} }
}, },
"ICU4N.Transliterator/60.1.0-alpha.356": { "ICU4N.Transliterator/60.1.0-alpha.356": {
"dependencies": { "dependencies": {
"ICU4N": "60.1.0-alpha.356" "ICU4N": "60.1.0-alpha.356"
},
"runtime": {
"lib/netstandard2.0/ICU4N.Transliterator.dll": {
"assemblyVersion": "60.0.0.0",
"fileVersion": "60.1.0.0"
}
}
},
"J2N/2.0.0": {
"runtime": {
"lib/net6.0/J2N.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.0.0.0"
}
} }
}, },
"J2N/2.0.0": {},
"Jellyfin.Common/10.11.0": { "Jellyfin.Common/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Model": "10.11.0", "Jellyfin.Model": "10.11.0",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Common.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Controller/10.11.0": { "Jellyfin.Controller/10.11.0": {
@@ -46,30 +85,60 @@
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.10", "Microsoft.Extensions.Configuration.Binder": "9.0.10",
"System.Threading.Tasks.Dataflow": "9.0.10" "System.Threading.Tasks.Dataflow": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Controller.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Data/10.11.0": { "Jellyfin.Data/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Database.Implementations": "10.11.0", "Jellyfin.Database.Implementations": "10.11.0",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net9.0/Jellyfin.Data.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Database.Implementations/10.11.0": { "Jellyfin.Database.Implementations/10.11.0": {
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "9.0.10", "Microsoft.EntityFrameworkCore.Relational": "9.0.10",
"Polly": "8.6.4" "Polly": "8.6.4"
},
"runtime": {
"lib/net9.0/Jellyfin.Database.Implementations.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Extensions/10.11.0": { "Jellyfin.Extensions/10.11.0": {
"dependencies": { "dependencies": {
"Diacritics": "4.0.17", "Diacritics": "4.0.17",
"ICU4N.Transliterator": "60.1.0-alpha.356" "ICU4N.Transliterator": "60.1.0-alpha.356"
},
"runtime": {
"lib/net9.0/Jellyfin.Extensions.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.MediaEncoding.Keyframes/10.11.0": { "Jellyfin.MediaEncoding.Keyframes/10.11.0": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"NEbml": "1.1.0.5" "NEbml": "1.1.0.5"
},
"runtime": {
"lib/net9.0/Jellyfin.MediaEncoding.Keyframes.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Model/10.11.0": { "Jellyfin.Model/10.11.0": {
@@ -79,12 +148,24 @@
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"System.Globalization": "4.3.0", "System.Globalization": "4.3.0",
"System.Text.Json": "9.0.10" "System.Text.Json": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Model.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Naming/10.11.0": { "Jellyfin.Naming/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Common": "10.11.0", "Jellyfin.Common": "10.11.0",
"Jellyfin.Model": "10.11.0" "Jellyfin.Model": "10.11.0"
},
"runtime": {
"lib/net9.0/Emby.Naming.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Microsoft.EntityFrameworkCore/9.0.10": { "Microsoft.EntityFrameworkCore/9.0.10": {
@@ -93,9 +174,22 @@
"Microsoft.EntityFrameworkCore.Analyzers": "9.0.10", "Microsoft.EntityFrameworkCore.Analyzers": "9.0.10",
"Microsoft.Extensions.Caching.Memory": "9.0.10", "Microsoft.Extensions.Caching.Memory": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/9.0.10": {
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
} }
}, },
"Microsoft.EntityFrameworkCore.Abstractions/9.0.10": {},
"Microsoft.EntityFrameworkCore.Analyzers/9.0.10": {}, "Microsoft.EntityFrameworkCore.Analyzers/9.0.10": {},
"Microsoft.EntityFrameworkCore.Relational/9.0.10": { "Microsoft.EntityFrameworkCore.Relational/9.0.10": {
"dependencies": { "dependencies": {
@@ -103,11 +197,23 @@
"Microsoft.Extensions.Caching.Memory": "9.0.10", "Microsoft.Extensions.Caching.Memory": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
} }
}, },
"Microsoft.Extensions.Caching.Abstractions/9.0.10": { "Microsoft.Extensions.Caching.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Caching.Memory/9.0.10": { "Microsoft.Extensions.Caching.Memory/9.0.10": {
@@ -117,52 +223,128 @@
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10", "Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Configuration.Abstractions/9.0.10": { "Microsoft.Extensions.Configuration.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Configuration.Binder/9.0.10": { "Microsoft.Extensions.Configuration.Binder/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10" "Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.DependencyInjection/9.0.10": { "Microsoft.Extensions.DependencyInjection/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {},
"Microsoft.Extensions.Logging/9.0.10": { "Microsoft.Extensions.Logging/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection": "9.0.10", "Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10" "Microsoft.Extensions.Options": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Logging.Abstractions/9.0.10": { "Microsoft.Extensions.Logging.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Options/9.0.10": { "Microsoft.Extensions.Options/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Primitives/9.0.10": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Primitives/9.0.10": {},
"Microsoft.NETCore.Platforms/1.1.0": {}, "Microsoft.NETCore.Platforms/1.1.0": {},
"Microsoft.NETCore.Targets/1.1.0": {}, "Microsoft.NETCore.Targets/1.1.0": {},
"NEbml/1.1.0.5": {}, "NEbml/1.1.0.5": {
"runtime": {
"lib/netstandard2.0/NEbml.Core.dll": {
"assemblyVersion": "1.1.0.5",
"fileVersion": "1.1.0.5"
}
}
},
"Polly/8.6.4": { "Polly/8.6.4": {
"dependencies": { "dependencies": {
"Polly.Core": "8.6.4" "Polly.Core": "8.6.4"
},
"runtime": {
"lib/net6.0/Polly.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.6.4.5033"
}
}
},
"Polly.Core/8.6.4": {
"runtime": {
"lib/net8.0/Polly.Core.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.6.4.5033"
}
} }
}, },
"Polly.Core/8.6.4": {},
"System.Globalization/4.3.0": { "System.Globalization/4.3.0": {
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0", "Microsoft.NETCore.Platforms": "1.1.0",

View File

@@ -1,101 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Plugin.Seasonals</name>
</assembly>
<members>
<member name="T:Jellyfin.Plugin.Seasonals.Api.SeasonalsController">
<summary>
Controller for serving seasonal resources and configuration.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Api.SeasonalsController.GetConfig">
<summary>
Gets the current plugin configuration.
</summary>
<returns>The configuration object.</returns>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Api.SeasonalsController.GetResource(System.String)">
<summary>
Serves embedded resources.
</summary>
<param name="path">The path to the resource.</param>
<returns>The resource file.</returns>
</member>
<member name="T:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration">
<summary>
Plugin configuration.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration"/> class.
</summary>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.SelectedSeason">
<summary>
Gets or sets the selected season.
</summary>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.AutomateSeasonSelection">
<summary>
Gets or sets a value indicating whether to automate season selection.
</summary>
</member>
<member name="T:Jellyfin.Plugin.Seasonals.Plugin">
<summary>
The main plugin.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Plugin.#ctor(MediaBrowser.Common.Configuration.IApplicationPaths,MediaBrowser.Model.Serialization.IXmlSerializer,Microsoft.Extensions.Logging.ILoggerFactory)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.Plugin"/> class.
</summary>
<param name="applicationPaths">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IApplicationPaths"/> interface.</param>
<param name="xmlSerializer">Instance of the <see cref="T:MediaBrowser.Model.Serialization.IXmlSerializer"/> interface.</param>
<param name="loggerFactory">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILoggerFactory"/> interface.</param>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Name">
<inheritdoc />
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Id">
<inheritdoc />
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Instance">
<summary>
Gets the current plugin instance.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Plugin.GetPages">
<inheritdoc />
</member>
<member name="T:Jellyfin.Plugin.Seasonals.ScriptInjector">
<summary>
Handles the injection of the Seasonals script into the Jellyfin web interface.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.#ctor(MediaBrowser.Common.Configuration.IApplicationPaths,Microsoft.Extensions.Logging.ILogger{Jellyfin.Plugin.Seasonals.ScriptInjector})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.ScriptInjector"/> class.
</summary>
<param name="appPaths">The application paths.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.Inject">
<summary>
Injects the script tag into index.html if it's not already present.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.Remove">
<summary>
Removes the script tag from index.html.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.GetWebPath">
<summary>
Retrieves the path to the Jellyfin web interface directory.
</summary>
<returns>The path to the web directory, or null if not found.</returns>
</member>
</members>
</doc>

View File

@@ -15,25 +15,64 @@
"Jellyfin.Plugin.Seasonals.dll": {} "Jellyfin.Plugin.Seasonals.dll": {}
} }
}, },
"BitFaster.Caching/2.5.4": {}, "BitFaster.Caching/2.5.4": {
"Diacritics/4.0.17": {}, "runtime": {
"lib/net6.0/BitFaster.Caching.dll": {
"assemblyVersion": "2.5.4.0",
"fileVersion": "2.5.4.0"
}
}
},
"Diacritics/4.0.17": {
"runtime": {
"lib/net9.0/Diacritics.dll": {
"assemblyVersion": "4.0.17.0",
"fileVersion": "4.0.17.0"
}
}
},
"ICU4N/60.1.0-alpha.356": { "ICU4N/60.1.0-alpha.356": {
"dependencies": { "dependencies": {
"J2N": "2.0.0", "J2N": "2.0.0",
"Microsoft.Extensions.Caching.Memory": "9.0.10" "Microsoft.Extensions.Caching.Memory": "9.0.10"
},
"runtime": {
"lib/netstandard2.0/ICU4N.dll": {
"assemblyVersion": "60.0.0.0",
"fileVersion": "60.1.0.0"
}
} }
}, },
"ICU4N.Transliterator/60.1.0-alpha.356": { "ICU4N.Transliterator/60.1.0-alpha.356": {
"dependencies": { "dependencies": {
"ICU4N": "60.1.0-alpha.356" "ICU4N": "60.1.0-alpha.356"
},
"runtime": {
"lib/netstandard2.0/ICU4N.Transliterator.dll": {
"assemblyVersion": "60.0.0.0",
"fileVersion": "60.1.0.0"
}
}
},
"J2N/2.0.0": {
"runtime": {
"lib/net6.0/J2N.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.0.0.0"
}
} }
}, },
"J2N/2.0.0": {},
"Jellyfin.Common/10.11.0": { "Jellyfin.Common/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Model": "10.11.0", "Jellyfin.Model": "10.11.0",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Common.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Controller/10.11.0": { "Jellyfin.Controller/10.11.0": {
@@ -46,30 +85,60 @@
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.10", "Microsoft.Extensions.Configuration.Binder": "9.0.10",
"System.Threading.Tasks.Dataflow": "9.0.10" "System.Threading.Tasks.Dataflow": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Controller.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Data/10.11.0": { "Jellyfin.Data/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Database.Implementations": "10.11.0", "Jellyfin.Database.Implementations": "10.11.0",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net9.0/Jellyfin.Data.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Database.Implementations/10.11.0": { "Jellyfin.Database.Implementations/10.11.0": {
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "9.0.10", "Microsoft.EntityFrameworkCore.Relational": "9.0.10",
"Polly": "8.6.4" "Polly": "8.6.4"
},
"runtime": {
"lib/net9.0/Jellyfin.Database.Implementations.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Extensions/10.11.0": { "Jellyfin.Extensions/10.11.0": {
"dependencies": { "dependencies": {
"Diacritics": "4.0.17", "Diacritics": "4.0.17",
"ICU4N.Transliterator": "60.1.0-alpha.356" "ICU4N.Transliterator": "60.1.0-alpha.356"
},
"runtime": {
"lib/net9.0/Jellyfin.Extensions.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.MediaEncoding.Keyframes/10.11.0": { "Jellyfin.MediaEncoding.Keyframes/10.11.0": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"NEbml": "1.1.0.5" "NEbml": "1.1.0.5"
},
"runtime": {
"lib/net9.0/Jellyfin.MediaEncoding.Keyframes.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Model/10.11.0": { "Jellyfin.Model/10.11.0": {
@@ -79,12 +148,24 @@
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"System.Globalization": "4.3.0", "System.Globalization": "4.3.0",
"System.Text.Json": "9.0.10" "System.Text.Json": "9.0.10"
},
"runtime": {
"lib/net9.0/MediaBrowser.Model.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Jellyfin.Naming/10.11.0": { "Jellyfin.Naming/10.11.0": {
"dependencies": { "dependencies": {
"Jellyfin.Common": "10.11.0", "Jellyfin.Common": "10.11.0",
"Jellyfin.Model": "10.11.0" "Jellyfin.Model": "10.11.0"
},
"runtime": {
"lib/net9.0/Emby.Naming.dll": {
"assemblyVersion": "10.11.0.0",
"fileVersion": "10.11.0.0"
}
} }
}, },
"Microsoft.EntityFrameworkCore/9.0.10": { "Microsoft.EntityFrameworkCore/9.0.10": {
@@ -93,9 +174,22 @@
"Microsoft.EntityFrameworkCore.Analyzers": "9.0.10", "Microsoft.EntityFrameworkCore.Analyzers": "9.0.10",
"Microsoft.Extensions.Caching.Memory": "9.0.10", "Microsoft.Extensions.Caching.Memory": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/9.0.10": {
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
} }
}, },
"Microsoft.EntityFrameworkCore.Abstractions/9.0.10": {},
"Microsoft.EntityFrameworkCore.Analyzers/9.0.10": {}, "Microsoft.EntityFrameworkCore.Analyzers/9.0.10": {},
"Microsoft.EntityFrameworkCore.Relational/9.0.10": { "Microsoft.EntityFrameworkCore.Relational/9.0.10": {
"dependencies": { "dependencies": {
@@ -103,11 +197,23 @@
"Microsoft.Extensions.Caching.Memory": "9.0.10", "Microsoft.Extensions.Caching.Memory": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10" "Microsoft.Extensions.Logging": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"assemblyVersion": "9.0.10.0",
"fileVersion": "9.0.1025.47514"
}
} }
}, },
"Microsoft.Extensions.Caching.Abstractions/9.0.10": { "Microsoft.Extensions.Caching.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Caching.Memory/9.0.10": { "Microsoft.Extensions.Caching.Memory/9.0.10": {
@@ -117,52 +223,128 @@
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10", "Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Configuration.Abstractions/9.0.10": { "Microsoft.Extensions.Configuration.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Configuration.Binder/9.0.10": { "Microsoft.Extensions.Configuration.Binder/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10" "Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.DependencyInjection/9.0.10": { "Microsoft.Extensions.DependencyInjection/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {},
"Microsoft.Extensions.Logging/9.0.10": { "Microsoft.Extensions.Logging/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection": "9.0.10", "Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10" "Microsoft.Extensions.Options": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Logging.Abstractions/9.0.10": { "Microsoft.Extensions.Logging.Abstractions/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Options/9.0.10": { "Microsoft.Extensions.Options/9.0.10": {
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10" "Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net9.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Primitives/9.0.10": {
"runtime": {
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
} }
}, },
"Microsoft.Extensions.Primitives/9.0.10": {},
"Microsoft.NETCore.Platforms/1.1.0": {}, "Microsoft.NETCore.Platforms/1.1.0": {},
"Microsoft.NETCore.Targets/1.1.0": {}, "Microsoft.NETCore.Targets/1.1.0": {},
"NEbml/1.1.0.5": {}, "NEbml/1.1.0.5": {
"runtime": {
"lib/netstandard2.0/NEbml.Core.dll": {
"assemblyVersion": "1.1.0.5",
"fileVersion": "1.1.0.5"
}
}
},
"Polly/8.6.4": { "Polly/8.6.4": {
"dependencies": { "dependencies": {
"Polly.Core": "8.6.4" "Polly.Core": "8.6.4"
},
"runtime": {
"lib/net6.0/Polly.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.6.4.5033"
}
}
},
"Polly.Core/8.6.4": {
"runtime": {
"lib/net8.0/Polly.Core.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.6.4.5033"
}
} }
}, },
"Polly.Core/8.6.4": {},
"System.Globalization/4.3.0": { "System.Globalization/4.3.0": {
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0", "Microsoft.NETCore.Platforms": "1.1.0",

View File

@@ -1,101 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Plugin.Seasonals</name>
</assembly>
<members>
<member name="T:Jellyfin.Plugin.Seasonals.Api.SeasonalsController">
<summary>
Controller for serving seasonal resources and configuration.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Api.SeasonalsController.GetConfig">
<summary>
Gets the current plugin configuration.
</summary>
<returns>The configuration object.</returns>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Api.SeasonalsController.GetResource(System.String)">
<summary>
Serves embedded resources.
</summary>
<param name="path">The path to the resource.</param>
<returns>The resource file.</returns>
</member>
<member name="T:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration">
<summary>
Plugin configuration.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration"/> class.
</summary>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.SelectedSeason">
<summary>
Gets or sets the selected season.
</summary>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Configuration.PluginConfiguration.AutomateSeasonSelection">
<summary>
Gets or sets a value indicating whether to automate season selection.
</summary>
</member>
<member name="T:Jellyfin.Plugin.Seasonals.Plugin">
<summary>
The main plugin.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Plugin.#ctor(MediaBrowser.Common.Configuration.IApplicationPaths,MediaBrowser.Model.Serialization.IXmlSerializer,Microsoft.Extensions.Logging.ILoggerFactory)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.Plugin"/> class.
</summary>
<param name="applicationPaths">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IApplicationPaths"/> interface.</param>
<param name="xmlSerializer">Instance of the <see cref="T:MediaBrowser.Model.Serialization.IXmlSerializer"/> interface.</param>
<param name="loggerFactory">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILoggerFactory"/> interface.</param>
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Name">
<inheritdoc />
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Id">
<inheritdoc />
</member>
<member name="P:Jellyfin.Plugin.Seasonals.Plugin.Instance">
<summary>
Gets the current plugin instance.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.Plugin.GetPages">
<inheritdoc />
</member>
<member name="T:Jellyfin.Plugin.Seasonals.ScriptInjector">
<summary>
Handles the injection of the Seasonals script into the Jellyfin web interface.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.#ctor(MediaBrowser.Common.Configuration.IApplicationPaths,Microsoft.Extensions.Logging.ILogger{Jellyfin.Plugin.Seasonals.ScriptInjector})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Plugin.Seasonals.ScriptInjector"/> class.
</summary>
<param name="appPaths">The application paths.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.Inject">
<summary>
Injects the script tag into index.html if it's not already present.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.Remove">
<summary>
Removes the script tag from index.html.
</summary>
</member>
<member name="M:Jellyfin.Plugin.Seasonals.ScriptInjector.GetWebPath">
<summary>
Retrieves the path to the Jellyfin web interface directory.
</summary>
<returns>The path to the web directory, or null if not found.</returns>
</member>
</members>
</doc>

View File

@@ -13,8 +13,8 @@
"changelog": "Initial release", "changelog": "Initial release",
"targetAbi": "10.9.0.0", "targetAbi": "10.9.0.0",
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/raw/branch/main/bin/Publish/Jellyfin.Plugin.Seasonals.zip", "sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/raw/branch/main/bin/Publish/Jellyfin.Plugin.Seasonals.zip",
"checksum": "87990236bd9337eda22757423d896e22", "checksum": "be6d06a959b3e18e5058a6d8fb6d800c",
"timestamp": "2025-12-14T23:50:27Z" "timestamp": "2025-12-15T15:33:15Z"
} }
] ]
} }