diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index 1298000..ee5119f 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -1087,6 +1087,7 @@ class Scrobble(TimeStampedModel): key = media_class_to_foreign_key(media.__class__.__name__) media_query = models.Q(**{key: media}) scrobble_data[key + "_id"] = media.id + skip_in_progress_check = kwargs.get("skip_in_progress_check", False) # Find our last scrobble of this media item (track, video, etc) scrobble = ( @@ -1110,27 +1111,31 @@ class Scrobble(TimeStampedModel): ) return scrobble - logger.info( - f"[create_or_update] check for existing scrobble to update ", - extra={ - "scrobble_id": scrobble.id if scrobble else None, - "media_type": mtype, - "media_id": media.id, - "scrobble_data": scrobble_data, - }, - ) - scrobble_data["playback_status"] = scrobble_data.pop("status", None) - # If it's marked as stopped, send it through our update mechanism, which will complete it - if scrobble and ( - scrobble.can_be_updated - or scrobble_data["playback_status"] == "stopped" - ): - if "log" in scrobble_data.keys() and scrobble.log: - scrobble_data["log"] = scrobble.log | scrobble_data["log"] - return scrobble.update(scrobble_data) + if not skip_in_progress_check: + logger.info( + f"[create_or_update] check for existing scrobble to update ", + extra={ + "scrobble_id": scrobble.id if scrobble else None, + "media_type": mtype, + "media_id": media.id, + "scrobble_data": scrobble_data, + }, + ) + scrobble_data["playback_status"] = scrobble_data.pop( + "status", None + ) + # If it's marked as stopped, send it through our update mechanism, which will complete it + if scrobble and ( + scrobble.can_be_updated + or scrobble_data["playback_status"] == "stopped" + ): + if "log" in scrobble_data.keys() and scrobble.log: + scrobble_data["log"] = scrobble.log | scrobble_data["log"] + return scrobble.update(scrobble_data) + + # Discard status before creating + scrobble_data.pop("playback_status") - # Discard status before creating - scrobble_data.pop("playback_status") logger.info( f"[scrobbling] creating new scrobble", extra={