Задать вопрос
Ответы пользователя по тегу Python
  • Как можно определить отправил ли пользователь больше 3-х раз одну и туже команду?

    @rPman
    Если один пользователь нажимая на кнопки может вызвать ddos у бота, то что то не так ты там сделал

    на практике достаточно пользователю ограничить нажатие кнопки чаще чем определенное количество за N секунд, для этого сохраняешь в боте последние нажатия с timestamp их нажатия не больше time()-Nsec, и если количество записей в этом списке больше лимита (например 10) - возвращаешь сообщение - 'я тебе потыкаю, не тыкай мне'
    Ответ написан
    Комментировать
  • Как удалять строку если в файле больше 500 символов?

    @rPman
    На выбор:
    представить результат как одну строку в итоговом формате (понятно большего размера), затем взять и начиная с 500-го символа найти первый разделитель поиском влево, получишь позицию длину итоговой строки, берешь эту подстроку с начала.

    либо, перебирать элементы списка тегов, добавляя их в результирующую строку с разделителем, считая полученную длину перед добавлением (добавлять длину тега плюс длину разделителя), как только превышает 500 выходить из цикла, этот вариант самый эффективный
    Ответ написан
    Комментировать
  • Как скачать файл с сайта, если ссылка на него отдает 403, но расширения браузера качают файл?

    @rPman
    Браузер, консоль разработчика по f12, закладка network, проводишь нужные действия с сайтом, ищешь в списке подключений нужное, нажимаешь правую кнопку - копировать как - curl выбрав нужную версию ОС

    полученная строка повторит запрос браузера с точностью до заголовков.
    Ответ написан
    Комментировать
  • Классификация вопросов?

    @rPman
    самое простое - забить в программу все возможные варианты и проверять по условию

    причем буквально сравнением, удалив из строки с вопросом лишние символы (лишние пробелы, знаки препинания если конечно не дойдешь до фраз типа 'казнить нельзя помиловать' и т.п)

    правильное решение как ни странно существует, но оно не подъемно для задающих такие вопросы
    Ответ написан
    Комментировать
  • Как получать сообщения из больших Telegram-каналов?

    @rPman
    попробуй другую библиотеку python-telegram
    Ответ написан
    Комментировать
  • Каким образом защищенный сайт допускает запросы "живых" пользователей, но блокирует запросы Python Requests и аналогов и как это обойти?

    @rPman
    Не дам готовый ответ но посоветую - открываешь отладчик в браузере по F12, вкладку network, проводишь полный сеанс работы пользователя с учетом чистых кук (и отдельно повторный заход), делаешь экспорт .par файла (это json файл, там все запросы, и ответы, полная информация)

    Затем смотришь нужные тебе запросы, они могут требовать (в заголовках или в параметрах) некие данные, которые собственно обфусицированным скриптом сайт и генерирует в 99% случаев это не скрытая строка а напрямую запрашиваемая в предыдущих запросах, т.е. ее можно поискать в par файле (лучше не как текст а разбирай json так как там могут быть строки с ковычками). Вместо ручного анализа может оказаться проще писать небольшой скрипт ковыряющийся в этих логах и доступных html/js файлах сайта.

    По уму отладчик в браузере умеет искать по истории запросов (там где есть поиск по url есть кнопка лупа - поиск, ее нажатие открывает еще одно поле поиска уже по данным)

    Работа с логом очень помогает, но сочувствую тебе.

    Деобфусикация и реверсинженеринг кода веб сайта стоит 10х-100х от такой же но с использоанием selenium или инжекта кода на страницу (например отдельное самописное приложение с браузером), сочувствую тебе. Подумай еще раз хорошенько, так как через условный год этот сайт так же придется разбирать и анализировать за те же деньго-трудо-затраты.

    p.s. для тех кто пишет защиту от парсинга - совет, увеличивайте нагрузку на процессор (в т.ч. используя gpu) чтобы всякие selenium потребовали ну очень много ресурсов (грубо говоря фиктивную задачу как в майнинге либо 100500-уровневая раз дешифрация или хеширование)... подбирая такие нагрузки, чтобы рядовой клиент все еще не замечал проблем а вот массовый анализ стал бы затратным.
    Такова селяви.. либо делай данные общими либо создавай проблемы всем.
    Ответ написан
    Комментировать
  • Как хранить большое количество фото и видео?

    @rPman
    да
    просто работа с файлами достаточно гибкая, могут возникнуть проблемы если со связью до серверов хранения будут нестабильности (смонтированная шара будет подвисать) и по этой причине многие вместо работы с файлами работают по http, расшарив файлы любым внутренним веб сервером как статику.
    php-шникам удобно,
    все файловые методы работают через прослойку, поддерживается http и ftp протокол, можно регистрировать свои (тот же s3 так делает), это значит масштабирование хранения в файлах может пройти практически без правки кода
    Ответ написан
    Комментировать
  • AIOGRAM Как скачать фото от пользователя и дать фото уникальный id?

    @rPman
    хеш от содержимого файла, если база изображений содержит считанные миллионы файлов - то хватит md5, если больше - лучше использовать что то с большим количеством бит какой-нибудь sha512 и соответственно меньшей вероятностью коллизий

    достоинством будет - одинаковые файлы не будут дублироваться в твоем хранилище
    Ответ написан
    Комментировать
  • Как сделать из int str?

    @rPman
    Вот этот список/таблица в которой номеру соответствует строка-описание называется справочник
    У тебя 2 основных подхода, хранить эту таблицу в базе данных (особенно если приложение должно уметь его редактировать) либо хранить его на клиенте и подставлять в программе

    Про хранение на клиенте тебе уже подсказали

    Про хранение в базе данных - либо ты создаешь буквально таблицу-справочник, либо про создании таблицы (твоя profile) определить не числовое поле а enum со строковыми описаниями (подходит для очень небольшого количества записей)

    При использовании таблицы-справочника sql запрос будет примерно таким
    select ... from profile p left join admin_cls a on p.admin=a.id
    Ответ написан
    Комментировать
  • Как создать виртуальный дисплей?

    @rPman
    питон тут однозначно не подойдет

    для windows:
    Без использования драйверов фейкового монитора, но при наличии физических выходов на видеокарте, можно к ним подключить заглушку (она дешевая, разная для каждого типа разъемов, гуглить эмулятор заглушка терминатор монитора dsub/hdmi/dp), благодаря которой система будет считать что монитор подключен, и уже средствами ОС работать с этим монитором (само собой чтобы самому видеть содержимое придется поставить какой-нибудь vnc с поддержкой мультимониторной конфигурации)

    Есть бесплатный враппер (это не кряк а утилита использующая штатный win api), которая превращает рабочие ревизии windows в сервер терминалов (позволяет подключиться mstsc одновременно несколько сессий а не только одну), фокус к сожалению будет убегать но можно сделать каскадные подключения

    Есть ibik aster, платная утилита, позволяющая из одного компьютера с несколькими мониторами, клавиатурами, мышками полноценные рабочие места на не серверных ревизиях windows, т.е. в совокупности с заглушкой из машины можно сделать несколько рабочих мест, на каждом запускать приложение и каждое рабочее место будет иметь свой фокус, т.е. приложения будут одновременно активны.

    (после win8 лицензия стала запрещать использовать компьютер с такими ревизиями больше чем одному человеку, даже игры splitscreen, следовать ли этому бредовому требованию - на вашей совести, технических ограничений нет)

    рекомендую если надо запускать браузеры с автоматизацией и без потери фокуса, дешевле по памяти
    для linux:
    вот пример создания виртуальных мониторов программно (там более сложный случай описывается)

    так же можно установить несколько xserver, работающих в оперативной памяти - vfb, это будут полноценные рабочие места, работающие исключительно в оперативной памяти (подключение например по vnc)

    и есть xephyr, версия xserver, работающая внутри окна (т.е. буквально выбираешь любое окно, хоть фейковое и говоришь - заменить изображение окна полноценным xserver, мышка и клавиатура будут общими но можно настроить (так делают multiseat на одной видеокарте с несколькими видеовыходами)
    Ответ написан
    Комментировать
  • Как исправить ошибку Non-UTF-8?

    @rPman
    кодировку файла с исходным текстом смени на utf-8
    Ответ написан
  • Как остановить все процессы?

    @rPman
    внутри бесконечного цикла нужно вставить проверку условия его завершения, например какая то переменная, значение которой изначально - false, а если она true то выход из цикла

    в данном случае те запросы что выполняются дойдут до конца но новые создаваться не будут
    Ответ написан
    Комментировать
  • Невозможно вносить изменения в Excel файл пока он открыт. Openpyxl. Python. Что можно сделать?

    @rPman
    перед открытием добавь в документ макрос (или пропиши его в шаблоны новых) который будет по какому то протоколу получать команды от твоей внешней программы и править документ.

    львиная доля кодинга тут именно средства коммуникации IPC

    p.s. может всю логику полностью в скрипты документа запихнуть? а не писать ее на питоне (хотя VBS тот еще язык)
    Ответ написан
    Комментировать
  • Как реализовать поиск похожих изображений?

    @rPman
    на картинке-запросе изображена девушка в юбке. Программа в этом случае должна выдать фотографии девушек в юбке
    очевидно что задача в поиске именно девушек в юбке или универсальнее?
    пример, как алгоритм должен понять что пользователь ищет девушек в юбке, а не столы, рядом с которыми стоит девушка?

    Гугли задачу - image annotation
    с помощью нейронных сетей (именно эта технология сейчас бурно развивается в разрезе работы с фото и изображениями)

    добавление в поисковую базу изображения должно начинаться с его анализа и получения списка тегов, объектов, которые нейронная сеть может на нем найти, и уже после ищешь по этим ключевым словам
    Ответ написан
  • Блочное выполнение кода?

    @rPman
    if else тут наиболее прямо к использованию
    как совет, чтобы по всему коду не было раскидано 100500 if-ов, есть возможность присвоить однократно при старте переменным нужные функции (тут как раз единственный if и будет) и при необходимости далее вызывать уже функции из этих переменных

    внутри же самой функции функционал разделять придется if-ами
    Ответ написан
  • Как поставить цикл while на паузу с помощью keyboard?

    @rPman
    дальнейшим воспроизведением
    постановка на паузу определяется тем что именно выполняется в цикле

    у вас два варианта - асинхронный, когда все происходит в одном потоке, в этом случае необходимы методы определения, нажата ли кнопка (помещена ли она в клавиатурный буфер) без остановки выполнения, к сожалению это не кроссплатформенно, т.е. для каждой ос свой метод, для примера вот чей то gist

    другой - многопоточный, в этом случае в одном потоке у вас висит ожидание нажатий клавиш, а в другом ваш главный цикл. этот вариант проще
    Ответ написан
    Комментировать
  • Как сделать, чтобы телеграм-бот реагировал на обращение к нему независимо с большой ли буквы к нему обращаются (python)?

    @rPman
    перед сравнением приведи строку к нижнему регистру, а список вариантов задай массивом и проверяй наличие с попомщью in
    if name.lower() in ["дядя","дедок","дедуля"]:
    ну и следи за кодировкой, если что делай decode
    Ответ написан
    1 комментарий
  • Как данные из одной таблицы sqlite3 передавать в другую?

    @rPman
    существует sql запрос insert or replace, который обновляет запись в указанной таблице по условию, но если условие выдает пустой список - создает запись

    Но я настоятельно рекомендую для упрощения кода исключить ситуацию, когда в обновляемой таблице нет нужных записей, в момент, когда в твоей базе появляется поддержка нового токена, добавлять в эту таблицу запись о нем с нулевым объемом. В этом случае хватит простого update mytable set amount=amount+? where cryptoname=?

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

    @rPman
    математика? график это график функции?

    Когда ты сам рисуешь график, ты должен реализовать формулу, которая из x и y=F(x) твоего графика вычислять screenX и screenY, т.е. координаты (чаще всего в пикселах) точек на экране

    соответственно обратный процесс, из клика по экрану, тебе нужно написать обратное преобразование

    если с X обычно все просто, пусть minx и maxx это минимальное и максимальное значения на графике для x, а график на экране рисуется с minScreenX до maxScreenX, то вычисление точки screenx = ((x-minx)*(maxScreenX-minScreenX)/(maxx-minx))+minScreenX
    точно так же считаешь screeny, только вместо x берешь y=f(x), miny, maxy и minScreenY, maxScreenY соответственно

    обратное преобразование для x проблем не составит, это школьный курс, но вот для y немного сложнее, если у f(x) можно аналитически вывести обратную функцию x=FF(y) то все просто, иначе, есть простой способ - сохранить в памяти в массиве все значения функции для каждой точки screenX на экране в виде ассоциативного массива ff[x]=[...] и использовать его вместо обратной функции
    Ответ написан
    Комментировать