Как загрузить изображение на стену в VK через VK API на Python?

Есть изображение на компьютере. Как загрузить это изображение на стену группы VK через VK API на Python? Официальная документация не помогла.
  • Вопрос задан
  • 11847 просмотров
Решения вопроса 1
Есть подробная инструкция на сайте ВК

Для данной операции вам необходимо получить токен для вашего приложения.
Можно использовать vk_auth
Для отправления запросов можно использовать библиотеку requests

import requests
import json
import vk_auth

# Ваши данные ВК
email = ''
password = ''
client_id = ''
# Необходимые нам права
scope = 'wall,photos'
# Идентификаторы группы
gid = ''

token = vk_auth(email, password, client_id, scope)[0]

# путь к вашему изображению
img = {'photo': ('img.jpg', open(r'img.jpg', 'rb'))}

# Получаем ссылку для загрузки изображений
method_url = 'https://api.vk.com/method/photos.getWallUploadServer?'
data = dict(access_token=token, gid=gid)
response = requests.post(method_url, data)
result = json.loads(response.text)
upload_url = result['response']['upload_url']

# Загружаем изображение на url
response = requests.post(upload_url, files=img)
result = json.loads(response.text)

# Сохраняем фото на сервере и получаем id
method_url = 'https://api.vk.com/method/photos.saveWallPhoto?'
data = dict(access_token=token, gid=gid, photo=result['photo'], hash=result['hash'], server=result['server'])
response = requests.post(method_url, data)
result = json.loads(response.text)['response'][0]['id']

# Теперь этот id остается лишь прикрепить в attachments метода wall.post
method_url = 'https://api.vk.com/method/wall.post?'
data = dict(access_token=token, owner_id='-' + gid, attachments=result, message='')
response = requests.post(method_url, data)
result = json.loads(response.text)

# На выходе мы получим в ответе post_id если не было ошибки
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Riedel87
Oracle/Python/IOS Developer
Привет! Попробуй вот этот пакет, думаю, тебе поможет.
https://github.com/dimka665/vk
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы