|
@@ -9,6 +9,7 @@ import time
|
|
|
import uuid
|
|
|
import datetime
|
|
|
|
|
|
+from django.http import HttpResponse
|
|
|
from django.views import View
|
|
|
|
|
|
from Model.models import KVS, Device_User, Device_Info
|
|
@@ -33,9 +34,9 @@ class UserRelatedView(View):
|
|
|
def validation(self, request_dict, operation, request):
|
|
|
response = ResponseObject()
|
|
|
if operation == 'generate-qr-code': # 网页生成二维码
|
|
|
- return self.generate_qr_code(request_dict, response)
|
|
|
+ return self.generate_qr_code(response)
|
|
|
elif operation == 'web-login': # 网页登录
|
|
|
- return self.web_login(request_dict, request, response)
|
|
|
+ return self.web_login(request_dict, response)
|
|
|
elif operation == 'confirm-login': # app确认登录
|
|
|
return self.confirm_login(request_dict, response)
|
|
|
else:
|
|
@@ -47,12 +48,12 @@ class UserRelatedView(View):
|
|
|
response.lang = tko.lang
|
|
|
user_id = tko.userID
|
|
|
if operation == 'get-device': # 获取设备列表
|
|
|
- return self.get_device(request_dict, response, user_id)
|
|
|
+ return self.get_device(response, user_id)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
|
@staticmethod
|
|
|
- def generate_qr_code(request_dict, response):
|
|
|
+ def generate_qr_code(response):
|
|
|
"""
|
|
|
网页生成二维码
|
|
|
@param request_dict: 请求参数
|
|
@@ -74,7 +75,7 @@ class UserRelatedView(View):
|
|
|
return response.json(500)
|
|
|
|
|
|
@staticmethod
|
|
|
- def web_login(request_dict, request, response):
|
|
|
+ def web_login(request_dict, response):
|
|
|
"""
|
|
|
网页登录
|
|
|
@param request_dict: 请求参数
|
|
@@ -144,10 +145,9 @@ class UserRelatedView(View):
|
|
|
return response.json(500)
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_device(request_dict, response, user_id):
|
|
|
+ def get_device(response, user_id):
|
|
|
"""
|
|
|
获取设备列表
|
|
|
- @param request_dict: 请求参数
|
|
|
@param response: 响应对象
|
|
|
@param user_id: 用户id
|
|
|
@return: response
|
|
@@ -177,18 +177,18 @@ class KVSView(View):
|
|
|
return self.create_media(request_dict, response)
|
|
|
elif operation == 'update-data-retention': # 修改视频流数据保留时间
|
|
|
return self.update_data_retention(request_dict, response)
|
|
|
- elif operation == 'get-hls-midea': # 获取视频播放地址
|
|
|
- return self.get_hls_midea_url(request_dict, response)
|
|
|
else:
|
|
|
- tko = TokenObject(
|
|
|
- request.META.get('HTTP_AUTHORIZATION'),
|
|
|
- returntpye='pc')
|
|
|
+ tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
response.lang = tko.lang
|
|
|
user_id = tko.userID
|
|
|
if operation == 'get-device-midea-list': # 获取设备列表
|
|
|
return self.get_device_midea_list(request_dict, response)
|
|
|
+ elif operation == 'get-hls-midea': # 获取视频播放地址
|
|
|
+ return self.get_hls_midea_url(request_dict, response)
|
|
|
+ elif operation == 'download-clip': # 获取视频播放地址
|
|
|
+ return self.download_clip(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -346,3 +346,41 @@ class KVSView(View):
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def download_clip(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取视频播放地址
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @request_dict startTime: 开始时间
|
|
|
+ @request_dict endTime: 结束时间
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ start_time = request_dict.get('startTime', None)
|
|
|
+ end_time = request_dict.get('endTime', None)
|
|
|
+ if not all([serial_number, start_time, end_time]):
|
|
|
+ return response.json(444)
|
|
|
+ start_time = datetime.datetime.fromtimestamp(int(start_time)) - datetime.timedelta(hours=8)
|
|
|
+ end_time = datetime.datetime.fromtimestamp(int(end_time)) - datetime.timedelta(hours=8)
|
|
|
+ try:
|
|
|
+ # kvs_qs = KVS.objects.filter(stream_name=serial_number)
|
|
|
+ # if not kvs_qs.exists():
|
|
|
+ # return response.json(174)
|
|
|
+ kinesis_video_obj = AmazonKVAMObject(
|
|
|
+ aws_access_key_id='AKIA2E67UIMD45Y3HL53',
|
|
|
+ secret_access_key='ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw',
|
|
|
+ region_name='us-east-1',
|
|
|
+ stream_name=serial_number,
|
|
|
+ api_name='GET_CLIP'
|
|
|
+ )
|
|
|
+ clip_obj = kinesis_video_obj.get_clip(serial_number, start_time, end_time)
|
|
|
+ res = HttpResponse(clip_obj.read())
|
|
|
+ res["content_type"] = "application/octet-stream"
|
|
|
+ res["Content-Disposition"] = "attachment;filename=video.mp4"
|
|
|
+ return res
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|