您好,登錄后才能下訂單哦!
這篇文章主要介紹Biblibili視頻投稿接口分析并以Python實現自動投稿功能的示例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
B站視頻發布接口分析
請求要帶著登錄成功后關鍵Cookies,才能被B站后臺認為是已登錄的狀態。
研究發現,以下兩個是必要的:
SESSDATA(session會話cookies, 相當于登錄憑證)
bili_jct(防CSRF攻擊)
這兩個都能在瀏覽器開發者工具(F12)中查看到,比如在谷歌瀏覽器中:
然后將這兩個值復制下來,在接下來的請求中cookies帶上這兩個值即可保持登錄狀態
解決方案:
可用requests.Session.cookies = requests.utils.cookiejar_from_dict
設置Cookies,將在以后請求會話中保持
可用requests.Session.headers = {'User-Agent':'???'}
設置UA,將在以后請求會話中保持
請求方法: GET
請求接口: https://member.bilibili.com/preupload
請求體:
響應體:
請求體解決方案:
name參數可由os.path.basename
或pathlib.Path.name屬性
獲得
size參數可由os.path.getsize
或pathlib.Path.stat().st_size
獲得
請求方法: POST
請求接口: https://upos-sz-upcdnbda2.bilivideo.com/[upos_uri]
替換上面[upos_uri]
為preupload預上傳接口
響應體中upos_uri
的upos://
的后面部份,比如https://upos-sz-upcdnbda2.bilivideo.com/ugcboss/m201010a23h45mci3cejzh3xe4a6gwq1.mp4
請求頭:
請求體:
響應體:
重難點
請求方法: PUT
請求接口: 同step1接口
請求頭: 同step1接口
請求體(分兩個部份):
請求體解決方案:
params參數通過requests.put的params
參數傳遞,payload
通過requests.put的data
參數傳遞
chunks
總批次根據preupload響應體中chunk_size
參數計算得出,通過math.ceil(filesize/chunk_size)
向上取整。得到chunks
后,在循環中改變partNumber
、chunk
兩者
內置函數open
獲得視頻文件IO流。read(size=chunk_size)
方法獲得指定大小的視頻字節,并通過內置函數len
獲得當前批次字節數size
參數。tell
方法獲取當前字節位置,對應start
與end
參數
在循環中改變partNumber
、chunk
、chunks
、size
、start
和end
參數
將read
讀出的字節通過requests.put的data
參數傳遞過去
請求方法: POST
請求接口: 同step1接口
請求頭: 同step1接口
請求體(分兩個部份):
PS: 上圖沒有用框框住的參數,都是固定寫死
請求體解決方案:
json形式的請求體可以用requests.post的json
參數傳遞
請求方法: GET
請求接口: https://member.bilibili.com/x/web/archive/recovers?fns=[bfilename]
注意把[bfilename]
替換成在B站的視頻文件名
響應體:
解決方案: 因為要等待B站后端處理好封面圖片,所以這一步需要隔一段時間就訪問一下該接口,直到響應體的data
字段不是空列表時結束輪詢
選擇推薦分區
請求方法: GET
請求接口: https://member.bilibili.com/x/web/archive/typeid
請求體:
PS:
groupid
不清楚干嘛用的, 目前遇到可以固定是0或1
vfea
不清楚干嘛用的, 空字符串即可
響應體:
選擇推薦標簽
請求方法: GET
請求接口: https://member.bilibili.com/x/web/archive/typeid
請求體:
響應體:
PS: 可以用列表推導式將標簽字符串存于列表中,再用字符串join
方法用英文逗號
拼接
預發布
請求方法: GET
請求接口: https://member.bilibili.com/x/geetest/pre/add
PS: 沒啥好講的, 直接get
這個鏈接,它的響應體也沒什么有用的東西
發布視頻
經過前面的"過五關斬六將",終于到了最后一步了
請求方法: POST
請求接口: https://member.bilibili.com/x/vu/web/add?csrf=[bili_jct]
注意替換鏈接中csrf
參數為bili_jct
(一開始需要的兩個Cookies的中其一)
請求體(JSON):
自制類型的視頻請求體與上圖有些許差別:
因為source是只針對于轉載類型視頻的,所以自制類型視頻不需要攜帶該參數
新增interactive參數,取值0或1,貌似是跟允許觀眾投稿字幕有關
新增no_reprint參數,取值0或1,貌似是跟自制聲明有關
最重要的是聲明版權,改變copyright為1即可
Talk is cheap, Show me the code
以上是“Biblibili視頻投稿接口分析并以Python實現自動投稿功能的示例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。