|
@@ -26,8 +26,7 @@ from django.views.decorators.csrf import csrf_exempt
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
import urllib
|
|
import urllib
|
|
|
|
|
|
-from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, \
|
|
|
|
- OSS_REGION_ID, OSS_ROLE_ARN, SERVER_DOMAIN
|
|
|
|
|
|
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN
|
|
from Model.models import Device_Meal, Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel
|
|
from Model.models import Device_Meal, Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
@@ -107,6 +106,8 @@ class CloudVodView(View):
|
|
return self.do_change_status(request_dict, userID, response)
|
|
return self.do_change_status(request_dict, userID, response)
|
|
elif operation == 'details':
|
|
elif operation == 'details':
|
|
return self.do_meal_details(request_dict, userID, response)
|
|
return self.do_meal_details(request_dict, userID, response)
|
|
|
|
+ elif operation == 'playlist':
|
|
|
|
+ return self.do_get_playlist(request_dict,userID,response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
@@ -132,6 +133,8 @@ class CloudVodView(View):
|
|
nowTime = int(time.time())
|
|
nowTime = int(time.time())
|
|
orderID = CommonService.createID()
|
|
orderID = CommonService.createID()
|
|
smqs = Store_Meal.objects.filter(id=rank).values("currency", "price", "content")
|
|
smqs = Store_Meal.objects.filter(id=rank).values("currency", "price", "content")
|
|
|
|
+ if not smqs.exists():
|
|
|
|
+ return response.json(10,'套餐不存在')
|
|
currency = smqs[0]['currency']
|
|
currency = smqs[0]['currency']
|
|
price = smqs[0]['price']
|
|
price = smqs[0]['price']
|
|
content = smqs[0]['content']
|
|
content = smqs[0]['content']
|
|
@@ -153,7 +156,7 @@ class CloudVodView(View):
|
|
"item_list": {
|
|
"item_list": {
|
|
"items": [{"name": "Cloud video", "sku": "1", "price": price, "currency": "USD", "quantity": 1}]},
|
|
"items": [{"name": "Cloud video", "sku": "1", "price": price, "currency": "USD", "quantity": 1}]},
|
|
"amount": {"total": price, "currency": currency},
|
|
"amount": {"total": price, "currency": currency},
|
|
- "description":content
|
|
|
|
|
|
+ "description": content
|
|
}]})
|
|
}]})
|
|
|
|
|
|
if payment.create():
|
|
if payment.create():
|
|
@@ -195,7 +198,10 @@ class CloudVodView(View):
|
|
channel = utko.channel
|
|
channel = utko.channel
|
|
print(channel)
|
|
print(channel)
|
|
print(UID)
|
|
print(UID)
|
|
- qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("channel", "end_time","rank__bucket__bucket","rank__bucket__endpoint")
|
|
|
|
|
|
+ qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("channel", "end_time",
|
|
|
|
+ "rank__bucket__bucket",
|
|
|
|
+ "rank__bucket__endpoint",
|
|
|
|
+ "rank__bucket__region")
|
|
if not qs.exists():
|
|
if not qs.exists():
|
|
res = {'code': 403}
|
|
res = {'code': 403}
|
|
return JsonResponse(status=200, data=res)
|
|
return JsonResponse(status=200, data=res)
|
|
@@ -220,7 +226,7 @@ class CloudVodView(View):
|
|
endpoint = qs[0]['rank__bucket__endpoint']
|
|
endpoint = qs[0]['rank__bucket__endpoint']
|
|
access_key_id = OSS_STS_ACCESS_KEY
|
|
access_key_id = OSS_STS_ACCESS_KEY
|
|
access_key_secret = OSS_STS_ACCESS_SECRET
|
|
access_key_secret = OSS_STS_ACCESS_SECRET
|
|
- region_id = OSS_REGION_ID
|
|
|
|
|
|
+ region_id = qs[0]['rank__bucket__region']
|
|
role_arn = OSS_ROLE_ARN
|
|
role_arn = OSS_ROLE_ARN
|
|
clt = client.AcsClient(access_key_id, access_key_secret, region_id)
|
|
clt = client.AcsClient(access_key_id, access_key_secret, region_id)
|
|
req = AssumeRoleRequest.AssumeRoleRequest()
|
|
req = AssumeRoleRequest.AssumeRoleRequest()
|
|
@@ -288,7 +294,10 @@ class CloudVodView(View):
|
|
if not qs.exists():
|
|
if not qs.exists():
|
|
return response.json(13)
|
|
return response.json(13)
|
|
uid = qs[0]['UID']
|
|
uid = qs[0]['UID']
|
|
- dm_qs = Device_Meal.objects.filter(uid=uid, channel=channel).values('rank__bucket__bucket','end_time','rank__bucket__endpoint')
|
|
|
|
|
|
+ dm_qs = Device_Meal.objects.filter(uid=uid, channel=channel).values('rank__bucket__bucket', 'end_time',
|
|
|
|
+ 'rank__bucket__endpoint')
|
|
|
|
+ if not dm_qs.exists():
|
|
|
|
+ return response.json(10,'未购买')
|
|
now_time = timezone.localtime(timezone.now())
|
|
now_time = timezone.localtime(timezone.now())
|
|
if now_time > dm_qs[0]['end_time']:
|
|
if now_time > dm_qs[0]['end_time']:
|
|
return response.json(10, '已过期')
|
|
return response.json(10, '已过期')
|
|
@@ -306,17 +315,20 @@ class CloudVodView(View):
|
|
if obj.is_prefix(): # 文件夹
|
|
if obj.is_prefix(): # 文件夹
|
|
print('directory: ' + obj.key)
|
|
print('directory: ' + obj.key)
|
|
ptime = obj.key.split('/')[3]
|
|
ptime = obj.key.split('/')[3]
|
|
- url = bucket.sign_url('GET', '{prefix}{name}.m3u8'.format(prefix=obj.key, name=ptime), 60 * 60,
|
|
|
|
|
|
+ url = bucket.sign_url('GET', '{prefix}{name}.m3u8'.format(prefix=obj.key, name=ptime), 3600,
|
|
params={'x-oss-process': 'hls/sign'})
|
|
params={'x-oss-process': 'hls/sign'})
|
|
- # url = bucket.sign_url('GET', obj.key, 60 * 60,params={'x-oss-process': 'hls/sign'})
|
|
|
|
urllst = url.split('?')
|
|
urllst = url.split('?')
|
|
url_start = urllib.parse.unquote(urllst[0])
|
|
url_start = urllib.parse.unquote(urllst[0])
|
|
url_end = urllst[1]
|
|
url_end = urllst[1]
|
|
vod_play_url = '{url_start}?{url_end}'.format(url_start=url_start, url_end=url_end)
|
|
vod_play_url = '{url_start}?{url_end}'.format(url_start=url_start, url_end=url_end)
|
|
- vod_play_list.append({'name': ptime, 'sign_url': vod_play_url})
|
|
|
|
|
|
+ thumb_key = '{prefix}ts0.ts'.format(prefix=obj.key)
|
|
|
|
+ print(thumb_key)
|
|
|
|
+ thumb = bucket.sign_url('GET',thumb_key , 3600,
|
|
|
|
+ params={'x-oss-process': 'video/snapshot,t_10000,m_fast,w_300'})
|
|
|
|
+ vod_play_list.append({'name': ptime, 'sign_url': vod_play_url,'thumb':thumb})
|
|
else: # 文件
|
|
else: # 文件
|
|
pass
|
|
pass
|
|
- print('file: ' + obj.key)
|
|
|
|
|
|
+ # print('file: ' + obj.key)
|
|
return response.json(0, vod_play_list)
|
|
return response.json(0, vod_play_list)
|
|
|
|
|
|
def do_paypal_execute(self, request_dict, response):
|
|
def do_paypal_execute(self, request_dict, response):
|
|
@@ -376,6 +388,8 @@ class CloudVodView(View):
|
|
return response.json(10, '没有设备')
|
|
return response.json(10, '没有设备')
|
|
UID = dvqs[0]["UID"]
|
|
UID = dvqs[0]["UID"]
|
|
dmqs = Device_Meal.objects.filter(channel=channel, uid=UID)
|
|
dmqs = Device_Meal.objects.filter(channel=channel, uid=UID)
|
|
|
|
+ if not dmqs.exists():
|
|
|
|
+ return response.json(10, '未购买')
|
|
now_time = timezone.localtime(timezone.now())
|
|
now_time = timezone.localtime(timezone.now())
|
|
if now_time > dmqs[0].end_time:
|
|
if now_time > dmqs[0].end_time:
|
|
return response.json(10, '已过期')
|
|
return response.json(10, '已过期')
|
|
@@ -387,14 +401,12 @@ class CloudVodView(View):
|
|
utko.generate(data={'uid': UID, 'channel': channel})
|
|
utko.generate(data={'uid': UID, 'channel': channel})
|
|
uidTkUrl = "{SERVER_DOMAIN}cloudVod/getSts?uidToken={uidToken}".format(uidToken=utko.token,
|
|
uidTkUrl = "{SERVER_DOMAIN}cloudVod/getSts?uidToken={uidToken}".format(uidToken=utko.token,
|
|
SERVER_DOMAIN=SERVER_DOMAIN)
|
|
SERVER_DOMAIN=SERVER_DOMAIN)
|
|
- return response.json(0, {
|
|
|
|
- 'uidTkUrl': uidTkUrl
|
|
|
|
- })
|
|
|
|
|
|
+ return response.json(0, {'uidTkUrl': uidTkUrl})
|
|
|
|
|
|
def do_store_palylist(self, request_dict, response):
|
|
def do_store_palylist(self, request_dict, response):
|
|
uidToken = request_dict.get('uidToken', None)
|
|
uidToken = request_dict.get('uidToken', None)
|
|
time = request_dict.get('time', None)
|
|
time = request_dict.get('time', None)
|
|
- sec = request_dict.get('sec',None)
|
|
|
|
|
|
+ sec = request_dict.get('sec', None)
|
|
utko = UidTokenObject(uidToken)
|
|
utko = UidTokenObject(uidToken)
|
|
if utko.flag is False:
|
|
if utko.flag is False:
|
|
return response.json(444, 'uidToken')
|
|
return response.json(444, 'uidToken')
|
|
@@ -410,19 +422,21 @@ class CloudVodView(View):
|
|
storeDay = qs[0]['rank__bucket__storeDay']
|
|
storeDay = qs[0]['rank__bucket__storeDay']
|
|
bucketID = qs[0]['rank__bucket_id']
|
|
bucketID = qs[0]['rank__bucket_id']
|
|
endTime = nowTime + storeDay * 86400
|
|
endTime = nowTime + storeDay * 86400
|
|
- VodHlsModel.objects.create(uid=UID, channel=channel, time=nowTime, endTime=endTime, bucket_id=bucketID,sec=sec)
|
|
|
|
|
|
+ VodHlsModel.objects.create(uid=UID, channel=channel, time=nowTime, endTime=endTime, bucket_id=bucketID, sec=sec)
|
|
return response.json(0)
|
|
return response.json(0)
|
|
|
|
|
|
def do_get_playlist(self, request_dict, userID, response):
|
|
def do_get_playlist(self, request_dict, userID, response):
|
|
- stime = request_dict.get('stime', None)
|
|
|
|
- etime = request_dict.get('etime', None)
|
|
|
|
|
|
+ # stime = request_dict.get('stime', None)
|
|
|
|
+ # etime = request_dict.get('etime', None)
|
|
|
|
+ daytime = request_dict.get('daytime', None)
|
|
|
|
+ daytime = int(daytime)
|
|
|
|
+
|
|
did = request_dict.get('did', None)
|
|
did = request_dict.get('did', None)
|
|
channel = request_dict.get('channel', None)
|
|
channel = request_dict.get('channel', None)
|
|
dvqs = Device_Info.objects.filter(id=did, userID_id=userID).values("UID")
|
|
dvqs = Device_Info.objects.filter(id=did, userID_id=userID).values("UID")
|
|
if not dvqs.exists():
|
|
if not dvqs.exists():
|
|
return response.json(10, '无设备')
|
|
return response.json(10, '无设备')
|
|
UID = dvqs[0]["UID"]
|
|
UID = dvqs[0]["UID"]
|
|
- time.time()
|
|
|
|
qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
|
|
qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
|
|
if not qs.exists():
|
|
if not qs.exists():
|
|
return response.json(10, '设备未购买')
|
|
return response.json(10, '设备未购买')
|