import base64 import hashlib import hmac import json import random import time import jwt from rest_framework.response import Response from rest_framework.status import HTTP_400_BAD_REQUEST from tencentcloud.common import credential from tencentcloud.common.exception.tencent_cloud_sdk_exception import \ TencentCloudSDKException from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.vod.v20180717 import models, vod_client SecretId = 'AKIDhDTaV9WeXAXcQxEH4buwg9LGvJQHr9Au' SecretKey = 'VjfKjrhGYrte8MIxMUMxHL9h39zYqrc6' appId = '1253484223' referKey = 'ntXQi6eDkgUXnvvsiAtm' # 初始化点播client def initClient(): cred = credential.Credential(SecretId, SecretKey) httpProfile = HttpProfile() httpProfile.endpoint = "vod.tencentcloudapi.com" clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile client = vod_client.VodClient(cred, "", clientProfile) return client def doResponse(res): # 处理返回结果 # 转变为常用返回Response if hasattr(res, 'Error'): return Response(res._serialize(allow_none=True), status=HTTP_400_BAD_REQUEST) return Response(res._serialize(allow_none=True)) def getAllClass(params={}): # 获取所有分类 try: client = initClient() req = models.DescribeAllClassRequest() req.from_json_string(json.dumps(params)) resp = client.DescribeAllClass(req) return doResponse(resp) except TencentCloudSDKException as err: print(err) def searchMedia(params={}): try: client = initClient() req = models.SearchMediaRequest() req.from_json_string(json.dumps(params)) resp = client.SearchMedia(req) return doResponse(resp) except TencentCloudSDKException as err: print(err) def getSignature(procedure=None): """ 获取上传签名 可指定 """ TimeStamp = int(time.time()) ExpireTime = TimeStamp + 86400 * 365 * 10 Random = random.randint(0, 999999) Original = "secretId=" + SecretId + "¤tTimeStamp=" + str(TimeStamp) + "&expireTime=" + str(ExpireTime) + "&random=" + str(Random) if procedure: Original = Original + "&procedure="+procedure Hmac = hmac.new(bytes(SecretKey, 'utf-8'), bytes(Original, 'utf-8'), hashlib.sha1) Sha1 = Hmac.digest() Signature = bytes(Sha1) + bytes(Original, 'utf-8') Signature2 = base64.b64encode(Signature) return str(Signature2, 'UTF-8') def getPlayCode(fileId:str): currentTimeStamp = int(time.time()) Original = { "appId": appId, "fileId": fileId, "currentTimeStamp": currentTimeStamp, "pcfg": "basicDrmPreset", } print(Original) return jwt.encode(Original, referKey, algorithm='HS256') def startSeVideo(fileId:str): """ 开始加密视频 """ try: client = initClient() req = models.ProcessMediaByProcedureRequest() params = { "FileId":fileId, "ProcedureName":"myAesEncryptPreset" } req.from_json_string(json.dumps(params)) resp = client.ProcessMediaByProcedure(req) return doResponse(resp) except TencentCloudSDKException as err: print(err)