Jellyfin/Emby: Use the same endpoint for marking as for partials to fix emby

Signed-off-by: Luis Garcia <git@luigi311.com>
pull/292/head
Luis Garcia 2025-07-12 00:04:58 +00:00
parent 2208d91d07
commit 5501e21aa8
1 changed files with 30 additions and 5 deletions

View File

@ -7,7 +7,6 @@ from math import floor
from typing import Any, Literal
from packaging.version import parse, Version
from loguru import logger
from urllib.parse import quote
from src.functions import (
search_mapping,
@ -575,9 +574,18 @@ class JellyfinEmby:
if stored_movie.status.completed:
msg = f"{self.server_type}: {jellyfin_video.get('Name')} as watched for {user_name} in {library_name}"
if not dryrun:
user_data_payload: dict[
str, float | bool | datetime
] = {
"PlayCount": 1,
"Played": True,
"PlaybackPositionTicks": 0,
"LastPlayedDate": viewed_date,
}
self.query(
f"/Users/{user_id}/PlayedItems/{jellyfin_video_id}?DatePlayed={quote(viewed_date)}",
f"/Users/{user_id}/Items/{jellyfin_video_id}/UserData",
"post",
json=user_data_payload,
)
logger.success(f"{'[DRYRUN] ' if dryrun else ''}{msg}")
@ -595,7 +603,11 @@ class JellyfinEmby:
msg = f"{self.server_type}: {jellyfin_video.get('Name')} as partially watched for {floor(stored_movie.status.time / 60_000)} minutes for {user_name} in {library_name}"
if not dryrun:
user_data_payload: dict[str, float] = {
user_data_payload: dict[
str, float | bool | datetime
] = {
"PlayCount": 0,
"Played": False,
"PlaybackPositionTicks": stored_movie.status.time
* 10_000,
"LastPlayedDate": viewed_date,
@ -699,9 +711,18 @@ class JellyfinEmby:
+ f" as watched for {user_name} in {library_name}"
)
if not dryrun:
user_data_payload: dict[
str, float | bool | datetime
] = {
"PlayCount": 1,
"Played": True,
"PlaybackPositionTicks": 0,
"LastPlayedDate": viewed_date,
}
self.query(
f"/Users/{user_id}/PlayedItems/{jellyfin_episode_id}?DatePlayed={quote(viewed_date)}",
f"/Users/{user_id}/Items/{jellyfin_episode_id}/UserData",
"post",
json=user_data_payload,
)
logger.success(
@ -725,7 +746,11 @@ class JellyfinEmby:
)
if not dryrun:
user_data_payload = {
user_data_payload: dict[
str, float | bool | datetime
] = {
"PlayCount": 0,
"Played": False,
"PlaybackPositionTicks": stored_ep.status.time
* 10_000,
"LastPlayedDate": viewed_date,