Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba56926dc2 | ||
|
|
2ef39853eb |
@@ -3,8 +3,8 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<RootNamespace>Jellyfin.Plugin.CinemaTrailers4Jellyfins</RootNamespace>
|
<RootNamespace>Jellyfin.Plugin.CinemaTrailers4Jellyfins</RootNamespace>
|
||||||
<AssemblyVersion>1.0.0.5</AssemblyVersion>
|
<AssemblyVersion>1.0.0.6</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.5</FileVersion>
|
<FileVersion>1.0.0.6</FileVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
|
|
||||||
if (preRollEnabled)
|
if (preRollEnabled)
|
||||||
{
|
{
|
||||||
var preRoll = GetRandomLibraryMovieIntro(config.TrailerPreRollLibraryId, item.Id);
|
var preRoll = GetRandomLibraryMovieIntro("Trailer Pre-Roll", config.TrailerPreRollLibraryId, item.Id);
|
||||||
if (preRoll != null)
|
if (preRoll != null)
|
||||||
intros.Add(preRoll);
|
intros.Add(preRoll);
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
|
|
||||||
if (featurePreRollEnabled)
|
if (featurePreRollEnabled)
|
||||||
{
|
{
|
||||||
var featureRoll = GetRandomLibraryMovieIntro(config.FeaturePreRollLibraryId, item.Id);
|
var featureRoll = GetRandomLibraryMovieIntro("Feature Pre-Roll", config.FeaturePreRollLibraryId, item.Id);
|
||||||
if (featureRoll != null)
|
if (featureRoll != null)
|
||||||
intros.Add(featureRoll);
|
intros.Add(featureRoll);
|
||||||
}
|
}
|
||||||
@@ -157,10 +157,16 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
/// Picks a random Movie from the given Jellyfin library (VirtualFolder ItemId) to use as a
|
/// Picks a random Movie from the given Jellyfin library (VirtualFolder ItemId) to use as a
|
||||||
/// pre-roll/post-roll bumper, excluding the item currently being played.
|
/// pre-roll/post-roll bumper, excluding the item currently being played.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private IntroInfo? GetRandomLibraryMovieIntro(string libraryId, Guid excludeId)
|
private IntroInfo? GetRandomLibraryMovieIntro(string label, string libraryId, Guid excludeId)
|
||||||
{
|
{
|
||||||
if (!Guid.TryParse(libraryId, out var parsedId))
|
if (!Guid.TryParse(libraryId, out var parsedId))
|
||||||
|
{
|
||||||
|
_logger.LogWarning(
|
||||||
|
"|CinemaTrailers4Jellyfins| {Label} library ID '{LibraryId}' is not a valid GUID — check the plugin settings.",
|
||||||
|
label,
|
||||||
|
libraryId);
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var movies = _libraryManager
|
var movies = _libraryManager
|
||||||
.GetItemList(new InternalItemsQuery
|
.GetItemList(new InternalItemsQuery
|
||||||
@@ -174,9 +180,21 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (movies.Count == 0)
|
if (movies.Count == 0)
|
||||||
|
{
|
||||||
|
_logger.LogDebug(
|
||||||
|
"|CinemaTrailers4Jellyfins| {Label} library {LibraryId} has no eligible Movie items. "
|
||||||
|
+ "Ensure the library has been scanned and contains at least one other Movie.",
|
||||||
|
label,
|
||||||
|
parsedId);
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var movie = movies[_rng.Next(movies.Count)];
|
var movie = movies[_rng.Next(movies.Count)];
|
||||||
|
_logger.LogDebug(
|
||||||
|
"|CinemaTrailers4Jellyfins| {Label}: picked '{Title}' ({Path}).",
|
||||||
|
label,
|
||||||
|
movie.Name,
|
||||||
|
movie.Path);
|
||||||
return new IntroInfo { ItemId = movie.Id, Path = movie.Path };
|
return new IntroInfo { ItemId = movie.Id, Path = movie.Path };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
build.yaml
10
build.yaml
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
version: 1.0.0.5
|
version: 1.0.0.6
|
||||||
name: CinemaTrailers4Jellyfins
|
name: CinemaTrailers4Jellyfins
|
||||||
guid: b581493e-1046-40ed-b6dc-cb8027624984
|
guid: b581493e-1046-40ed-b6dc-cb8027624984
|
||||||
description: >
|
description: >
|
||||||
@@ -12,10 +12,10 @@ category: General
|
|||||||
owner: 514mart
|
owner: 514mart
|
||||||
targetAbi: 10.11.0.0
|
targetAbi: 10.11.0.0
|
||||||
changelog:
|
changelog:
|
||||||
- Add Trailer Pre-Roll and Feature Pre-Roll bumpers via IIntroProvider — pick
|
- Add diagnostic logging for Trailer Pre-Roll and Feature Pre-Roll bumpers —
|
||||||
existing Jellyfin Movie libraries in settings and a random movie from each is
|
logs a warning if the configured library ID is invalid, and a debug message
|
||||||
played before the trailer block ("Now Playing") and/or right before the
|
when no eligible movie is found or which movie was picked, to help
|
||||||
feature ("Feature Presentation"); both are independent and disabled by default
|
troubleshoot why a bumper isn't playing
|
||||||
|
|
||||||
dotnetProjects:
|
dotnetProjects:
|
||||||
- name: Jellyfin.Plugin.CinemaTrailers4Jellyfins
|
- name: Jellyfin.Plugin.CinemaTrailers4Jellyfins
|
||||||
|
|||||||
@@ -8,6 +8,14 @@
|
|||||||
"owner": "514mart",
|
"owner": "514mart",
|
||||||
"imageUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/raw/branch/main/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Images/logo.svg",
|
"imageUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/raw/branch/main/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Images/logo.svg",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"checksum": "6c88aaeb38023b327e9b042181dc0708",
|
||||||
|
"changelog": "- Add Trailer Pre-Roll and Feature Pre-Roll bumpers via IIntroProvider \u2014 pick existing Jellyfin Movie libraries in settings and a random movie from each is played before the trailer block (\"Now Playing\") and/or right before the feature (\"Feature Presentation\"); both are independent and disabled by default\n",
|
||||||
|
"targetAbi": "10.11.0.0",
|
||||||
|
"sourceUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/releases/download/v1.0.0.5/cinematrailers4jellyfins_1.0.0.5.zip",
|
||||||
|
"timestamp": "2026-06-10T05:14:23Z",
|
||||||
|
"version": "1.0.0.5"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"checksum": "af6051b002939e4e5cd6ef4baf5c85d4",
|
"checksum": "af6051b002939e4e5cd6ef4baf5c85d4",
|
||||||
"changelog": "- Add TV show trailer downloads \u2014 separate TMDB sources (Airing Today, On The Air, Popular, Top Rated) and a \"Max TV show trailers per run\" cap independent from movies; set either cap to 0 to skip that category entirely\n- Add trailers before TV episodes via IIntroProvider \u2014 only the first episode a user watches each day gets trailers, picked using the show's genre/rating for filtering\n- Movie and TV trailers are now kept separate \u2014 movies only ever get movie trailers and episodes only ever get TV show trailers, via a tag written to each trailer's NFO at download time\n",
|
"changelog": "- Add TV show trailer downloads \u2014 separate TMDB sources (Airing Today, On The Air, Popular, Top Rated) and a \"Max TV show trailers per run\" cap independent from movies; set either cap to 0 to skip that category entirely\n- Add trailers before TV episodes via IIntroProvider \u2014 only the first episode a user watches each day gets trailers, picked using the show's genre/rating for filtering\n- Movie and TV trailers are now kept separate \u2014 movies only ever get movie trailers and episodes only ever get TV show trailers, via a tag written to each trailer's NFO at download time\n",
|
||||||
|
|||||||
Reference in New Issue
Block a user