Вся суть в принципе сформулирована в вопросе. Просто не отправляет фото. Не понимаю в чем проблема. Если есть знающие люди, объясните пожалуйста.
Код:
# путь к изображению
img = {'photo': ('123.jpg', open(r'123.jpg', 'rb'))}
# Получаем ссылку для загрузки изображений
method_url = 'https://api.vk.com/method/photos.getWallUploadServer?'
data = dict(access_token=token, gid= gid, v = '5.131')
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'], v = '5.131')
response = requests.post(method_url, data)
result = json.loads(response.text)['response'][0]['id']
print(result)
print()
# Теперь этот id остается лишь прикрепить в attachments метода wall.post
method_url = 'https://api.vk.com/method/wall.post?'
data = dict(access_token=token, owner_id= owner_id, photo = result, message = 'Hello', from_group = 1, v = '5.131')
response = requests.post(method_url, data)
result = json.loads(response.text)