Post 大文件使用 requests_toolbelt 进行 vk

Post Large File Using requests_toolbelt to vk

我是 python 的新手,我编写了用于将视频从 url 上传到 vk 的简单脚本,我用小文件测试了这个脚本,它可以正常工作,但对于大文件,我得到 运行 内存不足,我读到使用 'requests_toolbelt' 可以 post 大文件,如何将其添加到我的脚本中?

import vk
import requests
from homura import download
import glob
import os
import json


url=raw_input("Enter URL: ")
download(url)

file_name = glob.glob('*.mp4')[0]

session = vk.Session(access_token='TOKEN')
vkapi = vk.API(session,v='5.80' )
params={'name' : file_name,'privacy_view' : 'nobody', 'privacy_comment' : 'nobody'}
param = vkapi.video.save(**params)
upload_url = param['upload_url']

print ("Uploading ...")
request = requests.post(upload_url, files={'video_file': open(file_name, "rb")})

os.remove (file_name)

requests_toolbelt (https://github.com/requests/toolbelt) 提供了可能适合您的示例:

import requests
from requests_toolbelt import MultipartEncoder
...
...
m=MultipartEncoder( fields={'video_file':(file_name, open(file_name, "rb"))})
response = requests.post(upload_url, data=m, headers={'Content-Type': m.content_type})

如果您知道视频文件的 MIME 类型,则可以将其添加为 () 元组中的第 3 项,如下所示:

m=MultipartEncoder( fields={
  'video_file':(file_name, open(file_name,"rb"), "video/mp4")})