• Как на Python3.10 на хостинге Ubuntu импортировать модули?

    Vindicar
    @Vindicar
    RTFM!
    А) Найди pip от питона 3.10 и запусти его явно. Например, командой pip3.10.
    Б) Используй виртуальное окружение, и ставь пакеты в него. Только убедись, что используешь правильный питон для создания venv.
    Ответ написан
    Комментировать
  • Как отправлять обмены в стиме через steampy?

    Vindicar
    @Vindicar
    RTFM!
    1. Почитать документацию.
    2. Найти метод с говорящим названием make_offer().
    3. Посмотреть пример, понять его, проверить в деле.
    4. Адаптировать пример для своих нужд.
    Ответ написан
    2 комментария
  • Как выводить людей списком в 1 сообщение?

    Vindicar
    @Vindicar
    RTFM!
    str.join()

    Сначала учи язык, потом бросайся писать ботов.
    Ответ написан
    2 комментария
  • Ошибка при запуске сервиса на Ubuntu, что за ошибка (code=exited, status=203/EXEC)?

    Vindicar
    @Vindicar
    RTFM!
    Возможно, journalctl может подсказать подробности: journalctl -u loaders.service
    Stackoverflow советует проверить, есть ли у пользователя (в твоем случае administrator) права на запуск
    /home/administrator/flask/loaders_webserv/bin/gunicorn
    , и сделать chown этого файла на требуемого пользователя при необходимости.
    Ответ написан
  • Ошибка при загрузке модуля silero, чо делать?

    Vindicar
    @Vindicar
    RTFM!
    Конфликт версий. Попробуй создать виртуальное окружение (venv) для своего проекта, и поставить нужные пакеты туда. В этом случае они не будут видны в основном системном окружении, и не будут конфликтовать.
    Правда, окружение придётся таскать вместе с проектом.
    Ответ написан
    Комментировать
  • Можно ли сделать проверку и выводить элемент если он существует?

    Vindicar
    @Vindicar
    RTFM!
    Читай, как пользоваться словарями. В частности, метод get().
    Ответ написан
    Комментировать
  • Ошибки при работе с модулем disnake что делать?

    Vindicar
    @Vindicar
    RTFM!
    У бота нет прав выдавать роли на этом сервере.
    Ответ написан
  • Как изменить вывод из PyMySQL?

    Vindicar
    @Vindicar
    RTFM!
    Код вернул тебе словарь с одним ключом 'username'. Читай, как пользоваться словарями и как получить значение по известному ключу.

    И да, если ты не узнаёшь базовые структуры данных питона, за ботов браться тебе рановато.
    Ответ написан
    Комментировать
  • Почему не меняются кнопки в боте?

    Vindicar
    @Vindicar
    RTFM!
    Кнопки привязаны к сообщению. Чтобы отправить новые кнопки, нужно послать новое сообщение. Ты этого не делаешь.
    Ответ написан
  • Тайминг в сообщении?

    Vindicar
    @Vindicar
    RTFM!
    Модуль time. Храни для каждого пользователя сведения о том, когда он успешно вызвал команду последний раз.
    При вызове команды проверяй, есть ли это время, и если есть, достаточно ли времени прошло.

    Код - сам.
    Ответ написан
    Комментировать
  • Ошибка в боте 'NoneType' object has no attribute 'lower'?

    Vindicar
    @Vindicar
    RTFM!
    Очевидно, event.obj.text содержит значение None по какой-то причине. Проверяй значение, прежде чем пытаться вызывать его методы.
    Ответ написан
  • Как изменить кортеж в файле?

    Vindicar
    @Vindicar
    RTFM!
    Не изобретать велосипед, а использовать формат JSON. Средства работы с ним в питоне есть из коробки, в одноименном модуле.

    Если данных много, стоит посмотреть в сторону sqlite, но тогда файл будет непригоден для ручной правки, да и тема баз данных требует больше внимания и усилий.
    Ответ написан
  • Выдает ошибку после того как нажимаю команду /buy. Как исправить ошибку?

    Vindicar
    @Vindicar
    RTFM!
    Один из сайтов, на которые ты делаешь запрос через get(), или не отвечает, или недоступен по какой-то другой причине.

    Собственно, наивно думать, что это всегда сработает. Сеть непредсказуема. Сайт может работать, может тормозить, может лежать, может тебя забанить, у тебя может не быть интернета - есть сто и одна причина, почему сайт может не работать. Так что готовься к ошибкам заранее. Заворачивай обращения к сайту в try-except, продумывай, что делать, если обращение не удалось, и т.д.
    Ответ написан
    Комментировать
  • Почему код перестает работать когда пишу с Numpad?

    Vindicar
    @Vindicar
    RTFM!
    По поводу твоего второго вопроса: listener - это почти наверняка поток выполнения. И я подозреваю, что этот поток отмечен как daemon - т.е. фоновый поток. Он работает независимо от главного потока, который выполняет тело программы. Главный поток запускает listener, и переходит на input(). Когда input() вернёт управление, главный поток дойдёт до конца программы и завершится.
    Когда в программе на питоне остаются только фоновые потоки, она завершается.
    Так что если тебе нужно, чтобы программа просто ждала, while True: time.sleep(1.0) в помощь. Этот цикл прервать будет сложно.
    Ответ написан
    Комментировать
  • To many values to unpack как фиксить?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь распаковку коллекции (т.е. оператор вида a, b, c = some_value), тебе нужно быть уверенным, что some_value содержит в точности столько значений, сколько переменных ты распаковываешь.
    Если это не так, есть три варианта:
    1. Если ты знаешь, сколько значений в возвращаемой коллекции, ты можешь просто добавить нужное количество переменных. a, b, c, _ = some_value. Символом _ обычно обозначаются неиспользуемые переменные/параметры.
    2. Если ты не знаешь, сколько значений в возвращаемой коллекции, или это число меняется, можно не выпендриваться, а работать с индексами. Но тебе нужно быть уверенным, что у тебя всегда есть как минимум нужное число значений.
    a = some_value[0]
    b = some_value[1]
    c = some_value[2]
    # и так далее.

    3. Есть ещё вариант распаковки, который работает, если ты значешь, что значений больше, чем нужно:
    a, b, c, *_ = somevalue

    Я бы посоветовал второй вариант
    Ответ написан
    Комментировать
  • Зачем PyCharm просит создавать пустую строку в коце?

    Vindicar
    @Vindicar
    RTFM!
    Документ PEP 8 (на который ссылается PyCharm) описывает рекомендуемую стилизацию кода на питоне. Чем единообразнее код, тем проще одному человеку будет читать код другого. И не стоит забывать, что ты сам через полгода - это всё равно что другой человек.
    Ряд инструментов позволяет автоматически проверить соответствие заданного кода стилю PEP 8, и PyCharm в их числе.
    Ответ написан
    Комментировать
  • Как извлечь эмодзи из картинки?

    Vindicar
    @Vindicar
    RTFM!
    Окей, гугл, opencv template matching.
    Когда научишься находить заранее известный эмодзи в изображении, делаешь базу эмодзи в искомом приложении и пробуешь находить их по очереди.
    Процесс можно будет ускорить, создав дерево - например, ищешь желтые кружки, если такой нашёлся с определённой степенью уверенности, только тогда ищешь желтые лица. Но это уже подробности.
    Ответ написан
    Комментировать
  • Как создать свой каскад для распознавания объектов?

    Vindicar
    @Vindicar
    RTFM!
    Я создавал лабораторную по этой теме, могу привести инструкцию.
    1. Загрузите набор утилит opencv(гугл-диск, но я советую поискать самостоятельно), в частности opencv_createsamples и opencv_traincascade, а также необходимые им DLL-библиотеки. Распакуйте их в рабочий каталог в корне диска, без русских букв и пробелов в названии. Здесь и далее предполагается, что C:\MyDirName - ваш рабочий каталог.
    2. Подготовьте фото вашего объекта. Используйте контрастный объект без движущихся частей, и желательно не дающий бликов. Для этой цели хорошо подходят логотипы.
    3. Подготовьте отрицательные примеры (не менее 100 изображений). Для этого можно снять короткое видео помещения, затем написать программу, которая разделяет это видео на отдельные кадры. Рекомендуется поместить их в отдельный подкаталог negatives.
    4. Подготовьте файлы, содержащие список файлов в этом каталоге. Их можно сгенерировать следующей парой команд в терминале:
      dir C:\MyDirName\negatives\*.jpg /B /S >C:\MyDirName\negatives\negatives_abs.txt

      dir C:\MyDirName\negatives\*.jpg /B >C:\MyDirName\negatives\negatives_rel.txt

    5. Создайте пустые подкаталоги C:\MyDirName\positives и C:\MyDirName\training. Поместите ваше изображение - положительный пример в каталог C:\MyDirName\ и назовите его positive.jpg. В качестве положительного примера желательно разместить ваш объект на светлом фоне, если он тёмный, и наоборот.
    6. Сгенерируйте положительные примеры с помощью утилиты opencv_createsamples. Команда будет выглядеть примерно следующим образом:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -img positive.jpg -bg negatives\negatives_rel.txt -maxxangle 0.1 -maxyangle 0.1 -maxzangle 0.1 -bgcolor 0 -bgthresh 0 -w 50 -h 50 -num 100

      Параметры:
      -info - выходной файл.
      -img - входное изображение - положительный пример
      -bg - фоновые изображения. Положительный пример будет наложен на них (в оттенках серого).
      -max?angle - допустимые углы поворота примера. Утилита выполнит перспективное преобразование примера перед наложением.
      -bgcolor и -bgthresh задают яркость (среднее и диапазон изменения) для "прозрачного цвета". Например, если ваш объект на белом фоне, задайте эти параметры равными 240 и 15 (диапазон яркости 225-255). Задав оба параметра равными 0, вы отключите эту функцию и все цвета будут непрозрачными.
      -w и -h задают минимальный размер для размещаемой копии вашего образца.
      -num - количество примеров, которые стоит генерировать. Не должно превышать количество изображений в каталоге.
      Утилита должна вывести ряд сообщений вида "Open background image", а в конце вывести "Done".
    7. Сгенерируйте vec файл следующей командой:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -num 100 -w 20 -h 20 -vec positives\positives.vec

      где info.lst был сгенерирован в ходе пункта 6.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада.
      -num - количество сгенерированных примеров. Столько же, сколько и в пункте 6.
    8. Проведите обучение каскада с помощью утилиты opencv_traincascade. Команда будет иметь примерно следующий вид:
      C:\MyDirName\opencv_traincascade.exe -data training -vec positives\positives.vec -bg negatives\negatives_abs.txt -numStages 100 -numPos 100 -numNeg 100 -featureType haar -w 20 -h 20 -minHitRate 0.999 -maxFalseAlarmRate 0.4 -precalcValBufSize 4048 -precalcIdxBufSize 4048 -numThreads 24 -acceptanceRatioBreakValue 10e-5

      -data - каталог для рабочих данных, который вы создали в пункте 5.
      -vec - индекс, который был создан в пункте 7.
      -bg - файл со списком отрицательных примеров (используйте абсолютные пути!)
      -numPos и -numNeg - количество положительных примеров (пункт 6) и отрицательных примеров (пункт 3).
      -numStages - максимальное количество этапов каскада. Итоговый каскад может содержать меньшее количество этапов.
      -featureType - определяет тип признаков. Признаки Хаара обучаются медленнее, но зато более точны.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада. Должны строго совпадать с заданными в пункте 7.
      -minHitRate и -maxFalseAlarmRate задают качество работы одного каскада.
      -acceptanceRatioBreakValue определяет момент, когда каскад перестаёт обучаться.
      -precalcValBufSize и -precalcIdxBufSize задают потребление памяти процессом.
      -numThreads определяет число рабочих потоков.
    9. По итогам обучения в каталоге training должен появиться файл cascade.xml, который можно загружать так же, как типовые каскады, поставляемые с opencv. Обратите внимание, что если вы хотите запустить обучение с начала, нужно очистить содержимое каталога training, иначе утилита будет дообучать существующий каскад.
    Ответ написан
    5 комментариев
  • Ошибка при попытке создать асинхронную функцию RuntimeWarning: coroutine 'gather_data' was never awaited?

    Vindicar
    @Vindicar
    RTFM!
    Ну если почитать внимательнее, тебе говорят в чём дело:
    File "D:\all\Programming\Парсинг\main.py", line 46, in gather_data
    pagination = int(soup.find('div', class_='pagination-wrapper').find('ul', class_='pagination-list css-1vdlgt7').find_all('li', class_='pagination-list-item')[-1].text)
    AttributeError: 'NoneType' object has no attribute 'find'

    Ты лихим кавалерийским наскоком пытаешься пройти по тегам, а какого-то из них просто нет в странице.
    Заверни код хотя бы в try-catch, и имей ввиду - сетевые операции по природе своей ненадёжны. Если сайт не твой, он может не ответить, ответить через полчаса, или прислать гоатсе вместо ответа. Так что нужно быть готовым к худшему.
    Ответ написан
  • Как использовать bot.exception_handler(telebot)?

    Vindicar
    @Vindicar
    RTFM!
    class ExHandler:
        def handle(self, error):
            print('Error: ', error)
    Ответ написан
    Комментировать