]> git.0d.be Git - django-panik-nonstop.git/commitdiff
change weight stats to only consider tracks with medata
authorFrédéric Péters <fpeters@0d.be>
Wed, 5 Aug 2020 08:34:48 +0000 (10:34 +0200)
committerFrédéric Péters <fpeters@0d.be>
Wed, 5 Aug 2020 12:23:48 +0000 (14:23 +0200)
nonstop/utils.py
nonstop/views.py

index cbc499602c9f13e800f07e09893ff7067b5f08f8..9ef85ce42a5634c27c0e24c1079b5ac1a64175ed 100644 (file)
@@ -167,12 +167,12 @@ def get_palinsesto_xml():
 
 
 class Tracklist:
-    def __init__(self, zone_settings, zone_ids, recent_tracks_id=None, filter_kwargs={}, k=30):
+    def __init__(self, zone_settings, zone_ids, recent_tracks_id=None, requires_metadata=False, k=30):
         self.zone_settings = zone_settings
         self.zone_ids = zone_ids
         self.playlist = []
         self.recent_tracks_id = recent_tracks_id or []
-        self.filter_kwargs = filter_kwargs
+        self.requires_metadata = requires_metadata
         self.k = k
 
     def append(self, track):
@@ -193,12 +193,10 @@ class Tracklist:
 
         while True:
             # pick tracks from db
-            tracks = Track.objects.filter(
-                    nonstop_zones__in=self.zone_ids,
-                    duration__isnull=False,
-                    **self.filter_kwargs).exclude(
-                            id__in=self.get_recent_track_ids()
-                            ).order_by('?')[:k*10]
+            tracks = Track.objects.filter(nonstop_zones__in=self.zone_ids, duration__isnull=False)
+            if self.requires_metadata:
+                tracks = tracks.exclude(language__isnull=True)
+            tracks = tracks.exclude(id__in=self.get_recent_track_ids()).order_by('?')[:k*10]
             if len(tracks) == 0:
                 self.recent_tracks_id = self.recent_tracks_id[:len(self.recent_tracks_id) // 2]
                 continue
index 5681596515be56a181db7419a67957a0f78e3ee5..d8b4c332bc2ac472bfd177f39d0db1ffa0471e3f 100644 (file)
@@ -666,7 +666,7 @@ class ZoneTracklistPercents(DetailView):
         weights = {key[7:]: int(value) for key, value in request.GET.items() if key.startswith('weight_')}
         zone_settings.weights = weights
 
-        tracklist = utils.Tracklist(zone_settings, zone_ids=[zone.id])
+        tracklist = utils.Tracklist(zone_settings, zone_ids=[zone.id], requires_metadata=True)
         random_tracks_iterator = tracklist.get_random_tracks(k=100)
 
         counts = collections.defaultdict(int)