diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index ad2d3ff..d5ae74c 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -1140,9 +1140,9 @@ class Scrobble(TimeStampedModel): if existing_locations := location.in_proximity(named=True): existing_location = existing_locations.first() ts = int(pendulum.now().timestamp()) - scrobble.log[ - ts - ] = f"Location {location.id} too close to this scrobble" + scrobble.log[ts] = ( + f"Location {location.id} too close to this scrobble" + ) scrobble.save(update_fields=["log"]) logger.info( f"[scrobbling] finished - found existing named location", @@ -1216,8 +1216,8 @@ class Scrobble(TimeStampedModel): send_notifications_for_scrobble(scrobble.id) return scrobble - def stop(self, force_finish=False) -> None: - self.stop_timestamp = timezone.now() + def stop(self, timestamp=None, force_finish=False) -> None: + self.stop_timestamp = timestamp or timezone.now() self.played_to_completion = True self.in_progress = False diff --git a/vrobbler/apps/scrobbles/scrobblers.py b/vrobbler/apps/scrobbles/scrobblers.py index 35fd49a..a396cb2 100644 --- a/vrobbler/apps/scrobbles/scrobblers.py +++ b/vrobbler/apps/scrobbles/scrobblers.py @@ -1,3 +1,4 @@ +from datetime import datetime import logging import re from typing import Optional @@ -326,7 +327,7 @@ def manual_scrobble_from_url( def todoist_scrobble_task_finish( - todoist_task: dict, user_id: int + todoist_task: dict, user_id: int, timestamp: datetime ) -> Optional[Scrobble]: scrobble = Scrobble.objects.filter( user_id=user_id, @@ -341,7 +342,7 @@ def todoist_scrobble_task_finish( ) return - scrobble.stop(force_finish=True) + scrobble.stop(timestamp=timestamp, force_finish=True) return scrobble @@ -447,7 +448,7 @@ def todoist_scrobble_task( "todoist_id": todoist_task["todoist_id"], }, ) - return todoist_scrobble_task_finish(todoist_task, user_id) + return todoist_scrobble_task_finish(todoist_task, user_id, timestamp) # Default to create new scrobble "if not in_progress_scrobble and in_progress_in_todoist" # TODO Should use updated_at from TOdoist, but parsing isn't working