Jump to content

TV Show Status — TMDB-powered Returning/Ended/Cancelled badges for series


Recommended Posts

GrimReaper
Posted
1 minute ago, Blueskies278 said:

 

TV Show Status 2.5.133.0

New

  • Poster size — posters can now be sized separately from thumbnails and the web grid badge. The existing Size setting could only ever be tuned for one image shape at a time: making thumbnails smaller left posters unchanged, because a poster's badge was already at the largest size a full label could fit without running off the edge of the artwork. Poster size defaults to Medium, which reproduces exactly what posters have always shown — nothing changes until it's moved.
  • Show cancelled as ended — cancelled shows can now read "Ended" instead of "Cancelled", with the ended colour, everywhere the badge appears (poster, library grid, Upcoming, series page). Off by default.
  • Icon: Dot only — no text — a third option alongside Calendar and Dot. Shows a bare coloured marker with nothing else drawn around it, on posters, thumbnails, the library grid and Upcoming alike. Colour still carries the meaning, so pair it with distinct colours per state if you rely on telling states apart at a glance. Sized by the same Size / Poster size settings as every other badge, so Large or Extra large gives a bigger dot.

Fixed

  • Badges on wide thumbnails could come out noticeably larger than the equivalent badge on a poster at the same Size setting, most visible at Extra Large. Wide-image and poster sizing are now controlled by entirely separate settings, rather than trying to satisfy both shapes from one shared dial.

Clarified

  • Reworded "an episode with no still of its own" to "an episode with no picture of its own" wherever it appeared — a tester found the word "still" unclear.
  • The Episode Image Fetchers setup step (needed for episode badges to appear on an episode that has no picture of its own) is now shown directly on the settings page, next to the setting it applies to, rather than only in this document.
  • Added a note that on a large library, Continue Watching badges catch up gradually rather than all at once — it can take roughly a minute after turning episode badges on before every card has updated. Expected behaviour, not a fault.

Known issues

  • One tester saw a show display "Complete" instead of "Ended" on its poster. A fresh test copy of the same show showed "Ended" correctly, which points to a stale cached status on that server rather than a logic bug — a metadata refresh on the affected show should fix it, but this hasn't been confirmed back yet. If refreshing doesn't clear it, please report back with details.

Notes

  • If you've never touched Size or Poster size, nothing about how your existing badges look has changed — both default to exactly what you've already seen.

TV-Show-Status-release-notes-2.5.133-v2.md 2.64 kB · 0 downloads TV-Show-Status-settings-2_5_133.pdf 33.96 kB · 0 downloads

dll not attached.

ginjaninja
Posted

So the Stephen King issue was (at least) in part my misunderstanding.
i better appreciate there is a sophistication in the plugin as to wether a season status ("Complete") is in play or a Show status (Ended) is in play.

Refreshing metadata/incogito / reload had no effect. What made the difference was having episodes unwatched/watched. Plugin overlay changes are immediate for me as i mark specials / episodes watched or unwatched.

So for Stephen King, once the episode (it only has one episode... part1+part2 combined..dont think thats relevant) had been watched, the overlay changed from "Complete" to  "Ended". So thats feels in keeping with the sophisticated design**.

But this behaviour also applies to watched/unwatched specials. That feels potentially unaligned to the intention?
 

Eg Twin Peaks with specials unwatched is "Complete"

image.thumb.png.6181b2fd4e0e4b16b00bce42141984ae.png

But if the specials are watched then the show status is in play and the overlay is "ended".
 

image.thumb.png.ea6532cc97d76a5891fce7910033973e.png


The behaviour is frequently repeated and does not seem to have anything to do with wether the specials are marked as formal episodes in the playthrough or not. Another example
image.thumb.png.715f0e9a675b7deb0d4438e3ce348ed4.png

** Feedback / suggestion - Maybe the overlays would benefit from being more granular (and intentional from the admins perspective), so the admin is choosing the useful information to them  (i assume different overlays can be applied to Posters vs Thumbnails?)

On Show Posters the admin could choose 'Show level focused' (Watched status irrelevant) overlays

  • Returning (possibly Next Air Date / Next Finale Date)
  • Ended (Cancelled), 

On Show Thumbnails the admin could choose 'Season (Binging) level focused' (Watch status of named user inspired) overlays

  • [Season] Complete (possibly Next Air Date / Next Finale Date)

Having a different config for Thumbnails and Posters as well as potentially giving admins more control might also make having a different size setting for each more trivial?

 

my settings

