Files
CinemaTrailers4Jellyfins/README.md
Martin c2d2b1ae44
Some checks failed
Publish Release / release (push) Failing after 17s
Initial commit: CinemaTrailers4Jellyfins plugin
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

94 lines
4.0 KiB
Markdown

# CinemaTrailers4Jellyfins
A Jellyfin plugin that automatically downloads movie trailers from TMDB/YouTube and packages
each one as a self-contained "fake movie" folder, ready to be picked up by a Cinema Mode /
trailer pre-roll plugin.
## How it works
1. A daily scheduled task fetches candidate movies from TMDB (Now Playing, Upcoming, Popular,
Top Rated — configurable), optionally skipping movies already in your library.
2. For each candidate, it fetches the official trailer(s) from TMDB, which point to YouTube.
3. It downloads the trailer video and builds a folder for it:
```
{OutputFolder}/
{Movie Title} ({Year})/
{Movie Title} ({Year}).mp4 ← placeholder "fake movie" (copy of a master file)
{Movie Title} ({Year})-trailer.mp4 ← the actual downloaded trailer
{Movie Title} ({Year}).nfo ← minimal NFO (title, year, locked metadata)
```
4. Jellyfin scans the placeholder file as a normal movie (its metadata locked via the NFO so
it never queries TMDB for it) and picks up the adjacent `-trailer.mp4` as that movie's
local trailer — which a Cinema Mode / trailer pre-roll plugin can then play.
The placeholder "fake movie" is a few seconds of black video with silent audio — just enough
for Jellyfin to treat the file as a valid video. It's generated once via `ffmpeg` and reused
by copying, not regenerated for every trailer.
## Requirements
- Jellyfin 10.11+
- A free [TMDB API key](https://www.themoviedb.org/settings/api)
- `ffmpeg` available on the system PATH (used to generate the placeholder video once)
- *(Optional)* [yt-dlp](https://github.com/yt-dlp/yt-dlp) for higher quality (1080p+) trailer downloads
## Installation
### Via Jellyfin Plugin Catalogue
1. In your Jellyfin dashboard go to **Admin → Plugins → Repositories**.
2. Add a new repository with this URL:
```
https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins/raw/branch/main/manifest.json
```
3. Go to **Catalog**, find **CinemaTrailers4Jellyfins** under General, and click Install.
4. Restart Jellyfin.
### Manual
1. Download the latest `Jellyfin.Plugin.CinemaTrailers4Jellyfins.dll` (and dependencies) from Releases.
2. Copy them to your Jellyfin `plugins/` directory.
3. Restart Jellyfin.
## Configuration
Go to **Admin → Plugins → CinemaTrailers4Jellyfins**.
| Setting | Description |
|---|---|
| **TMDB API Key** | Your TMDB Read Access Token (JWT) or v3 API key |
| **Trailer Languages** | Restrict downloads to specific trailer languages |
| **Trailer Sources** | Which TMDB lists to pull candidates from (Now Playing, Upcoming, Popular, Top Rated) |
| **Date Range** | Only consider movies released within the last N months |
| **Output Folder** | Where the fake-movie folders are created |
| **Max trailers per run** | How many trailers to download per task run |
| **Pages per source** | How many TMDB pages to fetch per source |
| **Video quality** | 720p / 480p (built-in) or 1080p (requires yt-dlp) |
| **Skip movies already in my Jellyfin library** | Don't download trailers for movies you already own |
| **Skip trailers already downloaded** | Don't re-download a trailer if its folder already exists |
| **Max trailers to keep** | Oldest trailer folders are deleted first once this cap is exceeded |
| **yt-dlp path** | Optional path to `yt-dlp` for 1080p+ downloads |
## Running the task
After configuring, go to **Admin → Scheduled Tasks → CinemaTrailers4Jellyfins** and click **Run**
to do an immediate download pass. The task then runs automatically once per day.
After the task completes, add the output folder as a Jellyfin **Movies** library (and run a
library scan) so your Cinema Mode / trailer pre-roll plugin can use the trailers.
## Building from source
```sh
git clone https://www.git.quarantinedstudio.com/mvezina/CinemaTrailers4Jellyfins
cd CinemaTrailers4Jellyfins
dotnet publish --configuration Release --output bin
```
Place `Jellyfin.Plugin.CinemaTrailers4Jellyfins.dll` and its dependencies in your Jellyfin
`plugins/` directory.
## Licence
MIT