|
@@ -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={
|