@wio33

Python vk api как отправить фото без загрузки на диск?

Как отправить фото не загружая его на диск (чтобы не исользовать его и не замедлять и так медленный процесс)?
Я пробовал отправлять полученное фото из requests сразу в вк, но вылетала какая-то ошибка
Помогите пожалуйста
  • Вопрос задан
  • 1175 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Взять содержимое фото в переменную, которую загрузить post-запросом. Пример поста в группу с приложенным фото:

upload_url = vk_api.photos.getWallUploadServer(group_id=group_id)['upload_url']
r = requests.get(image_url)
image_data = r.content
r = requests.post(upload_url, files={'photo': (image_name, image_data) }).json()
d = {}
d['server'] = r['server']
d['photo'] = r['photo']
d['hash'] = r['hash']
d['group_id'] = group_id
photo_id = vk_api.photos.saveWallPhoto(**d)[0]['id']
vk_message = 'Сообщение'
vk_params = { 'message': vk_message, 'from_group': 1, 'owner_id': -group_id }
vk_params['attachments'] = '%s,%s' % (photo_id, image_url)
post_id = vk_api.wall.post(**vk_params)['post_id']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@doktorfish0078
Здравствуйте,пожалуйста расскажите как решили проблему vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: photos_list is invalid
Моя цель отправлять фото не сохраняя его, я requests'ом захожу на сайт, делаю там скрин с помощью selenium,потом обрезаю его до нужных размеров с помощью Pillow(PIL) и пытаюсь отправить байтовое представление этого скрина, но в Post-запросе,который посылаю вк получаю хэш и сервер,но лист с photo пустой 5f56a9851e876751714765.png
Я подумал,что может не в том виде отправляю вк запрос с байтовой картинкой. Решил попробовать отправить фото из инета с помощью requests .content и получаю ту жу ошибку, хотя сделал всё в точности как написал shurshur . Я честно не могу понять в чем проблема, почему photo пустое...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы