Задать вопрос
  • Где можно скачать готовый загрузчик файлов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    То, о чем вы говорите - это не какая-то отдельная программа. Код, который отвечает за такую загрузку с прогресс-баром должен располагаться частично на сервере, а большей частью на клиенте, то есть в браузере. Это значит, что этот код будет встроен в ваш сайт и на серверной и на клиентской его стороне.
    Реализовать это можно разными способами, и есть много разных готовых решений для разных фреймворков. Приделать загрузку от одного фреймворка к другому в общем случае можно, но это не тривиальная частная задача, поэтому искать надо способ сделать это в вашей экосистеме, а не отдельно.

    Однако, если совсем пофиг на интеграцию с существующими интерфейсами и сайтом, то можно взять любой пример с самым классическим аплоадом из любого фреймворка прям по документации, и поднять его в изолированном докер-контейнере. У вас получится отдельная изолированная страница, вы зароутите её на отдельный адрес через ваш обратный прокси (например nginx), и будет у вас колхоз, но с прогрессбаром.

    Если вам не понятно то, что я тут рассказал, то, увы... Пока что вам будет не по силам такое реализовать. Опыта и знаний маловато. Учитесь, или идите к фрилансерам, ну или более детально формулируйте свой вопрос. Потому что по нынешней его формулировке выходит, что вам нужна подробная индивидуальная лекция о том, как работают веб-приложения, причем для совершенно неподготовленного человека. Это часов 15 индивидуальных занятий.
    Вы же понимаете, что этот ресурс не про такое?
    Ответ написан
    3 комментария
  • Почему удаляет аккаунт телеграмм на python telethon?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Скорее всего вы применяете клиентское API телеграма не по назначению или вопреки лицензии. Например, вы, может быть, рассылаете спам, или скам, а может быть делаете что-то ещё, что противоречит добросовестному использованию сети.
    Конкретной причины, по которой вас блокируют вам никто скорее всего не скажет. В таких случаях самое эффективное - это максимальнео расплывчато описывать причины и критерии возможных блокировок, чтобы играясь с пороговыми критериями злоумышленники не могли подстроиться под ограничения.

    Скорее всего ограничения и критерии, по которым вашу деятельность пресекают, не заключаются в чем-то одном. Скорее всего критериев много и они не однозначно влияют на принятие решения о блокировке. Другими словами, если быть по ту сторону баррикад от вас, то причины блокировок нужно сделать максимально многофакторными, диверсифицированными, неявными и нечеткими. Где-то нужно даже вводить рандомизацию и отложенную блокировку, если вы предпринимаете серьёзные меры, чтобы ваш софт притворялся валидным штатным клиентом. В вашем же случае, видимо, паттерн использования протокола и АПИ выдаёт вас мгновенно.

    Подумайте чем ваш "клиент" телеграма отличается от добросовестно выполненного клиента для штатных целей? Может быть он не сохраняет контактов? Может быть коннекты идут из одной подсети и она уже "на особом счету"? Может быть На ваши сообщения много жаловались, и теперь отдельные специальные эвристики вылавливают клиентов, похожих по паттерну на ваши и банят их сразу же?

    Никто вам не скажет конкретных критериев. Никто не допустит, чтобы эти критерии были всегда неизменными и четкими. Это не эффективно для борьбы со спамерами.
    Ответ написан
    3 комментария
  • Как сшить панораму неба?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Интересная задачка. Никогда ее не решал, поэтому пользу от моего ответа вам, наверно, не будет, но...
    Вы вот чем сформировали изображение проекции кадров на первой картинке в вопросе?
    Если вы смогли спроецировать кадр, то также можно спроецировать и каждый пиксель. Формулы те же, вопрос интерполяции. Нужно просто спроецировать ваши фото на одну картинку, а при одинаково настроенной фиксированной экспозиции по цвету границ видно быть не должно.
    Также можно откалибровать и поправочные искажения локальных участков для каждой камеры. Это будут векторные поля, сформированные размытием опорных поправочных векторов при калибровке.
    То есть берете кадры звёздного неба, отмечаете одинаковые точки на ваших проекциях, двигаете проекции, чтобы точки совпали и надеетесь, что ваша монтировка не погнётся=).
    Сама склейка будет происходить попиксельно. Каждый кадр попиксельно проецируется в отдельный слой с вдвое бОльшим разрешением, так каждый проецируемый пиксель будет немного четырёхугольником с вещественными координатами, а затем спроецированные полигоны растеризуете и усредняете перекрытия.
    Задачка выглядит не особо сложной. Основная задача в подборе формул проецирования.
    Ответ написан
    Комментировать
  • Где найти бесплатный работающий хостинг для одностраничника?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ответ написан
    Комментировать
  • Самый бюджетный микроконтроллер до 30-40 рублей, есть ли он?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ответ написан
    Комментировать
  • Как получить маршрут Google Directions API?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А что конкретно вам не понятно в официальной документации?
    https://developers.google.com/maps/documentation/routes
    Вопрос у вас звучит "не понимаю как сделать задачу" полностью, вообще. Тут нужно задавать конкретные вопросы, а не общие абастрактные. Иначе не понятно что вам требуется, курс по программированию, или сделать проект за вас.
    Ответ написан
    1 комментарий
  • OpenCV. Почему отдельные кадры из видео весят больше чем видео?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Потому что кадры в массивах хранятся в несжатом виде, а исходный видео-ролик сжат кодеком.
    Кодеки сейчас довольно сложные, у них много параметров сжатия и нетривиальные алгоритмы. Вы один и тот же ролик можете расжать и сжать по новой, а в результате получите совсем другой объём и даже немного отличающийся контент, ведь сжатие происходит обычно с потерей качества.
    Ответ написан
    Комментировать
  • Почему код разбиения на слагаемые не работает?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Во-первых, "слагаемые".
    Во-вторых, почитайте код вашей рекурсивной функции, он выдаёт количество, а не сами варианты сложения. Если не можете это понять из кода, то вам рано такие задачи. Серьёзно.
    А ошибка у вас из-за того, что такой алгоритм упирается в размер максимальной глубины рекурсии. Если хотите такие значения считать, делайте итеративный алгоритм, а не рекурсивный. Если эти слова тоже для вас новые, то надо браться за учебник, эта задача слишком сложна будет для вас.
    Успехов.
    Ответ написан
    Комментировать
  • Примеры реальных (оперсорсных) проектов на FastAPI?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А в чем проблема на гитхабе поискать-то?
    https://github.com/search?q=fastapi+example&type=r...
    Ответ написан
    2 комментария
  • Как проверить запустилась ли трансляция FFMPEG через Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    UPD: Если вы не можете дождаться завершения дочернего процесса, то не обязательно блокировать программу для получения всего его выхлопа:
    import subprocess
    
    
    if __name__ == '__main__':
        cmd = 'py "(time.sleep(1) or print(i) for i in itertools.count())"'
        cmd = 'ping ya.ru'
        cmd = 'ffmpeg'
    
        with subprocess.Popen([cmd], stdout=subprocess.PIPE, text=True, shell=True) as p:
            for line in p.stdout:
                print(line.strip())

    Так вы можете получать выхлоп построчно или вовсе посимвольно:
    while 1:
        print(p.stdout.read(1), end='')

    Да, это по-прежнему блокирующий вызов, но вы можете читать строки в отдельном треде и по таймауту его закрывать, например.

    UPD2:
    Ну так что, автор, разобрался, или разжевывать надо решение?
    import subprocess
    import threading
    import logging
    import sys
    
    
    log = logging.getLogger(__name__)
    
    
    def check_process_output(process: subprocess.Popen, timeout: float, substring: str):
        def fetch_output():
            try:
                while process.poll() is None:
                    line = p.stdout.readline()
                    log.debug('FETCH: %s', line.strip())
                    data.append(line)
            except ValueError as e:
                pass
    
        data = []
        t = threading.Thread(target=fetch_output)
        t.start()
        log.debug(f'Wait %f s', timeout)
        t.join(timeout)
        result = substring in ''.join(data)
        log.debug('Output is%s contained substring %r', '' if result else ' NOT', substring)
        return result
    
    
    if __name__ == '__main__':
        logging.basicConfig(stream=sys.stderr, level='DEBUG')
        cmd = 'py "(time.sleep(1) or print(i) for i in itertools.count())"'
        cmd = 'ping ya.ru -c 8'
        # cmd = 'ffmpeg'
    
        with (subprocess.Popen([cmd], stdout=subprocess.PIPE, text=True, shell=True) as p):
            print('CHECK RESULT:', check_process_output(p, timeout=5, substring='ya.ru'))


    Можно сделать потомка от Popen, который будет вычитывать в треде свой stdout и на каждую строчку дёргать коллбэк, а также будет валиться по таймауту, если за какое-то время ни один коллбэк не вернул True.
    А можно просто добавить методы readline и read прямо в класс и с таймаутами в аргументах.
    Ответ написан
    4 комментария
  • Как реализовать радио-пищалку в эфир?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ridalit, 50 метров - это очень недалеко, на таком расстоянии лучше локализуется свет в сумерках или в темноте, да и звук в некоторых условиях легче локализовать, чем маломощную FM-пищалку.
    Можно поставить мигающий светодиод и мелкую пьезо-пищалку со встроенным генератором на мелкой батарейке и не надо городить никакую "охоту на лис".
    Вот тут есть схемка простейшего маячка на кварцевом резонаторе
    https://www.youtube.com/watch?v=KlVyjMnR_OI
    А резонаторы можно всякие брать на али: https://aliexpress.ru/popular/100mhz-crystal-oscil...
    Ответ написан
  • Как правильно прописать путь к файлу?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Пути могут быть абсолютные и относительные. В вашем случае указан относительный путь. Относительный путь, если его не присоединять к абсолютному, указывает на файл или каталог относительно текущего пути. В каждом процессе операционной системы есть внутреннее состояние того текущего пути. Если текущий путь н еменять, то он обычно наследуется от родительского процесса, или равен пути, по которому запустили скрипт.
    Указывайте путь либо абсолютно, либо относительно текущего пути в вашем приложении.
    Используйте pathlib - это сейчас самый современный и правильный способ работать с путями.
    Абсолютные пути начинаются со слеша (ну или с указания диска, если речь о винде), а относительные нет.
    Надо учить матчасть и азы прежде чем программировать ботов
    Ответ написан
    Комментировать
  • Как транслировать рабочий стол, выводя это в браузер VNC?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А в чем конкрено проблема? Проведите декомпозицию задачи. Разберитесь сперва как реализовать трансляцию видеопотока вообще, а потом как сформировать видеопоток, как его закодировать кодеком...
    У вас слишком общий вопрос. С такими надо на фриланс идти, а не сюда.
    Ответ написан
    Комментировать
  • Какие могут быть полезные или интересные применения для демо-сайта с ChatGPT?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    - Формировать интересный маршрут для прогулки по городу согласно вектору интересов пользователя. Нейросеть фильтрует POI из картографических сервисов, формирует план прогулки, формулирует интересные факты про локальные интересности. Фильтрация PoI, построение маршрута, создание описания маршрута, TTS с аудиогидом по маршруту.
    - вытаскивание из новостей в новостных лентах информации о топонимах, красивая визуализация происходящего в таймлайне с отображением на карте.
    - Короткая выжимка из типичных статей в Дзене, где о простых вещах запрягают такую телегу, что читать устанешь. Только факты и тезисы.
    - Попытка создать мыслительный процесс. Поток внешней информации обрабатывается отдельными запросами к нейросети для сжатия и выделения самого главного. Самое главное собирается в наборы и отдаётся нейросети для формирования выводов и личных размышлений на счет. предложенного. Результат обрабатывается нейросетью для выделения самого важного и сокращения объёма, а потом подмешивается на вход в следующей итерации.
    Получаем большой контекст, который будет инициализировать уже простые небольшие вопросы к нейросети. Получится эдакий "мыслящий мудрец" с некоторой даже имитацией памяти. Мыслить он будет не шибко быстро, но это и не сильно надо. Для интереса можно визуализировать "мысли", которые приходят в голову этому мудрецу. Эти мысли можно фильтровать отдельными запросами к нейросети для определения их соответствия критериям интересности.
    Таких сжатых контекстов можно держать сразу несколько, резюмировать их по отдельности, сливать результаты, снова резюмировать и отправлять снова на вход тому или иному контексту.
    Ответ написан
    2 комментария
  • Ошибка при запуске exe файла через Python RustClient.exe, как исправить?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А где питоновский код, которым запускается приложение? Стоит тег, значит должен быть код!
    Проблема скорее всего в текущем каталоге. Нужно убедиться, что текущий каталог для запускающего процесса установлен на тот путь, в котором лежит экзешник.
    Ответ написан
  • Какой Ардуино подарить ребенку на 10 лет?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Как вариант - наборы от Алекса Гувера. https://kit.alexgyver.ru
    К тому же на его сайте есть много полезных материалов, а на канале есть, кажется, вдео с обзором готовых наборов и размышлениями по поводу того. что в него имеет смысл включать, а что нет.

    Такой набор удет нужен лишь для затравки, потом придёт понмание что именно нужно добавить и вы будете заказывать с алиэкспресса уже конкретные детали.
    Ответ написан
    Комментировать
  • Как удалить данные из БД по данным из переменной?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    cur.execute("DELETE FROM USER WHERE username=?", get_user)

    Зачем методом тыка пытаться программировать? Надо изучать SQL и БД
    Ответ написан
    1 комментарий
  • Как уменьшить ток светодиодной матрицы?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если не жалко превратить энергию в тепло, то поставить последовательно ограничивающий резистор помощнее, но номинал подобрать по закону ома. 5 ватт. - это будет прилично так греться.

    Можно поискать резистор в цепи обратной связи блока питания и заменить его номинал, чтобы изменить выходной ток, но тут моих экстрасенсорных способностей не хватит, чтобы угадать как о у вас там устроен ваш БП
    Ответ написан
  • Существует ли Progress Bar для python, который легко считывать сторонними скриптами?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Не надо парсить прогресс-бар, то что вам нужно делается иначе.
    Во-первых, питоновский скрипт по атрибутам объекта sys.stdout может судить куда направлен выхлоп. Вариантов, по сути, два: файл или пайп, либо в терминал.
    Обычно если stdout является терминалом, то в него шлют по умолчанию красивый отформатированный выхлоп с цветами, псевдографикой, эмоджи и свистелками вроде симпатичных прогресс-баров с переписыванием текста поверх старых строк.
    Если это не TTY, то выдаём упрощенно оформленый вывод.
    Благодаря тому, что у нас символы и разные, можно делать в конце строки с прогрессбаром только возврат каретки без перевода строки, тогда следующая рисуется поверх предыдущей и создаёт эффект прогрессбара. Если этот же выхлоп ещё и идёт в пайп или файл, то там все состояния прогрессбара будут растянуты по отдельным строкам.

    Для облегчения работы с такими утилитами можно сделать им специальный ключ или параметр командной строки, который включит специальный режим выхлопа, предназначенный для простого парсинга результата. Например в таком особом режиме утилита может выдавать указанные динамические параметры в виде csv-строк с разделителями. Тогда GUI их сможет тривиально парсить прямо в потоке.

    Резюмирую. Используйте любую библиотеку для рисования прогрессбара. Большинство из них умеют делать нужный регресс при обнаружении пайпа на stdout. Но если она и не умеет, то вы можете это реализовать самостоятельно, просто добавив ключ и\или проверку на TTY.
    Ответ написан
  • Почему бот в телеграмме не реагирует на код?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если это весь код вашего бота, то ничего удивительного. Вы только сконфигурировали его, но не добавили вызов метода, который будет "слушать" порт и запускать ваш обработчик.
    Ещё вы допустили только что слив секретного ключа вашего бот. Так делать нельзя. Нужно хранить ключ в отдельном секретном файле и импортировать или загружать его, не допускать добавления секретного файла в репозиторий.
    Ещё можно было бы сравнивать текст без учета регистра, чтобы "привет" и "Привет" были одной и той же командой.
    Вам также не помешает логирование в коде, чтобы понимать до куда доходит обработчик и что происходит в коде, какие сообщения приходят на самом деле, и всё такое.
    Ответ написан
    Комментировать