zoukankan      html  css  js  c++  java
  • 优酷视频上传api及demo代码

    1,优酷正常上传流程:

    1). create:连接开放平台上传接口服务器,服务器端会返回upload_token以及upload_server_uri。
    2). create_file:连接上传服务器(通过upload_server_uri解析出上传服务器IP地址,以下所述上传服务器,均指此IP地址对应的服务器)。主要目的是创建上传文件,提交上传文件信息。 
    3). new_slice:连接上传服务器,以upload_token作为参数,请求创建slice_task_id,获取第一个上传分片的开始位置offset,分片长度等。 
    4). upload_slice:连接上传服务器,上传分片。
    5). check: 连接上传服务器,以upland_token作为参数,检查上传任务是否完成。返回结果如下:

    * status=1:文件上传完成,并且全部确认写入磁盘;
    * status=2:文件上传中,全部分片上传任务已经分派,见返回字段transferred_percent;
    * status=3:文件上传中,所有分片上传任务都已完成,但是依然有的分片还未确认写入磁盘,见返回字段confirmed_percent;
    * status=4:文件上传中,还有分片上传任务未分配。

    6). commit: 连接上传服务器,确认上传过程结束,提交上传任务。

    2.续传

    1). check:连接上传服务器(客户端需要记录之前通过upload_server_uri解析出的服务器IP地址),检查上传任务是否完成。返回结果如下:

    * status=1:文件上传完成,并且全部确认写入磁盘;
    * status=2:文件上传中,全部分片上传任务已经分派,见返回字段transferred_percent;
    * status=3:文件上传中,所有分片上传任务都已完成,但是依然有的分片还未确认写入磁盘,见返回字段confirmed_percent;
    * status=4:文件上传中,还有分片上传任务未分配。
    1. upload(分为两种情况):

      • 如果check返回4,则通过调用new_slice、upload_slice上传分片;
      • 如果check返回2或者3则需等待一段时间(比如:60秒)后再次发出check请求。
      2.commit:连接上传接口服务器,确认上传过程结束,提交上传任务。
     
    3.上传demo
      1).pip install youku/或者去http://cloud.youku.com/down下载优酷python/php/Java的sdk,之后作为模块引入
      2)引入:
        from youku import YoukuUpload
      3)
      
      client_id和access_token 需要从youku那里获取

      access_token值是会过期的,每隔一段时间就需要去重新获取,
      
      获取access_token接口:https://api.youku.com/oauth2/token.json
      方式:post
      参数
      

      返回值:

     

      上传代码:
    from youku import YoukuUpload
    def test_upload():
        file_info = {
                'title': '测试优酷Python客户端上传' # 必选
                'tags': 'other', # 必选
                'description': 'Polymer video #7' #选填
                }
        youku = YoukuUpload(CLIENT_ID, ACCESS_TOKEN, UPLOAD_FILE)
        youku.upload(file_info)
    
    
    if __name__ == '__main__':
        test_upload()

     4.单条视频详细信息

      url= 'https://api.youku.com/videos/show.json'

      方式:GET

      参数:client_id->string(必选),video_id->string(必选),ext->string(选填)

      返回值:

      

      json:

      

    {
               "id" : "XNDY5Njc0MTA4",
               "title" : "康熙来了 121101",
               "link" : "http://v.youku.com/v_show/id_XNDY5Njc0MTA4.html",
               "thumbnail" : "http://g2.ykimg.com/01270F1F46509251F539D10123193CD2CB70CC-5896-F53E-B869-61E819861E71",
               "duration" : "2675.36",
               "category" : "综艺",
               "state" : "normal",
               "created" : "2011-07-15 09:00:42",
               "published" : "2011-07-15 09:00:42",
               "description" : "康熙来了",
               "player" : "http://player.youku.com/player.php/sid/XNDY5Njc0MTA4/v.swf",
               "public_type" : "all",
               "copyright_type" : "reproduced",
               "user" :
               {
                       "id" : 58011986,
                       "name" : "康熙来了2010",
                       "link" : "http://i.youku.com/u/UMjMyMDQ3OTQ0"
               },
               "tags": "康熙来了",
               "view_count" : 646437,         
               "operation_limit": [ ],
               "streamtypes": [
                       "hd2",
                       "flvhd",
                       "mp4",
                       "3gp",
                       "3gphd"
                   ],               
                   "show": {
                       "id": "2ab71ff032cb11e196ac",
                       "name": "康熙来了 2012",
                       "link": "http://www.youku.com/show_page/id_z2ab71ff032cb11e196ac.html",
                       "type": "正片",
                       "seq": "215",
                       "stage": "20121101"
                   }
       }

       2.代码

    import requests
    GET = requests.get
    def select_youku(youku_vid):
        url = "https://api.youku.com/videos/show.json?client_id='xxxxx'&video_id=%s" % youku_vid
        video_info = GET(url)#返回视频信息
    if __name__ == "__main__":
        select_youku(youku_vid)

       这个url主要是为了获取视频的状态,以此来更新数据库判断是否上传成功是否可播放

    5.改变优酷临时文件的存放位置

      优酷的临时文件是用来存放上传过程中返回的token值和上传服务器的ip等临时信息,但是我们的磁盘目录满了,而临时文件生成在上传文件的同级目录中,为了方便管理,所以需要改变临时文件的存放位置

        

    改为:

      

    提醒:

      一定要记录日志,一定要记录优酷返回优酷id的日志,我这里就出现了上传两个视频,结果两个视频的返回id相同的坑爹情况。

  • 相关阅读:
    docker安装 与 基本配置
    linux 挂载windows ntfs 分区 -- centos 安装ntfs-3g
    Linux find 用法示例
    linux之sed用法
    js -ajax 学习
    搭建SSH框架整合Struts2和Spring时,使用@Autowired注解无法自动注入
    Hibernate学习之属性级别注解
    Hibernate学习之类级别注解
    org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    Hibernate学习之二级缓存
  • 原文地址:https://www.cnblogs.com/kakawith/p/9988817.html
Copyright © 2011-2022 走看看