关键词搜索视频api"/>
python 调用优酷关键词搜索视频api
1,第一步注册账号,申请appKey就不说了,根据优酷开放平台的新手指南.
2,在优酷开放平台找到通过关键词搜索视频,查看调用该api需要的系统参数和业务参数。
其它参数都还好,我在调用时碰到的难搞参数有:
a,timestamp,表示时间戳。
python中用time.time()来返回当前时间的时间戳,单位是秒,返回类型是浮点数。
根据调用示例:
.json?opensysparams={“timestamp”: 1453720442,
“client_id”: “163d4fd10c7f9a28”,
“version”: “3.0”,
“access_token”: “d9ce66ced641240836cf6011a4c195bc”,
“action”: “youku.search.video.keyword.get”,
“format”:”json”,
“sign”:”90cfec261f0ddc4ee843ccadf33f7885”}&caller=NOVA&keyword=abc
b,sign,就是签名,具体api的签名方法不一样,本api的签名方法是点击sign后拉到最下边可以看到有一个java生成签名的示例。
我对应着用python生成了一个签名。
具体调用代码如下:
#!/usr/bin/python
#coding=utf-8
#这是调用优酷视频关键字搜索api
#遇到难点:
# 1,需要申请appkey和app secret
# 2,时间戳:我用的是str(int(time.time()))
# 3,sign怎么求?
#根据java示例代码,一步步生成了sign
import sys
import urllib
import time
import json
import hashlib
import pip._vendor.requestsreload(sys)
sys.setdefaultencoding('utf-8')url = ".json"
class call_youku_video_search_api(object):def __init__(self,query):self.query = querydef create_sign(self):strtemp = "action" + urllib.quote("youku.search.video.keyword.get") + "client_id" + urllib.quote("965416d2d0c16") + "format" + urllib.quote("json") + 'keyword' + urllib.quote(self.query) + "timestamp" + urllib.quote(str(int(time.time()))) + "version" + urllib.quote("3.0")strtemp = strtemp + "30692e8a8e0256016837fb" # 这个就是secretm = hashlib.md5()m.update(strtemp)sign = m.hexdigest()return signdef get_veideo(self):sign = self.create_sign()opensysparams = {"action": "youku.search.video.keyword.get","client_id": "965416d2d0c16","format": "json","timestamp": str(int(time.time())),"version": "3.0","sign": sign}params = {'opensysparams': str(json.dumps(opensysparams)),'keyword': self.query}data = urllib.urlencode(params)res = pip._vendor.requests.get(url, params=data)result = json.dumps(res.json(), ensure_ascii=False, encoding="utf-8")result = result.strip('\n')result = result.strip()title_link = []npos1 = result.find("\"title\":")while npos1 != -1:result = result[npos1:]result = result.lstrip("\"title\":")npos2 = result.find("\"")result = result[npos2:]result = result.lstrip("\"")npos3 = result.find("\"")titletemp = "\"" + result[:npos3] + "\""result = result[npos3:]result = result.lstrip("\"")npos4 = result.find("\"rurl\":")if npos4 != -1:result = result[npos4:]result = result.lstrip("\"rurl\":")npos5 = result.find("\"")result = result[npos5:]result = result.lstrip("\"")npos6 = result.find("\"")linktemp = "\"" + result[:npos6] + "\""result = result[npos6:]result = result.lstrip("\"")title_link.append(titletemp + ":" + linktemp)npos1 = result.find("\"title\":")if title_link:for i in range(0, len(title_link)):print title_link[i]return title_link
if __name__ == '__main__':myvideo = call_youku_video_search_api("卧虎藏龙")myvideo.get_veideo()
更多推荐
python 调用优酷关键词搜索视频api
发布评论