Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bb23dc9c4 | ||
|
|
5f7a76feb5 |
@@ -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.8</AssemblyVersion>
|
<AssemblyVersion>1.0.0.9</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.8</FileVersion>
|
<FileVersion>1.0.0.9</FileVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
|
|
||||||
if (preRollEnabled)
|
if (preRollEnabled)
|
||||||
{
|
{
|
||||||
var preRoll = GetRandomLibraryMovieIntro("Trailer Pre-Roll", config.TrailerPreRollLibraryId, item.Id);
|
var preRoll = GetRandomLibraryMovieIntro("Trailer Pre-Roll", config.TrailerPreRollLibraryId, item.Id, user);
|
||||||
if (preRoll != null)
|
if (preRoll != null)
|
||||||
intros.Add(preRoll);
|
intros.Add(preRoll);
|
||||||
}
|
}
|
||||||
@@ -129,6 +129,9 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
.Where(m =>
|
.Where(m =>
|
||||||
m.Path?.StartsWith(outputFolder, StringComparison.OrdinalIgnoreCase) == true
|
m.Path?.StartsWith(outputFolder, StringComparison.OrdinalIgnoreCase) == true
|
||||||
&& m.LocalTrailers.Count > 0
|
&& m.LocalTrailers.Count > 0
|
||||||
|
// Skip items the user can't actually play (e.g. library not in their access list) —
|
||||||
|
// some clients hang indefinitely trying to play an inaccessible item.
|
||||||
|
&& m.IsVisibleStandalone(user)
|
||||||
// Keep TV show trailers for episodes and movie trailers for movies separate.
|
// Keep TV show trailers for episodes and movie trailers for movies separate.
|
||||||
&& m.Tags.Contains(TrailerTags.TvShow, StringComparer.OrdinalIgnoreCase) == isEpisode)
|
&& m.Tags.Contains(TrailerTags.TvShow, StringComparer.OrdinalIgnoreCase) == isEpisode)
|
||||||
.SelectMany(m => m.LocalTrailers.Select(t => (Movie: m, Trailer: t)))
|
.SelectMany(m => m.LocalTrailers.Select(t => (Movie: m, Trailer: t)))
|
||||||
@@ -165,7 +168,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
|
|
||||||
if (featurePreRollEnabled)
|
if (featurePreRollEnabled)
|
||||||
{
|
{
|
||||||
var featureRoll = GetRandomLibraryMovieIntro("Feature Pre-Roll", config.FeaturePreRollLibraryId, item.Id);
|
var featureRoll = GetRandomLibraryMovieIntro("Feature Pre-Roll", config.FeaturePreRollLibraryId, item.Id, user);
|
||||||
if (featureRoll != null)
|
if (featureRoll != null)
|
||||||
intros.Add(featureRoll);
|
intros.Add(featureRoll);
|
||||||
}
|
}
|
||||||
@@ -182,7 +185,7 @@ 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 label, string libraryId, Guid excludeId)
|
private IntroInfo? GetRandomLibraryMovieIntro(string label, string libraryId, Guid excludeId, User user)
|
||||||
{
|
{
|
||||||
if (!Guid.TryParse(libraryId, out var parsedId))
|
if (!Guid.TryParse(libraryId, out var parsedId))
|
||||||
{
|
{
|
||||||
@@ -204,14 +207,14 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
|||||||
|
|
||||||
var movies = folder.GetRecursiveChildren()
|
var movies = folder.GetRecursiveChildren()
|
||||||
.OfType<Movie>()
|
.OfType<Movie>()
|
||||||
.Where(m => m.Id != excludeId)
|
.Where(m => m.Id != excludeId && m.IsVisibleStandalone(user))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (movies.Count == 0)
|
if (movies.Count == 0)
|
||||||
{
|
{
|
||||||
_logger.LogInformation(
|
_logger.LogInformation(
|
||||||
"|CinemaTrailers4Jellyfins| {Label} library {LibraryId} has no eligible Movie items. "
|
"|CinemaTrailers4Jellyfins| {Label} library {LibraryId} has no eligible Movie items visible to this user. "
|
||||||
+ "Ensure the library has been scanned and contains at least one other Movie.",
|
+ "Ensure the library has been scanned, contains at least one other Movie, and is in this user's library access list.",
|
||||||
label,
|
label,
|
||||||
parsedId);
|
parsedId);
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
10
build.yaml
10
build.yaml
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
version: 1.0.0.8
|
version: 1.0.0.9
|
||||||
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:
|
||||||
- Fix Trailer Pre-Roll / Feature Pre-Roll bumpers not being found — the
|
- Skip trailers and pre-roll/feature pre-roll bumpers the current user
|
||||||
library lookup now walks the configured library folder's children
|
can't actually access (e.g. a library not in their library access list)
|
||||||
directly instead of relying on TopParentIds matching, which could fail
|
— some Cinema Mode clients hang indefinitely trying to play an
|
||||||
to match movies even when they appear correctly in the library
|
inaccessible item, so these are now filtered out per-user instead
|
||||||
|
|
||||||
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": "89c66caa789da56ead7d60e01d3207a5",
|
||||||
|
"changelog": "- Fix Trailer Pre-Roll / Feature Pre-Roll bumpers not being found \u2014 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\n",
|
||||||
|
"targetAbi": "10.11.0.0",
|
||||||
|
"sourceUrl": "https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/releases/download/v1.0.0.8/cinematrailers4jellyfins_1.0.0.8.zip",
|
||||||
|
"timestamp": "2026-06-10T15:28:02Z",
|
||||||
|
"version": "1.0.0.8"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"checksum": "a52f1354c9737cf9ec92f588bb4e750e",
|
"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",
|
"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",
|
||||||
|
|||||||
Reference in New Issue
Block a user