Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adfa570569 | ||
|
|
99798b5174 | ||
|
|
c76ddbc352 | ||
|
|
e9d9543941 |
@@ -3,8 +3,8 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<RootNamespace>Jellyfin.Plugin.CinemaTrailers4Jellyfins</RootNamespace>
|
||||
<AssemblyVersion>1.0.0.6</AssemblyVersion>
|
||||
<FileVersion>1.0.0.6</FileVersion>
|
||||
<AssemblyVersion>1.0.0.8</AssemblyVersion>
|
||||
<FileVersion>1.0.0.8</FileVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
|
||||
@@ -48,6 +48,16 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
var preRollEnabled = !string.IsNullOrEmpty(config.TrailerPreRollLibraryId);
|
||||
var featurePreRollEnabled = !string.IsNullOrEmpty(config.FeaturePreRollLibraryId);
|
||||
|
||||
_logger.LogInformation(
|
||||
"|CinemaTrailers4Jellyfins| GetIntros called for {Type} '{Name}' (Path={Path}). "
|
||||
+ "trailersEnabled={Trailers} preRollEnabled={PreRoll} featurePreRollEnabled={FeaturePreRoll}",
|
||||
item.GetType().Name,
|
||||
item.Name,
|
||||
item.Path,
|
||||
trailersEnabled,
|
||||
preRollEnabled,
|
||||
featurePreRollEnabled);
|
||||
|
||||
if (!trailersEnabled && !preRollEnabled && !featurePreRollEnabled)
|
||||
return Task.FromResult(Enumerable.Empty<IntroInfo>());
|
||||
|
||||
@@ -65,16 +75,23 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
|
||||
case Episode episode:
|
||||
if (!config.TrailersForEpisodes)
|
||||
{
|
||||
_logger.LogInformation("|CinemaTrailers4Jellyfins| Skipping: TrailersForEpisodes is disabled.");
|
||||
return Task.FromResult(Enumerable.Empty<IntroInfo>());
|
||||
}
|
||||
|
||||
if (!IsFirstEpisodeOfDay(user.Id))
|
||||
{
|
||||
_logger.LogInformation("|CinemaTrailers4Jellyfins| Skipping: not the first episode of the day for this user.");
|
||||
return Task.FromResult(Enumerable.Empty<IntroInfo>());
|
||||
}
|
||||
|
||||
feature = episode.Series ?? (BaseItem)episode;
|
||||
isEpisode = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
_logger.LogInformation("|CinemaTrailers4Jellyfins| Skipping: item type {Type} is not a Movie or Episode.", item.GetType().Name);
|
||||
return Task.FromResult(Enumerable.Empty<IntroInfo>());
|
||||
}
|
||||
|
||||
@@ -85,7 +102,10 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
// (covers both the fake-movie files and their trailer extras).
|
||||
if (!string.IsNullOrEmpty(outputFolder)
|
||||
&& item.Path?.StartsWith(outputFolder, StringComparison.OrdinalIgnoreCase) == true)
|
||||
{
|
||||
_logger.LogInformation("|CinemaTrailers4Jellyfins| Skipping: item path is inside the output folder ({Folder}).", outputFolder);
|
||||
return Task.FromResult(Enumerable.Empty<IntroInfo>());
|
||||
}
|
||||
|
||||
var intros = new List<IntroInfo>();
|
||||
|
||||
@@ -150,6 +170,11 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
intros.Add(featureRoll);
|
||||
}
|
||||
|
||||
_logger.LogInformation(
|
||||
"|CinemaTrailers4Jellyfins| Returning {Count} intro(s): {Paths}",
|
||||
intros.Count,
|
||||
string.Join(", ", intros.Select(i => i.Path)));
|
||||
|
||||
return Task.FromResult<IEnumerable<IntroInfo>>(intros);
|
||||
}
|
||||
|
||||
@@ -168,20 +193,23 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
return null;
|
||||
}
|
||||
|
||||
var movies = _libraryManager
|
||||
.GetItemList(new InternalItemsQuery
|
||||
if (_libraryManager.GetItemById(parsedId) is not Folder folder)
|
||||
{
|
||||
IncludeItemTypes = new[] { BaseItemKind.Movie },
|
||||
TopParentIds = new[] { parsedId },
|
||||
Recursive = true,
|
||||
})
|
||||
_logger.LogWarning(
|
||||
"|CinemaTrailers4Jellyfins| {Label} library {LibraryId} could not be found.",
|
||||
label,
|
||||
parsedId);
|
||||
return null;
|
||||
}
|
||||
|
||||
var movies = folder.GetRecursiveChildren()
|
||||
.OfType<Movie>()
|
||||
.Where(m => m.Id != excludeId)
|
||||
.ToList();
|
||||
|
||||
if (movies.Count == 0)
|
||||
{
|
||||
_logger.LogDebug(
|
||||
_logger.LogInformation(
|
||||
"|CinemaTrailers4Jellyfins| {Label} library {LibraryId} has no eligible Movie items. "
|
||||
+ "Ensure the library has been scanned and contains at least one other Movie.",
|
||||
label,
|
||||
@@ -190,7 +218,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
}
|
||||
|
||||
var movie = movies[_rng.Next(movies.Count)];
|
||||
_logger.LogDebug(
|
||||
_logger.LogInformation(
|
||||
"|CinemaTrailers4Jellyfins| {Label}: picked '{Title}' ({Path}).",
|
||||
label,
|
||||
movie.Name,
|
||||
|
||||
10
build.yaml
10
build.yaml
@@ -1,5 +1,5 @@
|
||||
---
|
||||
version: 1.0.0.6
|
||||
version: 1.0.0.8
|
||||
name: CinemaTrailers4Jellyfins
|
||||
guid: b581493e-1046-40ed-b6dc-cb8027624984
|
||||
description: >
|
||||
@@ -12,10 +12,10 @@ category: General
|
||||
owner: 514mart
|
||||
targetAbi: 10.11.0.0
|
||||
changelog:
|
||||
- Add diagnostic logging for Trailer Pre-Roll and Feature Pre-Roll bumpers —
|
||||
logs a warning if the configured library ID is invalid, and a debug message
|
||||
when no eligible movie is found or which movie was picked, to help
|
||||
troubleshoot why a bumper isn't playing
|
||||
- Fix Trailer Pre-Roll / Feature Pre-Roll bumpers not being found — the
|
||||
library lookup now walks the configured library folder's children
|
||||
directly instead of relying on TopParentIds matching, which could fail
|
||||
to match movies even when they appear correctly in the library
|
||||
|
||||
dotnetProjects:
|
||||
- name: Jellyfin.Plugin.CinemaTrailers4Jellyfins
|
||||
|
||||
@@ -8,6 +8,22 @@
|
||||
"owner": "514mart",
|
||||
"imageUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/raw/branch/main/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Images/logo.svg",
|
||||
"versions": [
|
||||
{
|
||||
"checksum": "a52f1354c9737cf9ec92f588bb4e750e",
|
||||
"changelog": "- Add Information-level diagnostic logging to IIntroProvider.GetIntros \u2014 logs every call (item, path, and which features are enabled), why an item is skipped, and the outcome of Trailer/Feature Pre-Roll lookups, to help troubleshoot why a pre-roll bumper isn't playing\n",
|
||||
"targetAbi": "10.11.0.0",
|
||||
"sourceUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/releases/download/v1.0.0.7/cinematrailers4jellyfins_1.0.0.7.zip",
|
||||
"timestamp": "2026-06-10T15:10:56Z",
|
||||
"version": "1.0.0.7"
|
||||
},
|
||||
{
|
||||
"checksum": "96e0624e5173e5e6bf829d47118e1b40",
|
||||
"changelog": "- Add diagnostic logging for Trailer Pre-Roll and Feature Pre-Roll bumpers \u2014 logs a warning if the configured library ID is invalid, and a debug message when no eligible movie is found or which movie was picked, to help troubleshoot why a bumper isn't playing\n",
|
||||
"targetAbi": "10.11.0.0",
|
||||
"sourceUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/releases/download/v1.0.0.6/cinematrailers4jellyfins_1.0.0.6.zip",
|
||||
"timestamp": "2026-06-10T14:35:52Z",
|
||||
"version": "1.0.0.6"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
|
||||
Reference in New Issue
Block a user