[scrobbles] Add check for long playing videos

This commit is contained in:
2024-03-06 19:07:29 -05:00
parent 65944eb911
commit 4642063510

View File

@ -5,6 +5,8 @@ import logging
from typing import Iterable, Optional from typing import Iterable, Optional
from uuid import uuid4 from uuid import uuid4
import pendulum
from boardgames.models import BoardGame from boardgames.models import BoardGame
from books.koreader import process_koreader_sqlite_file from books.koreader import process_koreader_sqlite_file
from books.models import Book from books.models import Book
@ -687,6 +689,20 @@ class Scrobble(TimeStampedModel):
@property @property
def can_be_updated(self) -> bool: def can_be_updated(self) -> bool:
updatable = True updatable = True
probably_still_watching = False
if self.media_type == self.MediaType.VIDEO:
probably_still_watching = (
pendulum.now() - self.timestamp
).seconds < 1800 # 30 min
logger.info(
"[scrobbling] checking for long played video",
extra={
"media_id": self.media_obj.id,
"scrobble_id": self.id,
"media_type": self.media_type,
"probably_still_watching": probably_still_watching,
},
)
if self.media_obj.__class__.__name__ in LONG_PLAY_MEDIA.values(): if self.media_obj.__class__.__name__ in LONG_PLAY_MEDIA.values():
logger.info( logger.info(
@ -698,7 +714,11 @@ class Scrobble(TimeStampedModel):
}, },
) )
updatable = False updatable = False
if updatable and self.percent_played >= 100: if (
updatable
and self.percent_played >= 100
and not probably_still_watching
):
logger.info( logger.info(
f"[scrobbling] cannot be updated, existing scrobble is 100% played", f"[scrobbling] cannot be updated, existing scrobble is 100% played",
extra={ extra={