Parcourir la source

优化云存标签筛选

zhangdongming il y a 2 ans
Parent
commit
5bf3570ab4
2 fichiers modifiés avec 21 ajouts et 3 suppressions
  1. 1 1
      Controller/CloudStorage.py
  2. 20 2
      Service/VodHlsService.py

+ 1 - 1
Controller/CloudStorage.py

@@ -535,7 +535,7 @@ class CloudStorageView(View):
         })
 
         ids = [val['id'] for val in vod_hls_qs]
-        tag_type_list = SplitVodHlsObject.query_tag_type_list(ids)
+        tag_type_list = SplitVodHlsObject.query_tag_type_list(start_time, ids)
         for vod in vod_hls_qs:
             bucket_name = regroup_bucket_qs[vod['bucket_id']]['bucket']
             thumbs_png = '{uid}/vod{channel}/{time}/Thumb.jpeg'.format(uid=uid, channel=channel, time=vod['start_time'])

+ 20 - 2
Service/VodHlsService.py

@@ -101,24 +101,38 @@ class SplitVodHlsObject:
                 kwargs['type_list'] = type_list
                 if week == 1:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_mon
                     vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
                 elif week == 2:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_tus
                     vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
                 elif week == 3:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_wed
                     vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
                 elif week == 4:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_thur
                     vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
                 elif week == 5:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_fri
                     vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
                 elif week == 6:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_sat
                     vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
                 elif week == 7:
                     kwargs = self.vod_query_param(week, **kwargs)
+                    if not kwargs:
+                        return vod_hls_sun
                     vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
             vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat,
                                     vod_hls_sun)
@@ -189,11 +203,14 @@ class SplitVodHlsObject:
 
     @classmethod
     def vod_query_param(cls, week, **kwargs):
+        types = kwargs.get('type_list')
         vod_ids = cls.query_tag_by_types(kwargs.get('uid'),
                                          kwargs.get('start_time__range'),
                                          kwargs.get('type_list'), week)
         if vod_ids:
             kwargs['id__in'] = vod_ids
+        if types and not vod_ids:
+            return []
         kwargs.pop('type_list')
         return kwargs
 
@@ -229,13 +246,14 @@ class SplitVodHlsObject:
             return False
 
     @classmethod
-    def query_tag_type_list(cls, vod_ids):
+    def query_tag_type_list(cls, start_time, vod_ids):
         """
         根据云存ID获取AI类型
         @return:
         """
         try:
-            qs = VodHlsTag.objects.filter(vod_hls_id__in=vod_ids).values('id', 'vod_hls_id')
+            week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
+            qs = VodHlsTag.objects.filter(vod_hls_id__in=vod_ids, tab_num=int(week)).values('id', 'vod_hls_id')
             if not qs:
                 return []
             return list(qs)