{
    "EditorTitle": "TV Show Status Settings",
    "EditorDescription": "Displays TV show status badges (Returning, Ended, Cancelled) and return dates using data from TMDB. This product uses the TMDB API but is not endorsed or certified by TMDB. There are three ways a badge can reach you, and each has its own section below. 'Show badges' and 'Episode badges' are drawn into the artwork on the server, so they appear on every client - Android TV, Fire TV, tvOS, iOS and web - with nothing to install. 'Web browser badges' are drawn by a small script and only appear in a browser. 'Description text' writes plain text into the show's description, which every client can show. The web script deploys itself into Emby's web folder on startup; on some Docker setups Emby cannot write there, and the status box in that section gives the one-line fix.",
    "SetupCaption": {
        "Caption": "Setup",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "TmdbApiKey": "4e9bde1dd4599cb3a89fcc1074a8575b",
    "OverlayWatchedUser": "Cartman",
    "AirDateSourceStatus": {
        "Status": "Succeeded",
        "Caption": "Air Dates",
        "StatusText": "Using TMDB dates. The Trakt Air Dates plugin is not installed, or has not built its cache yet.\n\nThat is a perfectly normal setup and nothing is broken. Worth knowing though: TMDB stores an air date as a bare date with no time and no timezone, so a US show broadcast in the evening can show the previous calendar day if you are outside the US. Installing Trakt Air Dates fixes that; this plugin picks it up automatically with no configuration.",
        "CanHideInCompactView": false
    },
    "ShowCaption": {
        "Caption": "Show badges - drawn into the artwork, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "EnableImageOverlay": true,
    "PosterStatusBadges": true,
    "PosterPremiereBadges": true,
    "OverlayMode": "ReadyToBinge",
    "ThumbnailBadges": "Everything",
    "OverlayShowDates": true,
    "ShowAiringForMidSeason": true,
    "ShowSeasonNumberOnBadge": true,
    "PremiereFinaleWindowDays": 7,
    "MarkPremiereFinaleInEpisodeName": false,
    "NameMarkerWhen": "Always",
    "OverlayModeStatus": {
        "Status": "Warning",
        "Caption": "Poster Overlay",
        "StatusText": "This server has 10 users.\n\nEmby draws ONE poster per show and shares it with everyone, so every user will see Cartman's watched progress - not their own. On a household server that is misleading rather than broken, which is why it is worth saying plainly.\n\n'Show when a season has finished airing' gives you the blue Complete badge without this problem - it just does not hide the badge once you have watched the show.\n\nWorth knowing: TMDB reports 'nothing scheduled' both for a season that has genuinely finished and for one that is simply between episodes with no date published yet. Those cannot be told apart from the data, so a show on a mid-season break can read Complete early. It corrects itself as soon as TMDB publishes the next date.",
        "CanHideInCompactView": false
    },
    "LookCaption": {
        "Caption": "How the show badge looks",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "OverlaySize": "Medium",
    "OverlayPosition": "TopLeft",
    "OverlayMarker": "Dot",
    "BadgeOpacity": "Translucent",
    "AiringMarkerColour": "Default",
    "MidSeasonMarkerColour": "Default",
    "PremiereMarkerColour": "Default",
    "CompleteMarkerColour": "Default",
    "EndedMarkerColour": "Amber",
    "CancelledMarkerColour": "Default",
    "EpisodeCaption": {
        "Caption": "Episode badges - drawn into the artwork, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "EpisodeBadges": "PremiereAndFinale",
    "WebCaption": {
        "Caption": "Web browser badges - drawn by a script, browser only",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "DisplayMode": "None",
    "BadgeStyle": "None",
    "WebGridBadges": false,
    "LibraryCardBadges": true,
    "UpcomingDateBadges": true,
    "UpcomingPremiereBadges": false,
    "UpcomingFinaleBadges": false,
    "AppBadges": true,
    "WebScriptStatus": {
        "Status": "Succeeded",
        "Caption": "Web Badge/Description Script",
        "StatusText": "Active - the badge script is deployed into Emby's web folder and index.html loads it.\n\nAn Emby app update wipes both, so the plugin now re-checks every 5 minutes and puts them back on its own. On Docker it can only do that once Emby owns its web folder again - see Setup below.",
        "CanHideInCompactView": false
    },
    "TextCaption": {
        "Caption": "Description text - plain text, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "WriteStatusToOverview": false,
    "DescriptionMarker": "None",
    "AdvancedCaption": {
        "Caption": "Advanced",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "ForceDisableSkiaSharp": false,
    "FeatureRequiresPremiere": false,
    "IsNewItem": false
}

 

Blueskies278
Posted
5 minutes ago, GrimReaper said:

dll not attached.

Done.Sorry, I'm doing so many things 😀

  • Thanks 1
GrimReaper
Posted
1 minute ago, Blueskies278 said:

Done.Sorry, I'm doing so many things 😀

Thumb/poster badge sizes looking good now, working properly. 👍

  • Like 1
Blueskies278
Posted (edited)
3 minutes ago, GrimReaper said:

Thumb/poster badge sizes looking good now, working properly. 👍

Thanks. Do you like the poster & thumbnails are now sized separately?

Edited by Blueskies278
GrimReaper
Posted
1 minute ago, Blueskies278 said:

Thanks. Do you like the poster & thumbnails are now sized separately?

Yup, have them set as Large/Extra Large, good stuff. 👌

  • Thanks 1
Blueskies278
Posted (edited)
29 minutes ago, ginjaninja said:

So the Stephen King issue was (at least) in part my misunderstanding.
i better appreciate there is a sophistication in the plugin as to wether a season status ("Complete") is in play or a Show status (Ended) is in play.

Refreshing metadata/incogito / reload had no effect. What made the difference was having episodes unwatched/watched. Plugin overlay changes are immediate for me as i mark specials / episodes watched or unwatched.

So for Stephen King, once the episode (it only has one episode... part1+part2 combined..dont think thats relevant) had been watched, the overlay changed from "Complete" to  "Ended". So thats feels in keeping with the sophisticated design**.

But this behaviour also applies to watched/unwatched specials. That feels potentially unaligned to the intention?
 

Eg Twin Peaks with specials unwatched is "Complete"

image.thumb.png.6181b2fd4e0e4b16b00bce42141984ae.png

But if the specials are watched then the show status is in play and the overlay is "ended".
 

image.thumb.png.ea6532cc97d76a5891fce7910033973e.png


The behaviour is frequently repeated and does not seem to have anything to do with wether the specials are marked as formal episodes in the playthrough or not. Another example
image.thumb.png.715f0e9a675b7deb0d4438e3ce348ed4.png

** Feedback / suggestion - Maybe the overlays would benefit from being more granular (and intentional from the admins perspective), so the admin is choosing the useful information to them  (i assume different overlays can be applied to Posters vs Thumbnails?)

On Show Posters the admin could choose 'Show level focused' (Watched status irrelevant) overlays

  • Returning (possibly Next Air Date / Next Finale Date)
  • Ended (Cancelled), 

On Show Thumbnails the admin could choose 'Season (Binging) level focused' (Watch status of named user inspired) overlays

  • [Season] Complete (possibly Next Air Date / Next Finale Date)

Having a different config for Thumbnails and Posters as well as potentially giving admins more control might also make having a different size setting for each more trivial?

 

my settings

{
    "EditorTitle": "TV Show Status Settings",
    "EditorDescription": "Displays TV show status badges (Returning, Ended, Cancelled) and return dates using data from TMDB. This product uses the TMDB API but is not endorsed or certified by TMDB. There are three ways a badge can reach you, and each has its own section below. 'Show badges' and 'Episode badges' are drawn into the artwork on the server, so they appear on every client - Android TV, Fire TV, tvOS, iOS and web - with nothing to install. 'Web browser badges' are drawn by a small script and only appear in a browser. 'Description text' writes plain text into the show's description, which every client can show. The web script deploys itself into Emby's web folder on startup; on some Docker setups Emby cannot write there, and the status box in that section gives the one-line fix.",
    "SetupCaption": {
        "Caption": "Setup",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "TmdbApiKey": "4e9bde1dd4599cb3a89fcc1074a8575b",
    "OverlayWatchedUser": "Cartman",
    "AirDateSourceStatus": {
        "Status": "Succeeded",
        "Caption": "Air Dates",
        "StatusText": "Using TMDB dates. The Trakt Air Dates plugin is not installed, or has not built its cache yet.\n\nThat is a perfectly normal setup and nothing is broken. Worth knowing though: TMDB stores an air date as a bare date with no time and no timezone, so a US show broadcast in the evening can show the previous calendar day if you are outside the US. Installing Trakt Air Dates fixes that; this plugin picks it up automatically with no configuration.",
        "CanHideInCompactView": false
    },
    "ShowCaption": {
        "Caption": "Show badges - drawn into the artwork, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "EnableImageOverlay": true,
    "PosterStatusBadges": true,
    "PosterPremiereBadges": true,
    "OverlayMode": "ReadyToBinge",
    "ThumbnailBadges": "Everything",
    "OverlayShowDates": true,
    "ShowAiringForMidSeason": true,
    "ShowSeasonNumberOnBadge": true,
    "PremiereFinaleWindowDays": 7,
    "MarkPremiereFinaleInEpisodeName": false,
    "NameMarkerWhen": "Always",
    "OverlayModeStatus": {
        "Status": "Warning",
        "Caption": "Poster Overlay",
        "StatusText": "This server has 10 users.\n\nEmby draws ONE poster per show and shares it with everyone, so every user will see Cartman's watched progress - not their own. On a household server that is misleading rather than broken, which is why it is worth saying plainly.\n\n'Show when a season has finished airing' gives you the blue Complete badge without this problem - it just does not hide the badge once you have watched the show.\n\nWorth knowing: TMDB reports 'nothing scheduled' both for a season that has genuinely finished and for one that is simply between episodes with no date published yet. Those cannot be told apart from the data, so a show on a mid-season break can read Complete early. It corrects itself as soon as TMDB publishes the next date.",
        "CanHideInCompactView": false
    },
    "LookCaption": {
        "Caption": "How the show badge looks",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "OverlaySize": "Medium",
    "OverlayPosition": "TopLeft",
    "OverlayMarker": "Dot",
    "BadgeOpacity": "Translucent",
    "AiringMarkerColour": "Default",
    "MidSeasonMarkerColour": "Default",
    "PremiereMarkerColour": "Default",
    "CompleteMarkerColour": "Default",
    "EndedMarkerColour": "Amber",
    "CancelledMarkerColour": "Default",
    "EpisodeCaption": {
        "Caption": "Episode badges - drawn into the artwork, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "EpisodeBadges": "PremiereAndFinale",
    "WebCaption": {
        "Caption": "Web browser badges - drawn by a script, browser only",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "DisplayMode": "None",
    "BadgeStyle": "None",
    "WebGridBadges": false,
    "LibraryCardBadges": true,
    "UpcomingDateBadges": true,
    "UpcomingPremiereBadges": false,
    "UpcomingFinaleBadges": false,
    "AppBadges": true,
    "WebScriptStatus": {
        "Status": "Succeeded",
        "Caption": "Web Badge/Description Script",
        "StatusText": "Active - the badge script is deployed into Emby's web folder and index.html loads it.\n\nAn Emby app update wipes both, so the plugin now re-checks every 5 minutes and puts them back on its own. On Docker it can only do that once Emby owns its web folder again - see Setup below.",
        "CanHideInCompactView": false
    },
    "TextCaption": {
        "Caption": "Description text - plain text, every client",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "WriteStatusToOverview": false,
    "DescriptionMarker": "None",
    "AdvancedCaption": {
        "Caption": "Advanced",
        "IsVisible": true,
        "CanHideInCompactView": false
    },
    "ForceDisableSkiaSharp": false,
    "FeatureRequiresPremiere": false,
    "IsNewItem": false
}

 

Thanks for the detailed writeup with the config dump - made this easy to pin down.

This comes from Emby's own watched-state logic, not something the plugin is deciding on its own. A series inherits from Folder, and Emby's Folder.IsPlayed(user) recursively checks every child item - including Season 0 (Specials) - and requires all of them to be watched. The plugin is just asking Emby "has this user watched everything," and to Emby, a special is just another episode of the show like any other.

So the behaviour is: Complete (ready-to-binge colour) stays until literally everything is watched, specials included, then it drops to Ended. Not a bug, just Emby's own definition of "fully watched" being wider than you'd expect.

I could carve specials out of that check specifically for this plugin, but I'm going to leave it as-is for now - some people do want a special to count (clip shows, making-of episodes tied to the story) and I don't want to guess wrong for everyone. If it turns out most testers want specials excluded, that's an easy follow-up.

 

Edited by Blueskies278
Blueskies278
Posted

TV Show Status 2.5.134.1

Nothing you have saved changes — every setting keeps its name and default.

New

  • Season number on every Upcoming badge — "Season 2 Premiere" rather than "Season Premiere". Web browser only
  • Upcoming badges scale with the card — resize the window and the badge keeps its proportion instead of staying one fixed size. Web browser only

Fixed

  • A premiere or finale badge no longer vanishes when the episode airs and the card moves under "Yesterday"
  • In the Emby apps, a premiere or finale that has just aired now keeps its badge on the show's thumbnail for the Flag a premiere or finale this many days ahead window after airing as well as before. Force-close the app once so it drops its cached artwork
  • Badge size now applies to the web Upcoming badge — it was stuck on Medium whatever you chose
  • Web Upcoming badges are now all drawn the same way, so they match each other in size, font and sharpness

Known limitation

  • In the Emby apps, a premiere or finale badge appears on every Upcoming card of that show, not just the episode it refers to. Unaired episodes have no artwork of their own, so every card requests the same series image and the server cannot tell them apart. Only a browser can, which is why the per-episode badges are web-only
  • To mark those episodes on TV and phone apps, the companion plugin Trakt Air Dates can put the words in front of the episode title instead

EmbyTVShowStatus.dll

  • Like 1
Blueskies278
Posted

TV Show Status 2.5.135.0

Nothing you have saved changes — every setting keeps its name and default.

New

  • Include the season number on premiere and finale badges now governs every badge you see. It has always applied to the badges drawn into the artwork, which reach every client; from this release the web browser's Upcoming badges follow it too. Turn it on and a card reads "Season 4 Finale"; leave it off and artwork and browser both show plain "Season Finale". Until now the browser printed the number whatever the setting said, so with it off a thumbnail read "Season Premiere" while the Upcoming card beside it read "Season 2 Premiere". Refresh the Emby web page once so the browser picks up the new script

Fixed

  • A season finale that has already aired now keeps its season number on the badge. It was dropping back to plain "Season Finale" the moment the episode aired, because the number was being read from the show's next season, which no longer points at the one that just ended. This is the badge drawn into the artwork, so it affects every client

Known limitation

  • A badge change can take a while to show up in the Emby apps. The badge is drawn into the artwork on the server, and the app keeps showing the copy it has already cached until the server redraws the image and the app fetches it again. Nothing is wrong if it still looks the same shortly after an update — force-closing the app makes it drop its cached artwork and brings it forward, and a metadata refresh on the show does the same from the server end. Badges in a browser update as soon as the page is refreshed
  • In the Emby apps, a premiere or finale badge appears on every Upcoming card of that show, not just the episode it refers to. Unaired episodes have no artwork of their own, so every card requests the same series image and the server cannot tell them apart. Only a browser can, which is why the per-episode badges are web-only
  • To mark those episodes on TV and phone apps, the companion plugin Trakt Air Dates can put the words in front of the episode title instead

EmbyTVShowStatus.dll TV-Show-Status-settings-2_5_135_0_2.pdf

  • Like 2
  • Thanks 1
Posted

Hello, this plugin sounds very interesting. I've tried installing it on my Emby server version 4.10.0.40 running on Synology DSM 7.3 (installed as a package). I copied the latest versions dll (tried the last three versions you've posted on this thread) into the Embyserver plugin folder located for me at : /volume3/@appdata/EmbyServer/Plugings/. You can see the file in the screenshot below.  I then restarted my Emby Server, but your plugin doesn't show up in the plugins list.

Could this be a problem with this version of Emby Server ? I believe it's a fairly recent update. Thanks for any help you can provide, and keep up the good work !

image.thumb.png.52745acfaf57d71f3ce25a31ba41945a.png

Posted

EDIT : Apologies, it was a permissions issue. When I moved the plugin dll with Double-Commander, it assigned root permissions to the file. 

Fix
1. Using SSH as root, I navigated to the plugins folder where I had copied the dll
2. I used :

chown emby:emby EmbyTVShowStatus.dll 

to reset the permisisons.
3. On restart of Emby Server, the plugin is now showing !

Posted

And after playing with it a little, IT'S AMAZING. That's one of the most useful plugins for Emby that I've tried so far ! Kudos to you. 

I have only one Feature/improvment request : Would it be able to add a setting for the plugin where we'd be able to change the text for the badges, so that we can translate them ?

Blueskies278
Posted (edited)
7 hours ago, booga69 said:

Hello, this plugin sounds very interesting. I've tried installing it on my Emby server version 4.10.0.40 running on Synology DSM 7.3 (installed as a package). I copied the latest versions dll (tried the last three versions you've posted on this thread) into the Embyserver plugin folder located for me at : /volume3/@appdata/EmbyServer/Plugings/. You can see the file in the screenshot below.  I then restarted my Emby Server, but your plugin doesn't show up in the plugins list.

Could this be a problem with this version of Emby Server ? I believe it's a fairly recent update. Thanks for any help you can provide, and keep up the good work !

image.thumb.png.52745acfaf57d71f3ce25a31ba41945a.png

Can you please upload you emby log,

That is a file permissions problem rather than an Emby version one. In your screenshot every other plugin shows -rw-r--r-- but the TV Show Status DLL shows -rwx------, which means only its owner can read it — and that is not the user Emby runs as, so Emby skips it silently.

Over SSH on the NAS:

chmod 644 /volume3/@appdata/EmbyServer/plugins/EmbyTVShowStatus.dll

Then restart Emby Server. It should appear in the plugins list. If you would rather not use SSH, deleting the file and copying it again through File Station usually sets the permissions correctly too.

Thanks😀

Edited by Blueskies278
Blueskies278
Posted
6 hours ago, booga69 said:

And after playing with it a little, IT'S AMAZING. That's one of the most useful plugins for Emby that I've tried so far ! Kudos to you. 

I have only one Feature/improvment request : Would it be able to add a setting for the plugin where we'd be able to change the text for the badges, so that we can translate them ?

Thanks — glad it is earning its place 😀

Translatable badge text is a fair request and it is on the list, but it is a bigger change than it looks, so I do not want to promise it soon.

Two things make it awkward. The first is word order. The badge is not one fixed string — it is assembled, so "Season" and the number and "Premiere" are separate pieces. That works in English and falls apart elsewhere, where the number often sits in the middle of the phrase. Doing it properly means every label becomes a template you fill in, rather than a box you type a word into, so the translation decides where the number goes.

The second is the reason I would rather take my time. The plugin can also put "Season Premiere" into the episode title itself, and it removes that text again by looking for exactly those words. If the wording becomes editable and someone changes it, everything already written into their library stops matching and cannot be cleaned up — the old text stays in their episode names for good. That is a repair job on someone's library, not a cosmetic bug, and it needs handling before anything ships.

There is also a smaller cost worth knowing: badges are sized so the longest label still fits, so longer wording in any language makes every badge slightly smaller.

I'm not saying no — but I will add it to my roadmap once TV Show Status is stable.

Blueskies278
Posted (edited)

TV Show Status 2.5.136.0

Two new settings are added at the bottom of the page. Nothing you already have changes — every existing setting keeps its name and its default.

New

  • Your settings are now backed up automatically. Every time you press Save, a dated copy of your settings is written to a backups folder beside Emby's plugin configurations, and a single always-current copy goes to the folder you choose below. If the settings are ever found completely empty when the server starts, the newest copy is restored by itself and the log says so. This exists because everything on that page — the TMDB key, the preferred user, every colour, size, position and window — lives in a single file, and anything that loses that file loses all of it with no way to reconstruct the set. Server-side, so it protects every client equally and changes nothing you can see
  • How many backups to keep — how many of those dated copies are kept before the oldest is deleted. 10 by default, which is enough to step back through a bad week. 0 keeps every backup forever and deletes nothing, so only use it if you intend to tidy the folder yourself. The files are a few kilobytes each
  • Folder for exported settings — pick a folder you can reach from your own computer, and every time you press Save your current settings are written there as TV Show Status-settings-current.json, overwritten each time. That folder always holds your live configuration. The Settings backup box names the file it just wrote, so you can see it happen. Leave the folder empty and nothing is written there — the dated automatic backups carry on regardless
  • Export and import, in Dashboard → Scheduled Tasks under a new "TV Show Status" category. Export TV Show Status settings writes a dated file and runs weekly on Sundays by default, so a working configuration is never more than a week from a copy; the play button runs it immediately. Import TV Show Status settingsreads the newest exported file back and never runs on a schedule — only when you press it — and it backs up what it is replacing first. Use the pair to move a working setup to another server, or to keep a copy off the machine entirely. The exported file contains your TMDB API key in plain text, so keep it somewhere private

Fixed

  • "Season Finale" was appearing on seasons that were still being published. A season showing far fewer episodes than that show normally runs was being read as finished. The finale marker is now withheld in two cases: when the episode has no real title yet, and when the season is running far shorter than that show's own completed seasons. Fixed in all four places the finale was worked out — the badge drawn into the artwork, which reaches every client; the words added to the episode name; and the two counts the browser script uses for library cards and Upcoming
  • A season whose episode count TMDB has not caught up on no longer mis-flags its finale. Where the companion plugin supplies air dates, the season's real length is now taken from those as well, and the larger of the two counts wins. TMDB's announced count can lag reality by weeks on a running show, and a short count is exactly what made an ordinary mid-season episode look like the last one. Affects the artwork badge on every client and the browser badges alike
  • Bad air-date corrections are now ignored rather than applied. The companion plugin's timezone correction only ever moves an episode forward by a single day, so anything larger is a mistake somewhere upstream and is now rejected with the reason written to the log. Five wrong dates were caught by this during testing. Affects every client, since it changes what the badge reports

Known limitation

  • A badge change can take a while to show up in the Emby apps. The badge is drawn into the artwork on the server, and an app keeps showing the copy it has already cached until the server redraws the image and the app fetches it again. This release changes how badges are worked out, so every badge redraws once — nothing is wrong if a card still looks the same shortly after updating. Force-closing the app makes it drop its cached artwork, and a metadata refresh on the show does the same from the server end. A browser shows the change as soon as the page is refreshed
  • In the Emby apps, a premiere or finale badge appears on every Upcoming card of that show, not just the episode it refers to. Unaired episodes have no artwork of their own, so every card requests the same series image and the server cannot tell them apart. Only a browser can, which is why the per-episode badges are web-only
  • To mark those episodes on TV and phone apps, the companion plugin TV Air Dates can put the words in front of the episode title instead
  • The automatic restore only triggers on a completely empty settings file — specifically, a blank TMDB API key. A partially filled page is never touched, deliberately: silently overwriting settings you had just changed would be a worse problem than the one being solved. If you need an older configuration back, the dated files are in the backups folder and the import task will load one

TV Show Status — what it is and how to use it

An unofficial Emby Server plugin. Version 2.5.136.0, September 2026.


The problem it solves

You open your TV library and every show looks the same. Nothing tells you which ones are still running, which have finished, which were cancelled halfway through, or when the next episode of the one you're following actually lands.

TV Show Status puts that on the artwork. A returning show carries its next air date, an ended show says so, a cancelled one is marked differently again, and a season that has finished airing can be flagged as ready to watch straight through.

All of it comes from TMDB, and all of it is yours to configure — colour, size, position, which shows get what, and whether posters and thumbnails behave the same way.


The one thing worth understanding first

There are three separate ways a badge can reach you, and almost every question about this plugin turns out to be about which one is in play. They are independent, they can be used together, and they have different reach.

Badges drawn into the artwork. The plugin draws the badge into the image on the server, so it appears on every client — Android TV, Fire TV, tvOS, iOS, the mobile apps and the browser — with nothing to install on the device. This is the main thing the plugin does. The trade-off is that the badge sits on the artwork itself, and because one image serves every card of a show, a per-episode badge lands on all of that show's cards rather than just the one it refers to.

Badges drawn by the web script. A small script the plugin deploys into Emby's own web folder draws badges on library cards and in Upcoming. It knows which page it is on and which episode each card is, so it can be genuinely per-episode and can badge Upcoming without touching your library view. The catch, stated plainly: browser only. The Emby apps do not load it and see nothing from it.

Description text. The plugin writes the status as plain text at the start of the show's description. Every client can display a description, so this reaches stock Android and tvOS too — but it is text, with no icon or colour, and it edits real library metadata.

Knowing which of the three you are looking at answers most of the puzzles further down.


Before you start

Back up your Emby server. Two of the three routes above write to your library: the description prefix edits the show overview, and the episode-name marker edits episode titles. Both are reversible by switching the setting off, but a backup costs you nothing and is the sensible habit.

If you run Emby in Docker, that means the config folder. On a NAS package, use the NAS's own backup. On Windows, macOS or Linux, stop the server and copy the Emby Server data folder somewhere safe.


Step 1 — get your TMDB key

You need one key, and it is free and instant.

  1. Go to themoviedb.org/settings/api
  2. Create a free account if you do not have one, and request an API key
  3. Copy the API Key (v3 auth) value — not the read access token

That is the only credential the plugin uses. Everything it displays comes from TMDB.


Step 2 — install the plugin

The file is EmbyTVShowStatus.dll. It goes in the plugins folder directly below your Emby Server data folder.

Stop Emby Server first. Emby holds plugin files open while running.

Where the data folder is

Platform Data folder
Windows C:\Users\<you>\AppData\Roaming\Emby-Server\programdata
macOS /Users/<you>/.config/emby-server (older installs: /Users/<you>/emby-server)
Linux (deb/rpm) /var/lib/emby
Docker whatever you mapped to /config inside the container
Synology DSM 7 /volume1/@appdata/EmbyServer
Synology DSM 6 /volume1/Emby
QNAP /share/CACHEDEV1_DATA/.qpkg/EmbyServer/programdata
UGREEN (UGOS) Docker only — whatever you mapped to /config, usually /volume1/docker/emby/config
Asustor / TerraMaster /home/emby

So on Windows the plugin goes in \programdata\plugins\EmbyTVShowStatus.dll, on Linux in /var/lib/emby/plugins/EmbyTVShowStatus.dll, and so on.

If you are not sure which applies, Emby will tell you: Dashboard → Help → Support → Server Paths.

Platform notes

Windows — copy the DLL in, start Emby. Nothing else to do.

macOS — the .config folder is hidden in Finder. Press Cmd+Shift+G and paste the path, copy the DLL in, then start Emby.

Linux — the DLL must be readable by the user Emby runs as, usually emby. After copying:

 
sudo chown emby:emby /var/lib/emby/plugins/EmbyTVShowStatus.dll
sudo chmod 644 /var/lib/emby/plugins/EmbyTVShowStatus.dll

Docker — copy into the mapped config folder from the host, or go through the container:

 
sudo docker cp EmbyTVShowStatus.dll <container>:/config/plugins/EmbyTVShowStatus.dll
sudo docker restart <container>

NAS (Synology, QNAP, UGREEN, Asustor, TerraMaster) — same as Linux, and the permissions step matters most here.

If the plugin never appears in the plugin list, this is almost always why. A file copied over SMB or through a file manager often arrives readable only by the account that copied it. Emby then cannot read it, loads nothing, and logs nothing — which looks exactly like an incompatible build. Check with ls -la in the plugins folder: the file should read -rw-r--r--, matching the other plugins beside it. If it does not, chmod 644 it and restart.


Step 3 — set it up

Start Emby, then Dashboard → Plugins → TV Show Status.

  1. TMDB API Key — paste it in
  2. Show badges on show posters and thumbnails — turn this on. It is off by default, and it is the setting that makes the plugin visible on every client
  3. Press Save

That is the working minimum. Give Emby a few minutes to redraw artwork, then look at your library.

The settings worth thinking about

Poster: show status and Thumbnail: what to show are separate on purpose. Posters are the tall images in your library grid; thumbnails are the wide 16:9 images Upcoming and thumbnail views use. Setting them differently is what lets you have, say, a badged library and a clean Upcoming list.

Background matters more than it sounds. The badge is drawn onto the full-size artwork and your TV app then shrinks it, so anything showing through the badge eats contrast before the shrinking even starts. Measured on a real poster at the size an Android box receives, Medium recovers about 16% more edge detail than Translucent and Solid about 32%. If badges look soft on Android TV, Fire TV or tvOS, this is the single most effective change available and it needs nothing installed on the device.

Position defaults to Top left because most key art leaves that corner clear. Avoid Top right unless you want it beside Emby's own unwatched-episode count, which is drawn there.

Colour: ended and Colour: cancelled are deliberately separate. An ended show told its story; a cancelled one usually stopped on a cliffhanger. If you use the badge to decide what is safe to start, that distinction is the whole point. If you would rather not make it, Show cancelled as ended collapses the two.

Preferred Emby user is only used by the "ready to binge" mode and by "Hide once watched". It must be your Emby username — the name you sign in with — not your display name. They are often different, and a mismatch quietly falls back to plain status rather than reporting an error.

The combination worth knowing

Set Thumbnail: what to show to Nothing and turn on Show badges on library cards and Upcoming. You then get badges in your library's thumbnail view and a clean, per-episode Upcoming list — something the artwork badges cannot do alone, because both views ask the server for the same image and it has no way to tell them apart. A browser script does know which page it is on. Web browser only.

Episode badges

Episode: what to show badges individual episodes rather than the show. One requirement that is easy to miss: an episode only gets its own badge if Emby is using that episode's own picture. For episodes with no picture, go to Dashboard → Libraries → your TV library → Manage library → Episode Image Fetchers and tick TV Show Status, ranked below TheMovieDb and TheTVDB. It arrives unticked.


Step 4 — check it worked

Open the settings page again and read the status boxes.

Air Dates tells you whether the companion TV Air Dates plugin is supplying real broadcast times. If it is not installed that is perfectly normal — it just means TMDB's own dates are used, which outside the US can read a day early for evening US broadcasts.

Poster Overlay tells you whether the overlay is drawing and in which mode.

Web Badge/Description Script tells you whether the browser script deployed successfully. It re-checks every time you open the page. If it reports a problem, the message contains the one-line fix — on some Docker setups Emby cannot write to its own web folder, which is the usual cause.

Settings backup shows the result of the last export or import.


Keeping your settings safe

Everything on that page lives in a single file, and it includes your TMDB key. Lose it and there is no way to reconstruct thirty-odd settings from memory. The plugin protects it two ways.

Automatically, every time you press Save. Two copies are written, and knowing which is which saves confusion later.

A dated copy goes to plugins/configurations/tvshowstatus-settings-backups/, beside Emby's own configuration files. That is the safety net: if your settings are ever found empty at startup, the newest one is restored by itself. How many backups to keep sets how many are kept — 10 by default, 0 keeps everything.

At the same time, your current settings are written to the folder you set in Folder for exported settings, as a single file named TV Show Status-settings-current.json, overwritten on each save. That folder therefore always holds your live configuration, somewhere you can actually reach it. Leave the folder empty and nothing is written there; the dated backups carry on regardless.

After each save the Settings backup box names the file it just wrote, so you can see it happened rather than take it on trust.

The automatic restore only fires on a completely empty settings file — a blank TMDB key. A partly filled page is never touched, because silently overwriting settings you had just changed would be worse than the problem being solved.

On demand — in Dashboard → Scheduled Tasks, under "TV Show Status":

  • Export TV Show Status settings — writes a dated snapshot to the same folder, alongside the always-current file. Runs weekly on Sundays; the play button runs it now. Use it to capture a known-good configuration before changing something, or before rebuilding a server
  • Import TV Show Status settings — reads the newest dated snapshot back. Only runs when you press it, and backs up what it is replacing first

The exported file contains your TMDB API key in plain text. Treat it like a password.


If something is wrong

The plugin does not appear in the list — permissions, nine times out of ten. See the note in Step 2.

No badges anywhere — check Show badges on show posters and thumbnails is on, and that the TMDB key is filled in. Both are needed before anything is drawn.

Badges look soft or blurry on a TV app — raise Background to Medium or Solid, and consider a larger Size. The badge is drawn at full size and shrunk by the device, so contrast is what survives that, not detail.

A badge has not changed after I changed a setting — the apps cache artwork. The server has to redraw the image and the app has to fetch it again. Force-closing the app drops its cached artwork; a metadata refresh on the show does the same from the server end. A browser updates on refresh.

"Season Premiere" appears on several cards of the same show — expected in the apps. Unaired episodes have no artwork of their own, so every Upcoming card of that show requests the same series image and the server cannot tell them apart. Only the browser can be per-episode.

A show reads Complete while it is still mid-season — TMDB reports "nothing scheduled" both for a season that has genuinely finished and for one simply between episodes with no date published yet. Those cannot be told apart from the data. It corrects itself as soon as TMDB publishes the next date.

Episode badges are not appearing — the Episode Image Fetchers step in Step 3. Without it, episodes with no picture of their own fall back to the series image and show the show's badge instead.

Web badges are missing but artwork badges are fine — read the Web Badge/Description Script status box. The script has to be written into Emby's web folder and some Docker setups block that.

The server log is the place to look: Dashboard → Logs. Every line from this plugin is prefixed [TVShowStatus].


Disclaimer

This is an unofficial, hobby-built plugin. It is not made by, endorsed by, or affiliated with Emby or TMDB. It uses the TMDB API but is not endorsed or certified by TMDB.

It is beta software and it can write to your library: with the relevant settings turned on it changes show descriptions and episode titles. Those are real edits to your metadata, reversible by switching the setting off. It also modifies cached artwork — your original image files are never touched, and turning the overlay off restores the artwork as Emby regenerates its cache. Take a backup of your Emby server before installing, and keep one. It is supplied as-is, with no warranty of any kind — you run it at your own risk, and I cannot be held responsible for anything it does to your library, your server or your data.

You supply your own TMDB API key and remain bound by TMDB's terms. Exported settings files contain that key in plain text; treat them as passwords.

Please report bugs along with your Emby log. Thanks

image.thumb.png.5fd28c0bd58cada819fb0ddca29688e0.png

image.png.daf685e6517485bf79f641093168af74.png

EmbyTVShowStatus.dll TV-Show-Status-guide-2_5_136_0.pdf TV-Show-Status-settings-2_5_136_0.pdf

Edited by Blueskies278
  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...