Jellyfin fails to fill in episode number for daily shows (in some cases) #7836

Open
opened 2026-02-07 05:26:00 +03:00 by OVERLORD · 7 comments
Owner

Originally created by @TheHYPO35 on GitHub (Nov 26, 2025).

Description of the bug

After upgrading from 10.10.7 to 10.11.3, I have noted that a daily show (filenames with 2025-11-26 dating rather than episode numbers) that has had no issues* for a long time suddenly is not populating the episode number.

The title, season, airdate, overview, TVDB ID, etc. populate, but the episode number is left blank.

I just threw five episodes of an unrelated older daily TV show into Jellyfin and three of them populated without episode numbers (two had numbers). I am not certain why this is happening or what the difference is.

For the latter series (which uses season numbers), I did get an error from the TVMaze provider that " [GetMetadata] Found multiple possible episodes in TVMaze for file" and required a tvmazeid be included in the filename.

TVdb returned:

[2025-11-26 11:56:12.738 -05:00] [ERR] [10] Jellyfin.Plugin.Tvdb.Providers.TvdbEpisodeImageProvider: Episode 1xnull not found for series 76737:"Late Night with Conan O'Brien"

The five files are named in the exact same format.

For the former series (which uses season years), I get the error:

[2025-11-25 01:31:57.086 -05:00] [ERR] [44] Jellyfin.Plugin.Tvdb.Providers.TvdbEpisodeImageProvider: Episode 2025xnull not found for series 77075:"Jeopardy!"

But no tvmaze error.

*I put an asterisk above where I said that this show has not caused issues for a long time - there was a few days about a year and a half ago where episodes of the same show were entirely unidentified. This seemingly fixed itself a few days later. This seems to be a different issue, because the episodes are identified correctly - the episode number just isn't filled in.

Reproduction steps

I presume it should occur if you add a file with a name like "Jeopardy! - 2025-11-25" to your library

What is the current bug behavior?

The episode number is not populated

What is the expected correct behavior?

The episode number should be populated

Jellyfin Server version

10.11.3

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.11.3

Environment

- OS: Debian 12.12
- Linux Kernel: 6.12.47+rpt-rpi-v8
- Virtualization: Docker
- Plugins: various - TheTVDB 20.0.0.0, TMDb 10.11.3.0 and TVMaze 13.0.0.0 seem the most relevant

Jellyfin logs

See above

FFmpeg logs


Client / Browser logs

No response

Relevant screenshots or videos

No response

Additional information

No response

Originally created by @TheHYPO35 on GitHub (Nov 26, 2025). ### Description of the bug After upgrading from 10.10.7 to 10.11.3, I have noted that a daily show (filenames with 2025-11-26 dating rather than episode numbers) that has had no issues* for a long time suddenly is not populating the episode number. The title, season, airdate, overview, TVDB ID, etc. populate, but the episode number is left blank. I just threw five episodes of an unrelated older daily TV show into Jellyfin and three of them populated without episode numbers (two had numbers). I am not certain why this is happening or what the difference is. For the latter series (which uses season numbers), I did get an error from the TVMaze provider that " [GetMetadata] Found multiple possible episodes in TVMaze for file" and required a tvmazeid be included in the filename. TVdb returned: [2025-11-26 11:56:12.738 -05:00] [ERR] [10] Jellyfin.Plugin.Tvdb.Providers.TvdbEpisodeImageProvider: Episode 1xnull not found for series 76737:"Late Night with Conan O'Brien" The five files are named in the exact same format. For the former series (which uses season years), I get the error: [2025-11-25 01:31:57.086 -05:00] [ERR] [44] Jellyfin.Plugin.Tvdb.Providers.TvdbEpisodeImageProvider: Episode 2025xnull not found for series 77075:"Jeopardy!" But no tvmaze error. *I put an asterisk above where I said that this show has not caused issues for a long time - there was a few days about a year and a half ago where episodes of the same show were entirely unidentified. This seemingly fixed itself a few days later. This seems to be a different issue, because the episodes are identified correctly - the episode number just isn't filled in. ### Reproduction steps I presume it should occur if you add a file with a name like "Jeopardy! - 2025-11-25" to your library ### What is the current _bug_ behavior? The episode number is not populated ### What is the expected _correct_ behavior? The episode number should be populated ### Jellyfin Server version 10.11.3 ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.11.3 ### Environment ```markdown - OS: Debian 12.12 - Linux Kernel: 6.12.47+rpt-rpi-v8 - Virtualization: Docker - Plugins: various - TheTVDB 20.0.0.0, TMDb 10.11.3.0 and TVMaze 13.0.0.0 seem the most relevant ``` ### Jellyfin logs ```shell See above ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs _No response_ ### Relevant screenshots or videos _No response_ ### Additional information _No response_
OVERLORD added the bug label 2026-02-07 05:26:00 +03:00
Author
Owner

