python 调用优酷关键词搜索视频api

1,第一步注册账号,申请appKey就不说了,根据优酷开放平台的新手指南.
2,在优酷开放平台找到通过关键词搜索视频,查看调用该api需要的系统参数和业务参数。
其它参数都还好,我在调用时碰到的难搞参数有:
a,timestamp,表示时间戳。
python中用time.time()来返回当前时间的时间戳,单位是秒,返回类型是浮点数。
根据调用示例:

https://openapi.youku.com/router/rest.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.requests

reload(sys)
sys.setdefaultencoding('utf-8')

url = "https://openapi.youku.com/router/rest.json"
class call_youku_video_search_api(object):
    def __init__(self,query):
        self.query = query

    def 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"  # 这个就是secret
        m = hashlib.md5()
        m.update(strtemp)
        sign = m.hexdigest()
        return sign

    def 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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值