Forráskód Böngészése

云存回放表扩表

peng 9 hónapja
szülő
commit
de93787c02
1 módosított fájl, 109 hozzáadás és 107 törlés
  1. 109 107
      Controller/CloudStorage.py

+ 109 - 107
Controller/CloudStorage.py

@@ -547,128 +547,130 @@ class CloudStorageView(View):
             logger.info({
                 "intoTime": into_time,
             })
+        try:
+            device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False).values(
+                'vodPrimaryUserID', 'Type', 'vodPrimaryMaster')
+            if not device_info_qs.exists():
+                return response.json(12)
+            device_type = device_info_qs[0]['Type']
+            device_info_qs_time_over = int(time.time())
+            if uid == 'UWE2ZJ52SE4FX75U111A':
+                logger.info({
+                    "intoTime": into_time,
+                    "dvQsModelOverTime": device_info_qs_time_over,
+                })
 
-        device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False).values(
-            'vodPrimaryUserID', 'Type', 'vodPrimaryMaster')
-        if not device_info_qs.exists():
-            return response.json(12)
-        device_type = device_info_qs[0]['Type']
-        device_info_qs_time_over = int(time.time())
-        if uid == 'UWE2ZJ52SE4FX75U111A':
+            if device_info_qs[0]['vodPrimaryUserID'] != user_id:
+                return response.json(10034)
+            now_time = int(time.time())
+            if device_type in BINOCULAR_DEVICE_TYPE:  # 枪球设备开通云存不区分通道
+                uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time)
+            else:
+                uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel)
+            if not uid_bucket_qs.exists():
+                return response.json(10030)
+
+            uid_bucket_qs_time_over = int(time.time())
             logger.info({
                 "intoTime": into_time,
                 "dvQsModelOverTime": device_info_qs_time_over,
+                "UidBucketModelOverTime": uid_bucket_qs_time_over,
             })
-
-        if device_info_qs[0]['vodPrimaryUserID'] != user_id:
-            return response.json(10034)
-        now_time = int(time.time())
-        if device_type in BINOCULAR_DEVICE_TYPE:  # 枪球设备开通云存不区分通道
-            uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time)
-        else:
-            uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel)
-        if not uid_bucket_qs.exists():
-            return response.json(10030)
-
-        uid_bucket_qs_time_over = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-        })
-        type_list = []
-        if event_types:
-            if ',' in event_types:
-                type_list = event_types.split(',')
-                type_list = [int(i.strip()) for i in type_list]
+            type_list = []
+            if event_types:
+                if ',' in event_types:
+                    type_list = event_types.split(',')
+                    type_list = [int(i.strip()) for i in type_list]
+                else:
+                    type_list = [int(event_types)]
+            split_vod_hls_obj = SplitVodHlsObject()
+            if device_type in BINOCULAR_DEVICE_TYPE:
+                vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid,
+                                                                end_time__gte=now_time,
+                                                                start_time__range=(start_time, end_time),
+                                                                type_list=type_list) \
+                    .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
             else:
