百度api的调用-视频分析

一、百度api调用

官方的api调用模板(python)链接:https://cloud.baidu.com/doc/APIGUIDE/s/3k1mz24k5:建议看一次视频,大概知道下面每个变量是什么!

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
本示例代码仅作参考。如果您是业务调用,建议对body体也做加密。
注意:本示例用到的鉴权方式不适用于一部分产品(语音识别、人脸识别等)。请查阅您使用产品的API文档,如果鉴权方式基于Access Key(包括Access Key ID(AK)和Secret Access Key(SK)),
且最终认证字符串为bce-auth-v{version}/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}/{signedHeaders}/{signature},则适用本示例。
此外,部分产品在AK/SK加密之外,还会要求额外的认证,例如百度信息流推广API需要您将百度推广账号的信息填到body体里。请注意查阅文档。

'''
import hashlib
import hmac
import urllib
import time
# 1.AK/SK、host、method、URL绝对路径、querystring
AK = "input your AK"
SK = "input your SK"
host = "bcc.bj.baidubce.com"
method = "PUT"
query = "modifyAttribute"
URI = "/v2/instance/i-YufwpQAe"
# 2.x-bce-date
x_bce_date = time.gmtime()
x_bce_date = time.strftime('%Y-%m-%dT%H:%M:%SZ',x_bce_date)
# 3.header和signedHeaders
header = {
    
    
        "Host":host,
        "content-type":"application/json;charset=utf-8",
        "x-bce-date":x_bce_date
        }
signedHeaders = "content-type;host;x-bce-date"
# 4.认证字符串前缀
authStringPrefix = "bce-auth-v1" + "/" +AK + "/" +x_bce_date + "/" +"1800"
# 5.生成CanonicalRequest
#5.1生成CanonicalURI
CanonicalURI = urllib.parse.quote(URI)        # windows下为urllib.parse.quote,Linux下为urllib.quote
#5.2生成CanonicalQueryString
CanonicalQueryString = query           # 如果您调用的接口的query比较复杂的话,需要做额外处理
#5.3生成CanonicalHeaders
result = []
for key,value in header.items():
    tempStr = str(urllib.parse.quote(key.lower(),safe="")) + ":" + str(urllib.parse.quote(value,safe=""))
    result.append(tempStr)
result.sort()
CanonicalHeaders = "\n".join(result)
#5.4拼接得到CanonicalRequest
CanonicalRequest = method + "\n" + CanonicalURI + "\n" + CanonicalQueryString +"\n" + CanonicalHeaders
# 6.生成signingKey
signingKey = hmac.new(SK.encode('utf-8'),authStringPrefix.encode('utf-8'),hashlib.sha256)
# 7.生成Signature
Signature = hmac.new((signingKey.hexdigest()).encode('utf-8'),CanonicalRequest.encode('utf-8'),hashlib.sha256)
# 8.生成Authorization并放到header里
header['Authorization'] = authStringPrefix + "/" +signedHeaders + "/" +Signature.hexdigest()
# 9.发送API请求并接受响应
import requests
import json
body={
    
    
      "name" : "QQQQQQ"      
      }
url = "http://"+host + URI 
r = requests.put(url,headers = header,data=json.dumps(body))
print(r.text)

二、使用步骤

一般照着官方文档改就行了。视频分析api文档链接
https://cloud.baidu.com/doc/VCA/s/Tjwvybmvd

1.先获取ak sk在这里插入图片描述

即AK ,SK的值为:

AK = "df2d24431e184818b3a7695e6737fac9"
SK = "*****"

2.获取api的服务域名

在这里插入图片描述

即为host的取值

host = "vca.bj.baidubce.com"

3.看公共请求头部分

在这里插入图片描述
这一部分,可以说几乎不用改。

4.发送请求

查询视频分析中间任务结果
MCA 对视频的分析过程,会涉及很多中间任务的执行。发起视频分析时选用的分析模板定义了需要执行的中间任务集合。

根据视频路径查询指定类型的中间任务分析结果。
在这里插入图片描述
对照图,我们可以修改以下几个内容

method = "GET"
query = "bos://tv-movies/看美剧学英语 四级词汇 2 ___iz01zkbd1ji.mp4"	# 指的视频地址
URI = "/v1/media/speech"											# speech为类型(type),在下面的文档可以看到 类型的种类

修改5.2 query 因为官方代码太老了,方法已经不能用(格式参考如下图)

#5.2生成CanonicalQueryString      query 默认为   "source=bos://tv-movies/vedio___143bgsu17na.ts"
CanonicalQueryString = str(urllib.parse.quote('source',safe="")) +'=' +str(urllib.parse.quote(query,safe=""))        # 如果您调用的接口的query比较复杂的话,需要做额外处理	

最后,修改url链接,加上CanonicalQueryString,这样才是完整的链接,才可以进行访问

url = "http://"+host + URI+"?"+CanonicalQueryString

可以对请求进行解析。获取想要的值

r=requests.get(url,headers=header)
for i in json.loads(r.json()['result']):
    print(i['statement'])

Guess you like

Origin blog.csdn.net/weixin_43896398/article/details/120973601