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>
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>
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.