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")})
我是 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")})