diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index 0ec0968..f4d8b57 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -991,7 +991,7 @@ class Scrobble(TimeStampedModel): @property def can_be_updated(self) -> bool: - if self.media_obj.__class__.__name__ in LONG_PLAY_MEDIA.values(): + if self.media_obj.__class__.__name__ in LONG_PLAY_MEDIA.values() and self.source != "readcomicsonline.ru": logger.info( "[scrobbling] cannot be updated, long play media", extra={ @@ -1172,7 +1172,7 @@ class Scrobble(TimeStampedModel): # If it's marked as stopped, send it through our update mechanism, which will complete it if scrobble and ( scrobble.can_be_updated - or read_log_page + or (read_log_page and scrobble.can_be_updated) or scrobble_data["playback_status"] == "stopped" ): if read_log_page: @@ -1496,7 +1496,7 @@ class Scrobble(TimeStampedModel): # --- Sort safely by numeric page_number --- def safe_page_number(entry): try: - return int(entry.get("page_number", 0)) + return int(getattr("page_number", entry), 0) except (ValueError, TypeError): return float("inf") # push invalid entries to the end diff --git a/vrobbler/apps/scrobbles/views.py b/vrobbler/apps/scrobbles/views.py index 1a8810b..dd2c130 100644 --- a/vrobbler/apps/scrobbles/views.py +++ b/vrobbler/apps/scrobbles/views.py @@ -625,7 +625,7 @@ def scrobble_start(request, uuid): if ( user.profile.redirect_to_webpage - and media_obj.__class__.__name__ == Scrobble.MediaType.WEBPAGE + and (media_obj.__class__.__name__ == Scrobble.MediaType.WEBPAGE or media_obj.__class__.__name__ == Scrobble.MediaType.BOOK) ): logger.info(f"Redirecting to {media_obj} detail page") return HttpResponseRedirect(media_obj.url)