Задать вопрос
  • Как правильно использовать run_in_executor?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала посмотри пакет arsenic, это селениум с асинхронной обёрткой. Можно будет переписать твой парсер на асинхронный подход, и не париться по поводу блокировки бота.
    Ответ написан
    Комментировать
  • Почему response.json( ) после fetch асинхронен?

    Vindicar
    @Vindicar
    RTFM!
    Потому что получение ответа от сервера - не то же самое, что получение контента. Скорее всего, мы получили только заголовки ответа, а в рамках соответствующих методов типа json() мы получаем тело ответа и парсим его.
    Ответ написан
    Комментировать
  • Как работает перенаправление вывода скрипта python?

    Vindicar
    @Vindicar
    RTFM!
    Скорее всего, проблема в работе с одним файлом через два дескриптора (один - stdout твоего скрипта, второй - stdout вызываемого). Попробуй принудительно сбрасывать данные в файл:
    print('Пытаемся запустить файл 1:', flush=True)
    Ответ написан
    1 комментарий
  • Фундаментальное отличие async await в python и javascript?

    Vindicar
    @Vindicar
    RTFM!
    Разницы нет, в том числе в твоём описании.
    Текущая корутина при await-вызове приостанавливается, её состояние сохраняется.
    При этом реактор может заниматься другими вещами (в частности, выполнением await-вызова).
    Когда await-вызов завершиться, состояние корутины будет восстановлено, и она продолжит выполнение.
    Ответ написан
    4 комментария
  • Что делать, если команда работает только если каждый раз перезапускать бота?

    Vindicar
    @Vindicar
    RTFM!
    Подозреваю, что async with p2p закрывает соединение с сервисом, с которым ты пытаешься работать. Собственно, with обычно для этого и предназначен - для высвобождения ресурсов.
    Либо переоткрывай клиента перед with, либо не используй with.
    Ответ написан
    Комментировать
  • В Pycharm код выполняется, из винды нет, почему?

    Vindicar
    @Vindicar
    RTFM!
    Открой окно терминала (cmd.exe), перейди в каталог скрипта, запусти его командой python myscript.py.
    Тогда окно терминала останется по завершению скрипта, и ты сможешь увидеть, что скрипт написал.
    Ответ написан
    Комментировать
  • Как получить результат выполнения задачи в Asyncio?

    Vindicar
    @Vindicar
    RTFM!
    await tay
    Угадай с трёх раз, что возвращает это выражение?
    Правильно. Значение, которое вернёт корутина, запущенная в рамках задачи. Просто присвой его переменной.
    А вообще в твоём случае и задачи-то не требуются.
    Освой asyncio.gather().
    Она позволит выполнить переданные корутины одновременно, и вернёт массив их результатов.
    results = await asyncio.gather(coro1(x,y), coro2(a,b), ...)
    res1, res2, ... = results
    Ответ написан
    Комментировать
  • Как в Python присвоить объекту класс, если имена классов хранятся в списке?

    Vindicar
    @Vindicar
    RTFM!
    Например, так.
    class KnownClasses:
        # используем статическое поле класса, 
        # так как к нему проще получить доступ из разных модулей
        collection: typing.Dict[str, typing.Type] = {}
    
    class SomeKnownClass:
        ...  # тут тело класса
    
    # регистрируем класс
    KnownClasses.collection[SomeKnownClass.__name__] = SomeKnownClass

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

    Vindicar
    @Vindicar
    RTFM!
    Запустить и пусть работает.

    Не, кроме шуток. Каков вопрос - таков ответ.
    Нужна машина, которая включена и подключена к сети 24/7. Например, арендованная VPS.
    Также нужно предусмотреть наиболее вероятные исключения в боте, отловить и обработать их.
    Также стоит предусмотреть средства аварийного перезапуска. Например, если на VPS установлен Debian-подобный дистрибутив, то можно оформить запуск бота через systemd. Это гарантирует перезапуск программы при перезагрузке, а также при его аварийном завершении.
    Ответ написан
    Комментировать
  • Почему скрипт не принимает переменные?

    Vindicar
    @Vindicar
    RTFM!
    Я подозреваю, что ты не подумал о типах данных.
    Из текстового файла ты можешь прочитать только строковой тип.
    А какой тип данных используют нужные тебе ID?
    Ответ написан
  • Как нейросети обрабатывают текстовую информацию?

    Vindicar
    @Vindicar
    RTFM!
    Один из подходов, если я не путаю, это seq2seq модель, она же рекуррентный энкодер.
    На базе текстов, подобных тем, которые планируется обрабатывать, строится автоэнкодер. Как обычно в автоэнкодерах, его первая половина учится "сжимать" входные данные (в нашем случае кодированный текст), а вторая половина учится их "распаковывать" обратно. При этом "несжатые" данные - это последовательность входов, а "сжатые" - статический вектор контекста, который некоторым (не обязательно известным нам) способом кодирует "смысл". Контроль успешности кодирования проверяется последующей "распаковкой" - на выходе автоэнкодера должна получиться та же самая последовательность, которая была на входе.
    Когда научились "сжимать" текст в вектор, этот вектор можно обрабатывать другими методами машинного обучения. Например, решать задачи классификации, регрессии и т.п.
    Тогда при обработке неизвестного текста он кодируется (например, производится лемматизация - устраняются грамматические числа, падежи и т.п.), прогоняется через первую половину автоэнкодера, а полученный вектор контекста подаётся на вход сети, которая и заточена под решение нашей задачи.

    Но ЕМНИП, это один из ранних подходов. Сейчас есть более продвинутые вещи, я просто о них в не курсе.
    Ответ написан
    Комментировать
  • Как сделать ИИ, или програму для ответов в викторин?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала - организовать захват экрана (скажем, через vidgear), прикрутить распознавание текста (скажем, через tesseract).
    А дальше - если ИИ должен отвечать только на заранее известные ему вопросы, то использовать какой-нибудь из алгоритмов полнотекстового поиска, где запрос - это распознанный текст вопроса.
    Альтернативно можно тупо искать наиболее похожий известный вопрос стандартным модулем difflib.
    Когда поняли, какой вопрос нам задают, используем pywinauto или pyautogui для ввода текста.
    Ответ написан
    2 комментария
  • Как организовать ограничение для записи по внешнему ключу?

    Vindicar
    @Vindicar
    RTFM!
    Я бы сделал связную таблицу ПроизводительТипа(id_типа, id_производителя), и заставил бы товар ссылаться на эту таблицу по композитному внешнему ключу, вместо того чтобы ссылаться напрямую на тип и производителя.
    Ответ написан
  • TypeError: 'NoneType' object is not subscriptable.?

    Vindicar
    @Vindicar
    RTFM!
    У тебя в твоем json не то, что ты ожидаешь.
    Где именно - нужно проверять по шагам, вместо лихого objects_data.get('data').get('list')[0]
    Действительно ли objects_data словарь? Есть ли там ключ data?
    Действительно ли по ключу data лежит словарь? Есть в этом словаре ключ list (подозреваю что нет)?
    Лови исключения блоком try-except, при исключении скидывай в какой-нибудь файл содержимое проблемного json, чтобы можно было посмотреть, что там тебе прилетело от сервера.
    Ответ написан
    Комментировать
  • Как мне оптимизировать цикл, чтобы он работал намного быстрее?

    Vindicar
    @Vindicar
    RTFM!
    0. Понять, про какой именно цикл речь.
    1. Замерить время выполнения частей цикла.
    2. Найти часть, которая тормозит.
    3. Понять, почему она тормозит.
    4. Написать реализацию, которая будет тормозить меньше.
    5. Проверить её в деле.
    Ответ написан
    Комментировать
  • Как расшифровать гифку?

    Vindicar
    @Vindicar
    RTFM!
    Ну если стеганография, то нужно распаковать гифку в массив пикселей (покадровый). Для скрытого хранения данных в изображениях часто используются N младших разрядов пикселей. Но нужно ещё учесть, что GIF обычно использует палитру. Так что надо посмотреть на палитру цветов. Если похожие цвета в ней идут сериями по N, значит, log2(N) младших бит заняты скрытыми данными.
    Ответ написан
    1 комментарий
  • Почему не работает detectMultiScale python?

    Vindicar
    @Vindicar
    RTFM!
    face_cascade = "C:\mine\haarcascade_frontalface_alt.xml"
    ...
    face_cascade.detectMultiScale(

    У тебя face_cascade - это строка. Чего ты ожидаешь-то от неё? Класс строки понятия не имеет ни про какие каскады Хаара.
    Сдаётся мне, ты пропустил этап собственно загрузки каскада из указанного файла. А именно, вызов конструктора cv2.CascadeClassifier().
    Ответ написан
    1 комментарий
  • Что за боты/роботы шлют такие запросы?

    Vindicar
    @Vindicar
    RTFM!
    Сканят все IP адреса подряд, проверяют наличие известных им уязвимых версий популярных CMS. При детекте узявимой версии запускают эксплоит под неё для заливки веб-шелла.
    Ответ написан
    Комментировать
  • Как написать эту программу?

    Vindicar
    @Vindicar
    RTFM!
    Ну тогда...
    str.partition() - для разделения строки на две части по первому указанному разделителю. Пригодится для отделения страны от списка городов.
    str.split() - для разделения строки на неизвестное заранее число частей. Пригодится для разделения списка городов на отдельные названия.
    str.strip() - для удаления пробелов. Пропусти названия городов через этот метод, чтобы убрать лишние пробелы по краям.
    open() - для открытия файла.
    file.readline() - для чтения строки из файла.

    Логика простая.
    1. Создаёшь словарь.
    1. Открываешь файл.
    2. Читаешь строку, преобразуешь в целое - это количество записей.
    3. Организуешь цикл с параметром (число повторов равно количеству записей).
    4. В цикле читаешь строку, режешь её на две части - страна и города.
    5. Режешь список городов на названия.
    6. В цикле по названиям убираешь лишние пробелы из названия, и вставляешь в словарь пару: ключ - название города, значение - название страны.
    7. Конец обоих циклов (и по городам, и по строкам).
    8. Читаешь строку запрос, разбиваешь на части, так же убираешь пробелы.
    9. Для каждого элемента запроса проверяешь, есть ли в словаре такой ключ оператором in. Если есть, выводишь значение по этому ключу.
    Всё.
    Ответ написан