Максим Припадчев, я думаю, ты не понял что требуется. Требуется, чтобы бот повторял не только текст, но и форматирование оригинального сообщения. Каким бы оно не было.
А для этого нужно получить текст оригинального сообщения в формате markdown, а не plaintext.
1. Есть кнопка </> для оформления кода. Скриншотами нельзя.
2. Поправь отступ после else, у тебя тело этой ветки уехало вправо.
3. Переименуй вопрос: "как остановить бесконечный цикл". Чем понятнее вопрос, тем больше шансов получить ответ.
Какую структуру данных возвращает shop.getAllMashines()?
Не "данные о чём", а какую структуру: список объектов, список словарей, список списков строк, или что там?
Без подробностей ответ на вопрос дать не получится.
Что подразумевается под упаковкой? pyinstaller? Тогда приводи скрипт/команду, которой упаковываешь.
Что упаковывается? Приведи минимальный(!) скрипт, на котором проблема воспроизводится.
Какие версии пакетов используются?
Использовались ли стандартные фиксы? Например, у pyinstaller есть механизм hidden import для случаев, когда он не может понять, какие библиотеки используются скриптом.
Короче, в текущем виде тебе скажут "значит, надо чинить", и будут правы.
саня фрайс, скрины кода/консоли нельзя постить. Их хрен прочитаешь. Скопируй текст и вставь, как посоветовали в комментах к вопросу.
И да, ты используешь вирутальные окружения, или работаешь в системном?
В таком виде это задание для фриланса, а не вопрос.
Что уже сделано, в чём конкретно затруднения?
Если затруднения в "с чего начать", то хотя бы с этого.
Уточни вопрос. Что именно ты хочешь получить-то?
1. PNG-файл на диске
2. Последовательность байт в памяти, описывающее изображение в формате PNG (как бы содержимое файла, с заголовками, сжатием и прочим)
3. Экземпляр PIL.Image
4. Что-то ещё?
Renat871, посмотреть и подумать. В массиве 3 строки по 6 значений с одинаковой структурой. Первые 4 значения выглядят как координаты (целые значения в пределах размера изображения). Первая пара наверняка левый верхний угол. Вторая пара слишком велика для ширины (угол выйдет за рамки изображения, оно у тебя 736х800), значит, это скорее всего правый нижний угол.
С учётом цикла for в приведённом коде, получаем массив размером 1х3х6. Т.е. код будет типа
for row in detections[0]:
x1, y1, x2, y2 = map(int, row[:4])
Дальше сам. Как нарисовать прямоугольник на изображении по известным координатом - гуглится. Нужно будет уточнить в строке сначала идёт x, потом y, или наоборот.
Андрей, ну и ещё одна вещь, на которой я погорел в своё время.
INSERT OR REPLACE при наличии строки удаляет её и вставляет новую. Если у тебя есть ссылки по внешнему ключу на эту строку, и настроено каскадное удаление - потеряешь все строки, ссылающиеся на "обновляемую".
Может быть предпочтительно использовать INSERT INTO ... ON CONFLICT DO UPDATE.
Андрей, ещё одна проверка. Выполни на своей базе данных такой запрос (можно клиентом sqlite или отдельным скриптом на питоне):
SELECT sql FROM sqlite_schema WHERE type = 'table' AND tbl_name = 'persons'
Отпишись, совпадает ли результат с твоим запросом на создание таблицы.
Поясню почему: если у тебя таблица persons уже была создана с другими настройками, CREATE TABLE IF NOT EXISTS её не переделает, а оставит как есть. Т.е. столбцы могут быть другими, индексы могут быть другими и т.п.
Ну для начала оцени, где именно узкое место. Замерь время выполнения каждого шага.
Может, у тебя не скачивание тормозит, а сам парсинг медленный. Что вообще происходит в parse_item()?
А для этого нужно получить текст оригинального сообщения в формате markdown, а не plaintext.