From 50421493c479538bd9bf627d5d45412e62af4f24 Mon Sep 17 00:00:00 2001 From: touki Date: Thu, 20 Aug 2026 19:03:49 +0800 Subject: [PATCH] Add Clapparr - NFO sidecars, posters and thumbnails for DVR recordings External plugin. Writes Kodi/Plex NFO sidecars, posters and episode thumbnails from metadata Dispatcharr already holds on the Recording, so DVR recordings present with real titles, summaries and artwork instead of "Episode 08-18". Zero dependencies (Python stdlib plus the host app's own modules); source_url resolves to the versioned release ZIP at github.com/v8eta/clapparr, MIT licensed. --- plugins/clapparr/README.md | 47 +++++++++++++++++++++++++++++++++++ plugins/clapparr/logo.png | Bin 0 -> 25582 bytes plugins/clapparr/plugin.json | 12 +++++++++ 3 files changed, 59 insertions(+) create mode 100644 plugins/clapparr/README.md create mode 100644 plugins/clapparr/logo.png create mode 100644 plugins/clapparr/plugin.json diff --git a/plugins/clapparr/README.md b/plugins/clapparr/README.md new file mode 100644 index 00000000..50135de5 --- /dev/null +++ b/plugins/clapparr/README.md @@ -0,0 +1,47 @@ +# Clapparr + +**The metadata slate for your DVR.** Writes Kodi/Plex NFO sidecars, posters and episode thumbnails for Dispatcharr recordings, from metadata Dispatcharr already holds — so they present with real titles, summaries and artwork instead of `Episode 08-18`. + +## What this is for + +- Your DVR recordings show up in Plex/Emby/Jellyfin/Kodi as bare `Episode 08-18` entries with no summary or artwork. +- You want the EPG's title, plot, season/episode and poster attached to each recording, automatically, the moment it finishes. +- Daily bulletins with no episode title in the EPG get a readable air-date title (`Wednesday 19 August 2026`) instead of the show name repeated. + +## What it writes + +``` +/tvshow.nfo show metadata +/poster.jpg show poster +/.nfo episode metadata +/-thumb.jpg episode still (optional) +``` + +Runs automatically on `recording_end` (deferred until the remux completes), plus manual **Generate missing / Regenerate all / Preview** actions. + +## Highlights + +- **Zero dependencies** — Python stdlib only; thumbnails use the ffmpeg already in the Dispatcharr image, and fail soft without it. +- **Guarded artwork fallback** — when Dispatcharr's exact-title lookup finds no poster, a strict fuzzy TVmaze match steps in (word-prefix only, coverage threshold, ambiguous ties refused, every decision logged). +- **Optional webhook** — notify a scan relay such as [autopulse](https://github.com/dan-online/autopulse) per recording, with path rewriting; credentials never reach the log. +- **Optional Plex artwork refresh** — a library scan re-reads episode NFOs but ignores a changed show poster; with a Plex URL+token set, Clapparr issues the forced per-show refresh itself. +- Sidecars take the ownership of their directory, so a root-running container doesn't litter root-owned files beside your media. + +## Plex setup + +Set the TV library's agent to **Plex NFO Series** (PMS 1.43.1+ — the NFO agent is available to everyone, no Plex Pass required) and keep *Use local assets* on. **Plex takes the episode index from the filename** — recordings must carry `SxxExx`. If yours land on the date-based fallback template despite the EPG having episode numbers, see [Dispatcharr#1307](https://github.com/Dispatcharr/Dispatcharr/issues/1307). One Plex-side limitation to know: NFO-agent libraries don't support Plex's watch-state/ratings sync. + +## Tested on + +Developed and tested against **Plex only**. The sidecars are standard Kodi-format NFOs, which Kodi, Jellyfin and Emby also read — and they're generally *more* forgiving of date-named files than Plex — but I haven't run them myself. **Feedback from Kodi/Jellyfin/Emby users is very welcome.** + +## A note on this project + +Clapparr is a personal project, built to scratch an itch on my own DVR and shared in case it saves someone else the same work. It gets attention when my setup needs it. Issues and PRs are welcome and read — just calibrate expectations accordingly. + +## More + +- Source, full docs, tests: https://github.com/v8eta/clapparr +- Releases: https://github.com/v8eta/clapparr/releases + +MIT licensed. AI tools were used in Clapparr's development; the behaviour described here was verified against a live Dispatcharr + Plex setup before release. diff --git a/plugins/clapparr/logo.png b/plugins/clapparr/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8eafe9b86e01c13c2ec8523daf17769f5c7034a3 GIT binary patch literal 25582 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φ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 literal 0 HcmV?d00001 diff --git a/plugins/clapparr/plugin.json b/plugins/clapparr/plugin.json new file mode 100644 index 00000000..af0f0bcf --- /dev/null +++ b/plugins/clapparr/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "Clapparr", + "version": "1.3.0", + "description": "The metadata slate for your DVR: writes Kodi/Plex NFO sidecars, posters and episode thumbnails so recordings present with real titles, summaries and artwork instead of 'Episode 08-18'.", + "author": "v8eta", + "license": "MIT", + "min_dispatcharr_version": "v0.20.0", + "repo_url": "https://github.com/v8eta/clapparr", + "help_url": "https://github.com/v8eta/clapparr#readme", + "source_type": "external", + "source_url": "https://github.com/v8eta/clapparr/releases/download/v{version}/plugin-clapparr-v{version}.zip" +}