Мне нужно получить (или скачать) картинку по ссылке . Затем отправить пользователю в личку через vk-api. Как это можно сделать? Поддерживает вообще ли vk-api SVG формат или надо конвертировать ? Как правильно это сделать ? И похоже что библиотека cairosvg не поддерживает SVG . И можно ли пихать картинку в message? Вот тут что-то не понятное написал:
import vk_api
import json
import requests
import cairosvg
import vk_api.longpoll
from vk_api.longpoll import VkLongPoll , VkEventType , Event
try:
from urllib.request import urlopen
from PIL import Image
except:
print("Import Error !")
token_vk = "*************************"
# инициализация бота
vk_session = vk_api.VkApi(token=token_vk)
vk = vk_session.get_api()
# инициализация лонгполлинга
longpoll = VkLongPoll(vk_session)
#много кода ...
def send_photo(photos):
url = self.vk.method('photos.getMessagesUploadServer')['upload_url']
photo_files = open_files(photos)
response = self.vk.http.post(url, files=photo_files)
close_files(photo_files)
response = self.vk.method('photos.saveMessagesPhoto', response.json())
return response
def state0(message: Event):
text = message.text
#бла-бла-бла
cairosvg.svg2png(url='https://restcountries.eu/data/rus.svg', write_to='C:/Main/Programming/test.png')
url2 = "C:/Main/Programming/test.png"
image = Image.open(urlopen(url2))
s = send_photo(image)
# отправляем сообщение
vk.messages.send(
user_id = message.user_id, # кому
message = s # само сообщение хранится в переменной 's'
)
# ожидаем события
for event in longpoll.listen():
# если новое сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
# получаем или создаём id пользователя в базе данных
user, _ = User.get_or_create(vk_id=event.user_id)
if user.state == 0:
state0(event)