jellyfin / jellyfin-androidtv

Android TV Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.67k stars 457 forks source link

Respect the user's DisplayMissingEpisodes setting in TV Show libraries #3717

Open fpeter8 opened 2 months ago

fpeter8 commented 2 months ago

Describe the bug

  1. Set the correct settings for the user and library metadata: 1.1: user -> Display -> disable "Display missing episodes within seasons" image 1.2: library -> Disable "Missing Episode Fetcher" image 1.3: plugins -> TheTVDB -> Disable "Include missing specials" image
  2. Reindex the library (replace all metadata)
  3. In the web/android clients missing episodes do not show up any more; these settings work on those platforms. On the TV client however, no amount of repetitions get rid of these.

As a first step, I started with wireshark to see if the server or the client is supposed to filter these out. The web client do not receive missing episode information, while the TV client does. The API calls are also different for the same functionality in this client than in the web client. After reading the API documentation, comparing the two client's web traffic, and trying out modified calls to the API using curl, here are my findings:

There are also several cases, where the main list has this filter applied, but the aggregated response fields do not. For example, during the Items query for the episodes of a season, I got only existing episodes, but the ChildCount was wrong for this list; it included the missing episodes as well.

Side note 1: During the exploratory rounds, I found this dependency in one of the Gradle files, and it seems suspiciously outdated: com.github.jellyfin.jellyfin-sdk-kotlin:android. Is this okay? Side note 2: I have never worked on a Gradle or an Android project, so please bear with me.

Logs

No response

Application version

0.16+

Where did you install the app from?

Google Play

Device information

Nvidia Shield TV Pro

Android version

Android 11?

Jellyfin server version

10.9.7

pavichokche commented 4 weeks ago

I just wanted to mention that this is still very much an issue, and on some shows a very annoying one, in the most current version of Jellyfin Android and Server 10.9.9. Specials seem to be treated as missing episodes so the 'Specials' season is showing for almost every show, and on some show seasons there are mixed-in random ""missing"" specials which makes it annoying to scroll through episodes.

nielsvanvelzen commented 3 weeks ago

the web client always sends the userId parameter; the TV client never does (in my testing)

In 10.9 this is no longer necessary

adding the userId parameter to the API calls sometimes fixes the issue (the server correctly filters these out from the response list)

This should not be possible, the API routes without an userId will behave exactly the same as the old routes with one. It infers the userId from the supplied access token.

Side note 1: During the exploratory rounds, I found this dependency in one of the Gradle files, and it seems suspiciously outdated: com.github.jellyfin.jellyfin-sdk-kotlin:android. Is this okay?

This is our old Java apiclient which is replaced with our new Kotlin SDK. I've been migrating all code for a few years now, and with 0.17 only a few parts of the old playback code use it. So it will be removed not that long from now.