14 Commits

Author SHA1 Message Date
Martin
ba56926dc2 chore: add diagnostic logging for pre-roll bumpers (v1.0.0.6)
All checks were successful
Publish Release / release (push) Successful in 13s
Helps diagnose why a Trailer Pre-Roll/Feature Pre-Roll bumper isn't
playing by logging invalid library IDs, empty library results, and
the movie picked.
v1.0.0.6
2026-06-10 10:35:33 -04:00
gitea-actions
2ef39853eb chore: update manifest.json for v1.0.0.5 2026-06-10 05:14:23 +00:00
Martin
a0bddac48d feat: add Trailer Pre-Roll and Feature Pre-Roll bumpers
All checks were successful
Publish Release / release (push) Successful in 14s
Adds two optional IIntroProvider bumper slots, mirroring CherryFloors'
cinema mode plugin: a "Trailer Pre-Roll" played before the trailer block
and a "Feature Pre-Roll" played right before the movie/episode. Each is
configured by picking an existing Jellyfin Movie library, from which a
random Movie is injected as the bumper.

Bump version to 1.0.0.5.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.5
2026-06-10 01:13:52 -04:00
gitea-actions
18c3c49a26 chore: update manifest.json for v1.0.0.4 2026-06-10 04:42:17 +00:00
Martin
f49c32f181 feat: add TV show trailer downloads, episode trailers, and movie/TV trailer separation
All checks were successful
Publish Release / release (push) Successful in 23s
- Download trailers for TV shows from TMDB with separate sources and an
  independent max-count cap (0 disables a category)
- Play trailers before TV episodes via IIntroProvider, limited to the first
  episode a user watches each day
- Tag TV show trailers in their NFO so movies only get movie trailers and
  episodes only get TV show trailers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.4
2026-06-10 00:41:37 -04:00
gitea-actions
f769e33b8d chore: update manifest.json for v1.0.0.3 2026-06-09 21:16:16 +00:00
Martin
83966f40ea feat: add genre, rating, and avoid-repeats trailer filters
All checks were successful
Publish Release / release (push) Successful in 23s
Trailer selection now supports three optional filters:
- Genre match: prefer trailers whose fake-movie genre overlaps with the
  feature being played (requires TMDB genres in NFO)
- Age rating ceiling: exclude trailers rated higher than the feature
  (requires TMDB certification in NFO)
- Avoid repeats: cycle through all trailers before replaying any;
  resets per-user once the pool is exhausted

Genre and certification are fetched from TMDB at download time via a
single /movie/{id}?append_to_response=release_dates call and written
into the fake-movie NFO as <genre> and <mpaa> tags. All filters fall
back to the full unfiltered pool when no match is found.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.3
2026-06-09 17:15:38 -04:00
gitea-actions
6772bde3b4 chore: update manifest.json for v1.0.0.2 2026-06-09 17:44:48 +00:00
Martin
e84a897c27 feat: add IIntroProvider for Wholphin/cinema-mode compatibility
All checks were successful
Publish Release / release (push) Successful in 1m34s
Registers TrailerIntroProvider as IIntroProvider. Queries fake-movie
items in the output folder and returns their local trailer extras
(LocalTrailers) as IntroInfo — mirroring jellyfin-plugin-cinemamode's
proven pattern so Wholphin plays the actual trailer, not the 3-second
black placeholder.

Recursion guard: items whose path starts with the output folder are
excluded from intro injection, so Wholphin's getIntros call on the
intro item itself returns empty. Server-scoped query bypasses library
visibility restrictions so hidden trailer libraries still work.

Adds TrailersPerMovie config option (default 1, 0 = disabled).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.2
2026-06-09 13:03:34 -04:00
gitea-actions
3868876401 chore: update manifest.json for v1.0.0.1 2026-06-08 20:48:56 +00:00
Martin
c83d7cbdde fix: use jellyfin-ffmpeg and explicit -f mp4 for fake-movie generation
All checks were successful
Publish Release / release (push) Successful in 10s
Two issues prevented fake-movie generation:
- ffmpeg was invoked by bare name, but only /usr/lib/jellyfin-ffmpeg/ffmpeg
  exists on the host (Jellyfin's bundled copy, not on PATH). Now probing that
  path first with fallback to PATH.
- The temp file extension .tmp caused ffmpeg to fail with "Unable to choose an
  output format" since it auto-detects the container from the extension. Added
  -f mp4 to specify the format explicitly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.1
2026-06-08 16:48:44 -04:00
gitea-actions
f1b36f6d0a chore: update manifest.json for v1.0.0.0 2026-06-08 20:31:51 +00:00
Martin
9bf7c40da1 fix(ci): replace JS-based actions with shell equivalents for host-mode runner
All checks were successful
Publish Release / release (push) Successful in 1m5s
actions/checkout and actions/setup-dotnet are JavaScript actions, and act's
host execution mode has a known unfixed path-resolution bug that causes
MODULE_NOT_FOUND on their dist/index.js (nektos/act#2024). Replace them with
plain git/dotnet shell steps that work against the runner's pre-installed
toolchain.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0.0
2026-06-08 16:27:10 -04:00
Martin
c2d2b1ae44 Initial commit: CinemaTrailers4Jellyfins plugin
Some checks failed
Publish Release / release (push) Failing after 17s
Adapted from Trailers4Jellyfin: keeps TMDB/YouTube trailer downloading,
the scheduled task, language/source/date filters, and trailer rotation,
but drops cinema-mode/IIntroProvider entirely. Each trailer now ships in
its own fake-movie folder (placeholder video + locked NFO + trailer) for
use with a Cinema Mode / trailer pre-roll plugin.
2026-06-08 14:24:28 -04:00