Есть
подробная инструкция на сайте ВК
Для данной операции вам необходимо получить токен для вашего приложения.
Можно использовать
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 если не было ошибки