@TheHYPO35 commented on GitHub (Nov 26, 2025):

I will add to this that I've now added many additional episodes of Late Night and all of them lack episode numbers (I'm not sure why a mere two first season episodes didn't have this problem)

@TheHYPO35 commented on GitHub (Nov 26, 2025): I will add to this that I've now added many additional episodes of Late Night and all of them lack episode numbers (I'm not sure why a mere two first season episodes didn't have this problem)
Author
Owner

@TheHYPO35 commented on GitHub (Dec 10, 2025):

I can also confirm, if I manually add the episode number, then do a 'replace all metadata', it actually removes the episode number.

@TheHYPO35 commented on GitHub (Dec 10, 2025): I can also confirm, if I manually add the episode number, then do a 'replace all metadata', it actually removes the episode number.
Author
Owner

@BartvandenHout commented on GitHub (Jan 9, 2026):

For me also on (some) non-daily shows: no episode-number and the episode-name is the filename (without releasegroup)

Ubuntu 24.04 / Jellyfin Server 10.11.5

@BartvandenHout commented on GitHub (Jan 9, 2026): For me also on (some) non-daily shows: no episode-number and the episode-name is the filename (without releasegroup) Ubuntu 24.04 / Jellyfin Server 10.11.5
Author
Owner

@AdrianEdelen commented on GitHub (Jan 9, 2026):

It looks like the tests expect the episode number to be null for daily episodes and those tests haven't changed recently. so I think this is intended when parsing.

a1e0e4fd9d/tests/Jellyfin.Naming.Tests/TV/DailyEpisodeTests.cs (L25)

In NamingOptions.cs there is a flag for IsByDate in the EpisodeExpression constructor

a1e0e4fd9d/Emby.Naming/Common/EpisodeExpression.cs (L19-L25)

and the epressions themselves:

a1e0e4fd9d/Emby.Naming/Common/NamingOptions.cs (L332-L351)

Then in Library Manager the episode.IndexNumber gets nulled out.

a1e0e4fd9d/Emby.Server.Implementations/Library/LibraryManager.cs (L2727-L2733)

As far as the metadata providers go. it should add the episode number on a metadata refresh.
This points to an issue with the TVDB plugin.

checking the TVDB API directly for an episode of jepoardy it looks like we do have a number value:

{
  "status": "success",
  "data": {
    "id": 11538257,
    "seriesId": 77075,
    "name": "S41 Champions Wildcard Tournament Final Game 1",
    "aired": "2026-01-15",
    "runtime": 20,
    "nameTranslations": [
      "eng"
    ],
    "overview": null,
    "overviewTranslations": [],
    "image": null,
    "imageType": null,
    "isMovie": 0,
    "seasons": [
      {
        "id": 2133521,
        "seriesId": 77075,
        "type": {
          "id": 1,
          "name": "Aired Order",
          "type": "official",
          "alternateName": "Year Order"
        },
        "number": 2026,
        "nameTranslations": null,
        "overviewTranslations": null,
        "companies": {
          "studio": null,
          "network": null,
          "production": null,
          "distributor": null,
          "special_effects": null
        },
        "lastUpdated": "2026-01-04 18:15:51"
      },
      {
        "id": 2200998,
        "seriesId": 77075,
        "type": {
          "id": 2,
          "name": "DVD Order",
          "type": "dvd",
          "alternateName": "Official Order"
        },
        "number": 42,
        "nameTranslations": null,
        "overviewTranslations": null,
        "image": "https://artworks.thetvdb.com/banners/v4/season/2200998/posters/694f13e673f43.jpg",
        "imageType": 7,
        "companies": {
          "studio": null,
          "network": null,
          "production": null,
          "distributor": null,
          "special_effects": null
        },
        "lastUpdated": "2026-01-04 18:15:51"
      }
    ],
    "number": 11, <----- HERE ------------------------------------------
    "absoluteNumber": 0,
    "seasonNumber": 2026,
    "lastUpdated": "2026-01-04 04:13:39",
    "finaleType": null,
    "year": "2026"
  }
}

