|
@@ -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):
|