使用request_toolbelt将大文件过帐到vk

时间:2018-06-22 19:04:32

标签: python post python-requests vk

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

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)

1 个答案:

答案 0 :(得分:0)

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类型,则可以将其作为()元组中的第三项添加,如下所示:

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