-                type_list = [int(event_types)]
-        split_vod_hls_obj = SplitVodHlsObject()
-        if device_type in BINOCULAR_DEVICE_TYPE:
-            vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid,
-                                                            end_time__gte=now_time,
-                                                            start_time__range=(start_time, end_time),
-                                                            type_list=type_list) \
-                .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
-        else:
-            vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid, channel=channel,
-                                                            end_time__gte=now_time,
-                                                            start_time__range=(start_time, end_time),
-                                                            type_list=type_list) \
-                .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
-
-        vod_play_list = []
-        if not vod_hls_qs.exists():
-            return response.json(0, vod_play_list)
-
-        # 不用关联外键查询,因为会查询非常慢
-        vod_bucket_qs = VodBucketModel.objects.values()
-        regroup_bucket_qs = {}
-        for bucket_dict in vod_bucket_qs:
-            regroup_bucket_qs[bucket_dict['id']] = bucket_dict
-
-        vod_hls_qs_time_over = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-            "vodHlsModelOverTime": vod_hls_qs_time_over,
-        })
-        bucket_mold = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['mold']
-        bucket_region = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['region']
-        aws_access_key_id = AWS_ACCESS_KEY_ID[bucket_mold]
-        aws_secret_access_key = AWS_SECRET_ACCESS_KEY[bucket_mold]
-        s3_obj = AmazonS3Util(aws_access_key_id, aws_secret_access_key, bucket_region)
-        uid_token = TokenObject().encryption(data={'uid': uid})
-
-        aws_object_over_time = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-            "vodHlsModelOverTime": vod_hls_qs_time_over,
-            "awsObjectOverTime": aws_object_over_time,
-        })
-
-        ids = [val['tab_val'] + str(val['id']) for val in vod_hls_qs]
-        tag_type_list = SplitVodHlsObject.query_tag_type_list(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=vod['channel'],
-                                                                       time=vod['start_time'])
-            response_url = s3_obj.generate_file_obj_url(bucket_name, thumbs_png)
-            vod_url = '{server_domain}cloudstorage/signplaym3u8?' \
-                      'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
-                format(server_domain=SERVER_DOMAIN_SSL, uid=uid_token, channel=vod['channel'], time=vod['start_time'])
-            ts_num = int(vod['fg']) & 0xf
-            # dict_item = [item for item in tag_type_list if item['vod_hls_id'] == vod['id']]
-            types = []
-            # if dict_item:
-            #     tag_qs = VodHlsTagType.objects.filter(tag_id=dict_item[0]['id']).values('type')
-            #     types = [val['type'] for val in tag_qs]
-
-            vod_play_list.append({
-                'start_time': vod['start_time'],
-                'sign_url': vod_url,
-                'thumb': response_url,
-                'sec': vod['sec'],
-                'ts_num': ts_num,
-                'vod_id': vod['tab_val'] + str(vod['id']),
-                'types': types
+                vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid, channel=channel,
+                                                                end_time__gte=now_time,
+                                                                start_time__range=(start_time, end_time),
+                                                                type_list=type_list) \
+                    .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
+
+            vod_play_list = []
+            if not vod_hls_qs.exists():
+                return response.json(0, vod_play_list)
+
+            # 不用关联外键查询,因为会查询非常慢
+            vod_bucket_qs = VodBucketModel.objects.values()
+            regroup_bucket_qs = {}
+            for bucket_dict in vod_bucket_qs:
+                regroup_bucket_qs[bucket_dict['id']] = bucket_dict
+
+            vod_hls_qs_time_over = int(time.time())
+            logger.info({
+                "intoTime": into_time,
+                "dvQsModelOverTime": device_info_qs_time_over,
+                "UidBucketModelOverTime": uid_bucket_qs_time_over,
+                "vodHlsModelOverTime": vod_hls_qs_time_over,
             })
-        vod_play_list = sorted(vod_play_list, key=lambda item: -item['start_time'])
-        generate_presigned_over_time = int(time.time())
-        if uid == 'UWE2ZJ52SE4FX75U111A':
+            bucket_mold = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['mold']
+            bucket_region = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['region']
+            aws_access_key_id = AWS_ACCESS_KEY_ID[bucket_mold]
+            aws_secret_access_key = AWS_SECRET_ACCESS_KEY[bucket_mold]
+            s3_obj = AmazonS3Util(aws_access_key_id, aws_secret_access_key, bucket_region)
+            uid_token = TokenObject().encryption(data={'uid': uid})
+
+            aws_object_over_time = int(time.time())
             logger.info({
                 "intoTime": into_time,
                 "dvQsModelOverTime": device_info_qs_time_over,
                 "UidBucketModelOverTime": uid_bucket_qs_time_over,
                 "vodHlsModelOverTime": vod_hls_qs_time_over,
                 "awsObjectOverTime": aws_object_over_time,
-                "generatePresignedOverTime": generate_presigned_over_time,
             })
 
-        return response.json(0, vod_play_list)
+            ids = [val['tab_val'] + str(val['id']) for val in vod_hls_qs]
+            tag_type_list = SplitVodHlsObject.query_tag_type_list(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=vod['channel'],
+                                                                           time=vod['start_time'])
+                response_url = s3_obj.generate_file_obj_url(bucket_name, thumbs_png)
+                vod_url = '{server_domain}cloudstorage/signplaym3u8?' \
+                          'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
+                    format(server_domain=SERVER_DOMAIN_SSL, uid=uid_token, channel=vod['channel'], time=vod['start_time'])
+                ts_num = int(vod['fg']) & 0xf
+                # dict_item = [item for item in tag_type_list if item['vod_hls_id'] == vod['id']]
+                types = []
+                # if dict_item:
+                #     tag_qs = VodHlsTagType.objects.filter(tag_id=dict_item[0]['id']).values('type')
+                #     types = [val['type'] for val in tag_qs]
+
+                vod_play_list.append({
+                    'start_time': vod['start_time'],
+                    'sign_url': vod_url,
+                    'thumb': response_url,
+                    'sec': vod['sec'],
+                    'ts_num': ts_num,
+                    'vod_id': vod['tab_val'] + str(vod['id']),
+                    'types': types
+                })
+            vod_play_list = sorted(vod_play_list, key=lambda item: -item['start_time'])
+            generate_presigned_over_time = int(time.time())
+            if uid == 'UWE2ZJ52SE4FX75U111A':
+                logger.info({
+                    "intoTime": into_time,
+                    "dvQsModelOverTime": device_info_qs_time_over,
+                    "UidBucketModelOverTime": uid_bucket_qs_time_over,
+                    "vodHlsModelOverTime": vod_hls_qs_time_over,
+                    "awsObjectOverTime": aws_object_over_time,
+                    "generatePresignedOverTime": generate_presigned_over_time,
+                })
+
+            return response.json(0, vod_play_list)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
     def do_store_playlist(request_dict, response):