2016-03-03 2 views
1

Я пытаюсь загрузить видео с локального диска, но некоторые, что это не загружает файл через запрос пост питонаВидео Загрузить на Facebook с локального диска

import requests 
import json 

accesstoken = '-----------------' 
desc = 'This is test' 
titl = 'Testing Video' 
vidfbpath = '/tempvideos/0xjwseCVUlU.mp4' 
source = open(vidfbpath, 'rb') 

# need binary rep of this, not sure if this would do it 
fburl = 'https://graph-video.facebook.com/v2.0/1098719680172720/videos?access_token='+str(accesstoken) 
# put it all together to post to facebook 
m = {'description': desc, 
     'title': titl, 
     'source': vidfbpath,} 

r = requests.post(fburl, data=m).text 
fb_res = json.loads(r) 

Выход возвращающийся InsecurePlatformWarning: Истинный SSLContext объект недоступен. Это не позволяет urllib3 правильно настроить SSL и может привести к сбою определенных SSL-соединений. Для получения дополнительной информации см. https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning

+0

Вы попробовали предложения, содержащиеся в ссылке? – mhawke

ответ

2

InsecurePlatformWarning является предупреждением, а не ошибкой. Есть еще хороший шанс, что вы можете успешно загружать свои видеофайлы.

Как бы то ни было, ваш код отправит HTTP-запрос POST с Content-Type application/x-www-form-urlencoded и будет соответствующим образом закодировать данные формы. Это делает не фактически загружает файл, он просто размещает местоположение файла в переменной формы source.

Я думаю, что вам нужно загрузить файл, используя тип контента multipart/form-data как described здесь. Также было бы неплохо указать тип содержимого файла mp4. Что-то вроде этого:

m = {'description': desc, 
     'title': titl,} 

files = {'source': ('0xjwseCVUlU.mp4', open('/tempvideos/0xjwseCVUlU.mp4', 'rb'), 'video/mp4')} 

r = requests.post(fburl, data=m, files=files) 
Смежные вопросы