優酷視頻上傳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相同的坑爹情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM