Media streamed from Jellyfin are marked as watched even if they were only partially played

Issue description:
When I stream to from Jellyfin and stop playback midway, it seems to be reported to the server as “watched” rather than “paused” / “in progress” (only tested this for Movies).

Steps to reproduce:
0. I used the Yatse’s Movies screen, but the behavior does not differ.

  1. Start playback of a video (I used Mx Player and chose one from “Recently added movies”).
  2. Stop playback after a few seconds.
    → Note that the correct progress is displayed in “Unfinished movies”
    → Also note that the movie is marked “Watched” in the Jellyfin Web UI.
  3. Force a database sync in Yatse (swipe down).
    → Note that the movie is not displayed in “Unfinished movies” anymore.
    → Note that it is not listed in “Recently played movies”.
    → Note that it is marked as watched in “Recently added movies” (if not hidden).

Logs:
Link

Additional information:
When playing and stopping from Kodi, progress is reported correctly. It must be supported by the Jellyfin API.

Would it maybe make sense to introduce a “jellyfin” tag to the Support section? Kodi, Plex and Emby have one…

Log link is not working.

About API, the main issue is that Yatse have no way to update the timings during playback since MxPlayer does not broadcast them, I only have the position when it ends.
Previously when setting a position then stopping Jellyfin bugged and marked the media as played as it’s internal timings did not allow such behavior. I guess it’s still the case but I can try again to find another workaround.

Just note that they do not really care about external players API issues.

I fixed the link. Sorry about that.

I do not think that this is an Mx Player issue. The timestamp displayed in “Unfinished movies” before the next database sync always looks correct.

Would be great if you a workaround. Thank you a lot!

You miss understood what I wrote.

MX player only reports the position when it ends, so Yatse can’t update Jellyfish in real time during playback.

When the media stop Yatse have the position sends it to Jellyfin and update it’s own database.

As long as you do not sync you see Yatse data that is correct. After the sync you see Jellyfin data that is incorrect.

Their bug was that when you say media is stopped at position X without having sending an unknown amount of intermediary position it marked the media as watched for no reason (so a bug).

Seems it’s still the case but since I now have dozens of workarounds for Jellyfin bugs I can try again to find another one for this one.

That’s what I expected from the Yatse side, but yes. Now I get that it is a (already reported?) bug in Jellyfin.

Does VLC report the position during playback, so it could be a workaround for me using that instead?

Nothing reports the position as they don’t know how and Android does not allow Yatse to ask the players during playback either.

I’ll probably try the dumb road of reporting fake positions with small delays until I figure out the right delay.

From the logs you played the file for 4 seconds ?

From the logs Jellyfin returned an error during the update can you provide them too when reproducing the issue ?

Ok so did some tests and the issue is still present, but simulating a playing session does workaround this.

Next release is already pre pushed so the fix won’t be in it but in the one after 10.11.0.