From db5b673cd5cbc4494a57c1097e121f9ed5b9515c Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Tue, 19 May 2026 22:54:06 -0400 Subject: [PATCH] [books] Calculate page data on scrobble save --- vrobbler/apps/scrobbles/models.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index 995c3e5..38c8869 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -571,6 +571,8 @@ class Scrobble(TimeStampedModel): return reverse("scrobbles:finish", kwargs={"uuid": self.uuid}) def save(self, *args, **kwargs): + class_name = self.media_obj.__class__.__name__ + if not self.uuid: self.uuid = uuid4() @@ -593,6 +595,9 @@ class Scrobble(TimeStampedModel): self.stop_timestamp - self.timestamp ).seconds + if class_name == "Book": + self.calculate_reading_stats(commit=False) + if ( self.log and isinstance(self.log, dict) @@ -600,16 +605,14 @@ class Scrobble(TimeStampedModel): and self.log.get("page_end") is not None and "pages_read" not in self.log ): - self.log["pages_read"] = ( - self.log["page_end"] - self.log["page_start"] + 1 - ) + self.log["pages_read"] = self.log["page_end"] - self.log["page_start"] + 1 return super(Scrobble, self).save(*args, **kwargs) def get_absolute_url(self): if not self.uuid: self.uuid = uuid4() - self.save() + self.save(update_fields=["uuid"]) return reverse("scrobbles:detail", kwargs={"uuid": self.uuid}) def push_to_archivebox(self):