Как сделать с помощью Python библиотеки Telebot чтобы к отправленной рандомной фотографии был привязан соответствующий текст?
Есть функция при которой из списка в рандомном порядке выбирается фоторафия и отправляется, но к ней должен быть привязан текст подоходящий именно к картинке, как это реализовать?
elif message.text.strip() == 'Філософ':
bot.send_photo(message.chat.id, open(random.choice(photo), 'rb'));
Ответы (1 шт):
Автор решения: mazik7512
→ Ссылка
Вам нужно где-то хранить данные зависимости, например в БД MySQL или любой другой, исходя из ваших предпочтений.
Структура таблицы будет следующей:
| id | photo | text |
|---|---|---|
| 1 | %путь_к_фото_1% | %текст_для_фото_1% |
| 2 | %путь_к_фото_2% | %текст_для_фото_2% |
photo - путь до изображения.
text - подпись к изображению.
UPDATE. Для подключения к MySQL потребуется библиотека PyMySQL, установить ее можно с помощью команды pip install PyMySQL.
import pymysql
from random import randint
def connect_to_db():
con = pymysql.connect('localhost', 'user',
'password', 'database')
cur = con.cursor()
return con, cur
def get_random_id(cur):
cur.execute("SELECT MAX(id) FROM photo_text")
max_id = cur.fetchone()
return randint(1, max_id[0])
def get_random_photo_text():
con, cur = connect_to_db()
rand_id = get_random_id(cur)
cur.execute("SELECT photo, text FROM photo_text WHERE id=" + str(rand_id))
data = cur.fetchone()
cur.close()
con.close()
return data[0], data[1] #data[0] - путь к фото, data[1] - подпись