looking through the tvdb plugin, it appears the issue lies in the GetEpisode method of TvdbEpisodeImageProvider:

c0af8db2e4/Jellyfin.Plugin.Tvdb/Providers/TvdbEpisodeImageProvider.cs (L82-L91)

this error is a red herring, its just a symptom of the null value.

I believe the root cause of the issue is here in the tvdb plugin in the tvdbEpisodeProvider:

c0af8db2e4/Jellyfin.Plugin.Tvdb/Providers/TvdbEpisodeProvider.cs (L215)

when the result is mapped, it only tries to set the id.IndexNumber which is the value from the parsed filename (which is correctly set to null)

it should probably be item.IndexNumber = episode.Number ?? id.IndexNumber; which would first assign the number from tvdb. and prevent the error when trying to fetch the image data.

There probably should also be something in the tvdbImageProvider to more gracefully handle null episode numbers too, however I think the above solution should prevent it from happening in the first place. I think in the case that there is no episode number provided from the API it could still be an issue as well, but that is a data problem I think.

I am pretty new to the jellyfin codebase so if I am missing the mark here let me know, I will try testing this out, can you provide me with a list of the filenames that do and/or don't work?

@AdrianEdelen commented on GitHub (Jan 9, 2026): It looks like the tests expect the episode number to be null for daily episodes and those tests haven't changed recently. so I think this is intended when parsing. https://github.com/jellyfin/jellyfin/blob/a1e0e4fd9df39838db433fac72aa90d71b66fb80/tests/Jellyfin.Naming.Tests/TV/DailyEpisodeTests.cs#L25 In NamingOptions.cs there is a flag for `IsByDate` in the EpisodeExpression constructor https://github.com/jellyfin/jellyfin/blob/a1e0e4fd9df39838db433fac72aa90d71b66fb80/Emby.Naming/Common/EpisodeExpression.cs#L19-L25 and the epressions themselves: https://github.com/jellyfin/jellyfin/blob/a1e0e4fd9df39838db433fac72aa90d71b66fb80/Emby.Naming/Common/NamingOptions.cs#L332-L351 Then in Library Manager the `episode.IndexNumber` gets nulled out. https://github.com/jellyfin/jellyfin/blob/a1e0e4fd9df39838db433fac72aa90d71b66fb80/Emby.Server.Implementations/Library/LibraryManager.cs#L2727-L2733 As far as the metadata providers go. it should add the episode number on a metadata refresh. This points to an issue with the TVDB plugin. checking the TVDB API directly for an episode of jepoardy it looks like we do have a number value: ``` { "status": "success", "data": { "id": 11538257, "seriesId": 77075, "name": "S41 Champions Wildcard Tournament Final Game 1", "aired": "2026-01-15", "runtime": 20, "nameTranslations": [ "eng" ], "overview": null, "overviewTranslations": [], "image": null, "imageType": null, "isMovie": 0, "seasons": [ { "id": 2133521, "seriesId": 77075, "type": { "id": 1, "name": "Aired Order", "type": "official", "alternateName": "Year Order" }, "number": 2026, "nameTranslations": null, "overviewTranslations": null, "companies": { "studio": null, "network": null, "production": null, "distributor": null, "special_effects": null }, "lastUpdated": "2026-01-04 18:15:51" }, { "id": 2200998, "seriesId": 77075, "type": { "id": 2, "name": "DVD Order", "type": "dvd", "alternateName": "Official Order" }, "number": 42, "nameTranslations": null, "overviewTranslations": null, "image": "https://artworks.thetvdb.com/banners/v4/season/2200998/posters/694f13e673f43.jpg", "imageType": 7, "companies": { "studio": null, "network": null, "production": null, "distributor": null, "special_effects": null }, "lastUpdated": "2026-01-04 18:15:51" } ], "number": 11, <----- HERE ------------------------------------------ "absoluteNumber": 0, "seasonNumber": 2026, "lastUpdated": "2026-01-04 04:13:39", "finaleType": null, "year": "2026" } } ``` looking through the tvdb plugin, it appears the issue lies in the GetEpisode method of TvdbEpisodeImageProvider: https://github.com/jellyfin/jellyfin-plugin-tvdb/blob/c0af8db2e48cfca4c12485c53eac666033eaca5b/Jellyfin.Plugin.Tvdb/Providers/TvdbEpisodeImageProvider.cs#L82-L91 this error is a red herring, its just a symptom of the null value. I believe the root cause of the issue is here in the tvdb plugin in the tvdbEpisodeProvider: https://github.com/jellyfin/jellyfin-plugin-tvdb/blob/c0af8db2e48cfca4c12485c53eac666033eaca5b/Jellyfin.Plugin.Tvdb/Providers/TvdbEpisodeProvider.cs#L215 when the result is mapped, it only tries to set the `id.IndexNumber` which is the value from the parsed filename (which is correctly set to null) it should probably be `item.IndexNumber = episode.Number ?? id.IndexNumber;` which would first assign the number from tvdb. and prevent the error when trying to fetch the image data. There probably should also be something in the tvdbImageProvider to more gracefully handle null episode numbers too, however I think the above solution should prevent it from happening in the first place. I think in the case that there is no episode number provided from the API it could still be an issue as well, but that is a data problem I think. I am pretty new to the jellyfin codebase so if I am missing the mark here let me know, I will try testing this out, can you provide me with a list of the filenames that do and/or don't work?
Author
Owner

