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:文件上傳中,還有分片上傳任務未分配。
-
upload(分為兩種情況):
- 如果check返回4,則通過調用new_slice、upload_slice上傳分片;
- 如果check返回2或者3則需等待一段時間(比如:60秒)后再次發出check請求。
from youku import YoukuUpload
access_token值是會過期的,每隔一段時間就需要去重新獲取,
返回值:

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相同的坑爹情況。
