Переглянути джерело

Try to ignore duplicate geo scrobbles

Colin Powell 1 рік тому
батько
коміт
1670a7cd7a
1 змінених файлів з 11 додано та 0 видалено
  1. 11 0
      vrobbler/apps/scrobbles/models.py

+ 11 - 0
vrobbler/apps/scrobbles/models.py

@@ -674,6 +674,7 @@ class Scrobble(TimeStampedModel):
     ) -> "Scrobble":
 
         media_class = media.__class__.__name__
+        dup = None
 
         media_query = models.Q(track=media)
         if media_class == "Track":
@@ -699,6 +700,15 @@ class Scrobble(TimeStampedModel):
         if media_class == "GeoLocation":
             media_query = models.Q(geo_location=media)
             scrobble_data["geo_location_id"] = media.id
+            dup = cls.objects.filter(
+                    media_type=cls.MEDIA_TYPE.GeoLocation, 
+                    timestamp = scrobble_data.get("timestamp"),
+            ).first()
+
+        if dup:
+            logger.info("[scrobbling] scrobble with identical timestamp found")
+            return
+
 
         scrobble = (
             cls.objects.filter(
@@ -709,6 +719,7 @@ class Scrobble(TimeStampedModel):
             .first()
         )
 
+
         if scrobble and scrobble.can_be_updated:
             source = scrobble_data["source"]
             mtype = media.__class__.__name__