@Vertonger
Студент

Как с помощью Python отправить фото через VK API?

Цель - отправить фотографию сообщением ВКонтакте, предварительно загрузив её
С помощью метода VK API photos.getMessagesUploadServer получаю ссылку для загрузки фото:
link = 'https://api.vk.com/method/photos.getMessagesUploadServer?access_token=' + my_token + '&v=5.92' 
answer = requests.get(link)
text = html2text.HTML2Text().handle(answer.text)
url = eval(text)['response']['upload_url']

Далее, загружая по этой ссылке, получаю "InvalidURL: Failed to parse: https:\"
file_ = {'photo_file': ('photo.jpg', open('photo.jpg', 'rb'))}
answer2 = requests.post(url, files=file_)

Пробовал так же:
url_fixed = url.replace('\\','/')
file_ = {'photo_file': ('photo.jpg', open('photo.jpg', 'rb'))}
answer2 = requests.post(url_fixed, files=file_)

В ответ мне: "InvalidURL: No host supplied"
То ли я не понял, как работают post-запросы, то ли не понял, что хочет ВК
  • Вопрос задан
  • 1400 просмотров
Пригласить эксперта
Ответы на вопрос 1
lightarhont
@lightarhont
python/php developer
Примерно так
import vk, requests, os 
       
        session = vk.Session(access_token=access_token)
        api = vk.API(session, v='5.8')
        profile = api.users.get(user_id=user_id, fields=["photo_100",'sex','nickname', 'bdate'])[0]
        
        #Записываем на диск фото с vk
        data = requests.get(profile['photo_100'])
        filename = os.path.join(os.getcwd()+'/static/usersdata/photos', user_id+'.jpg')
        try:
            f=open(filename,'wb')
            f.write(data.content)
            f.close()
        except FileNotFoundError:
            return {'errorfilewrite': True}
Ответ написан
Ваш ответ на вопрос

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

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