@BartvandenHout commented on GitHub (Jan 11, 2026):

FYI: my issue also occurs with the TVmaze-plugin (thus not only with TheTVDB-plugin)

@BartvandenHout commented on GitHub (Jan 11, 2026): FYI: my issue also occurs with the TVmaze-plugin (thus not only with TheTVDB-plugin)
Author
Owner

@TheHYPO35 commented on GitHub (Jan 11, 2026):

All I can say is that this was not a problem at all with 10.10, so @AdrianEdelen is there any chance you can just look at what version 10.10 did and figure out what has changed?

@TheHYPO35 commented on GitHub (Jan 11, 2026): All I can say is that this was not a problem at all with 10.10, so @AdrianEdelen is there any chance you can just look at what version 10.10 did and figure out what has changed?
Author
Owner

@BartvandenHout commented on GitHub (Jan 12, 2026):

I installed a clean Jellyfin (to make sure it wasn't a dbase-migration-issue) and tried with a couple episodes that i have the problem with. The issue didn't exist. The problems exist with the (extra) plugins only: TVmaze and TheTVDB, and (indeed @AdrianEdelen) when using their de image-fetchers.

It might be that TheMovieDb has images earlier or faster.

Set the library's Image-Fetchers to jellyfin-default to TheMovieDb and the problem is solved. At least for me.
(I just uninstalled TVmaze and TheTVDB plugins and set all library-metadata and -imagefetchers to the default jellyfin-install)

@BartvandenHout commented on GitHub (Jan 12, 2026): I installed a clean Jellyfin (to make sure it wasn't a dbase-migration-issue) and tried with a couple episodes that i have the problem with. The issue didn't exist. The problems exist with the (extra) plugins only: TVmaze and TheTVDB, and (indeed @AdrianEdelen) when using their de image-fetchers. It might be that TheMovieDb has images earlier or faster. Set the library's Image-Fetchers to jellyfin-default to TheMovieDb and the problem is solved. At least for me. (I just uninstalled TVmaze and TheTVDB plugins and set all library-metadata and -imagefetchers to the default jellyfin-install)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#7836