• Как из jpg сделать epub-fb2?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Простым способом никак. Нужно сперва распознать текст на картинках - это называется OCR.
    Есть онлайн сервисы, которые это делают, можно это делать с помощью finereader'а.
    Далее нужно отформатировать и откорректировать неверно распознанные фрагменты текста, убрать лишние пробелы, поправить абзацы.
    Редакторов для fb2 навалом. Вот, например, опенсорсный.
    Было бы сильно проще, если бы вы показали пример типичного вашего jpg с текстом. Как там отформатированы абзацы, встречаются ли иллюстрации, есть ли переносы слов, что за шрифт и ровные ли строки, какой фон и есть ли шум. Всё это будет влиять на распознавание, и какие-то мелкие операции для приведения готового текста в норму.
    Ответ написан
  • Почему не сохраняется проект в PyCharm?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если файлы не менялись, то они и не будут перезаписываться. И у каталога не поменяется дата, если набор файлов в нём не изменился. А в .idea сохраняются настройки и кэш pycharm'а, которые относятся к вашему проекту.
    При нормально работе в IDE ничего сохранять не нужно. оно само сохраняется.
    А вот что нужно - это пользоваться системой контроля версий. Например GIT
    Ответ написан
    Комментировать
  • Можно ли как-то огранчить opencv по поиску объектов на изображении?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Да просто обрежьте картинку перед тем как отдать opencv и все.

    Дополню.
    Конечно обрезать надо не вручную, а той же самой opencv.
    Ок, таблица может быть где угодно, но внешняя рамка-то всегда на своем месте?
    Вообще не очень ясно что там у вас за PDF-ки. Если такие как в примере ровненькие и с одинаковыми полями, да рамочкой по ГОСТу, то просто кропайте картинку по этой рамке и все.
    Если поля плавают по размерам, то придётся искать границы и кропать по ним.
    Самое неудобное - это когда у вас сканы или фото документов, и они чуть под разными углами и искажены. Но в целом задача хоть и усложняется, но остается прежней.
    Можно найти вертикальные линии и взять самую длинную из самых левых - это левая граница рамки. С остальными так же.
    Обрезайте рамку полностью с небольшим запасом, потом ищите координаты таблицы, пересчитываете их в координаты на необрезанной картинке, добавляете с нужной стороны (в зависимости от того, с какой стороны у вас нашлась таблица) и снова вырезаете из оригинального изображения.

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Положите все даты в список, отсортируйте его.
    Сделайте цикл по элементам этого списка. В каждой итерации делайте ожидание текущей даты, а потом печать. И так дальше по списку.
    Ожидание можно сделать с помощью time.sleep. Нужно вычислить период между текущей датой-временем и очередной, выразить этот период в секундах.
    Ответ написан
    Комментировать
  • Можно ли увидеть код бота если есть его уникальный ключ?

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вот такой вот можно использовать. Тоже светодиод и фотодиод инфракрасные. Светит модулировнным сигналом, и, как только "видит" свой сигнал (отраженный от чего-то вроде руки) своим фотодиодом, реагирует.
    Ответ написан
    Комментировать
  • Как вытащить нужные данные из файла?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Можно реплейсить первый символ на "{", а последний на "}" (если там были не квадратные скобки, то валимся с ошибкой). Ну и предпоследний символ если запятая, то его удаляем.
    Ну и кавычку добавить придётся вторым символом.
    Если от валидного json ваш текст отличают только эти нюансы, то предложенного выше будет достаточно, потом просто парсим как json.

    Ещё можно без модификаций этот текст загрузить как yaml стандартной библиотекой.
    При этом вы получите список из трёх элементов:
    1) строка 'created_at":"2022-08-11T14:01:46.886Z"'
    2) Словарь с одним элементом: {'city': 'Lawton'}
    3) Словарь с одним элементом: {'country': 'US'}
    Ну а что с этим потом делать - уже разберетесь.
    Yaml гораздо больше вольностей в своём формате допускает.
    Ответ написан
    5 комментариев
  • Как работать с БД из другого класса?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Из приведённого кода не понятно для чего вообще выделен класс Sql.
    Фактически вы используете только один метод этого класса, а содержимое конструктора можно разместить в том же методе.
    Бессмысленно и беспощадно.
    Самое правильное - это делать всё как можно проще.
    Вот два очень полезных принципа в разработке:
    - https://ru.wikipedia.org/wiki/KISS_(принцип)
    - https://ru.wikipedia.org/wiki/Бритва_Оккама

    В приведённом вами куске кода не нужен класс sql, достаточно сделать всё внутри одной функции, ведь вы не используете созданный обьект больше никак.
    Другой вопрос, если вам нужно делать много запросов в рамках одного подключения к БД. На подключение тратяся некоторые накладные расходы по времени и трафику, иногда логично вынести подключение и хранить его в выделенном персистентном состоянии, которое будет создано один раз и переиспольовано для множества запросов. В этом случае закрывать коннект после запроса нельзя.
    Прочитайте вот: https://pavel-karateev.gitbook.io/intermediate-pyt...
    Обычно коннект к БД уже является менеджером контекста. Для чего вы делаете вот эту бессмысленную обёртку вокруг - не ясно.
    В соответствии с хоошим стилем прогаммирования нужно, чтобы действие любой функции можно было охарактеризовать простой короткой фразой без союзов, без "и" и "или", без "если".
    Иначе эту функцию стоило бы разбить на более мелкие и простые функции.
    Вот ознакомьтесь с концепцией чистой функции: https://dvmn.org/encyclopedia/clean_code/decomposi...
    Ответ написан
    2 комментария
  • Как расшифровать Exit code?

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Начать нужно с того. что никогда не стрелять себе в ногу вот таким вот способом:
    try:
        object_list = Questions.objects.filter(Q(q_name__icontains=q))
    except Exception:
        print('Ошибочка')

    Это хороший способ замести поблему под коврик, а потом искать её спрашивая всех вокруг.
    Это равносильно тому, чтобы закрыть глаза и бежать. а потом удивляться и спрашивать откуда шишка на лбу.

    Подключите логирование, вынесите в фонфиге в отдельный лог-файл все debug-логи этого модуля и вообще все ошибки. Прологируйте детально все этапы с указанием количества найденных элементов, в общем всё, по порядку, что может пойти не так.
    Откройте лог-файл командой tail -F my_log_file.log в терминале, и вы будете в реальном времени видеть всё, причем гораздо лучше, чем напечатанное принтом.
    Вы можете убрать временно вообще все условия в фильтрации для поиска и проверить работает ли вывод и корректно ли сработает шаблон. А мы тут как заглянем в вашу БД? Может она пустая или вы коннектитесь не туда.
    Ответ написан
  • Как задать логирование через дописывание .log в vscode?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Комментировать
  • Как найти Vector2 позицию за объектом?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Так а в чем проблема-то? Это ж школьная программа?
    Точка А у вас есть, точка B тоже. Берёте вектор AB - это вектор B минус вектор A.
    Нормируете его до единичного. Для этого нужно вектор AB разделить на модуль (длину) этого вектора. AB/|AB| - это вектор направления на точку, над которой надо поставить камеру.
    Осталось этот единичный веткор умножить на необходимое вам расстояние. В вашем случае это 5: AB/|AB|*5
    Также моэно вычслить и положение камеры. Допустим камера в точке X и ее координат мы не знаем, но знаем высоту камеры, а значит и вектор CX = (0,0,4), если высоту камеры мы решили взять равной 4.
    Итого: X=B+AB/|AB|*5+CX
    где:
    X - искомый вектор координат камеры;
    B - вектор координат точки B;
    A - вектор координат точки A;
    AB = B-A -- вектор, равный разности векторов B и A;
    |AB| -- длина вектора AB, то есть его модуль;
    CX - вектор, указывающий на камеру относительно точки C, например (0,0,4);

    Можно сразу все вектора сделать трехмерными и делать все вычисления в них.

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Судя по постановке вопроса и вашей собственной оценке вашей же подготовки в прогрммировании: вам еще рано решать такие задачи. Просто нет необходимого уровня понимания, и это одной статьёй не решить. Разве что если б кто-то расписал в подробных деталях как сделать именно то, что вам нужно, но запрограммировать это проще, чем описывать в необходимых вам подробностях.
    А так получается у вас нет конкретного вопроса, на который можно было бы конкретно ответить.

    В это йситуации вам никак не уложиться в дедлайн, если вы настаиваете на смостоятельном написании этой функциональности.

    Вам стоит либо обратиться к фрилансеру, либо купить готовое решение из тех что уже есть на рынке, например, https://replain.cc/ru
    Ответ написан
    Комментировать
  • Как устранить ошибку: "can only concatenate str (not "int") to str: Django?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    У вас, очевидно, selected_choice.votes - это строка, а вы пытаетесь применть оператор += с елым числом. Об этом вам и выдаётся ошибка. Нельзя к строке прибавить число.

    Пожалуйста, впредь приводите полный код. В частности не хватает описания модели Choice.
    А ещё нужно приводить целиком стек-трейс, чтобы не заставлять отвечающих читать ваш код целиком выискивая глазами причину ошибки.

    В модели нужно votes сделать целочисленным,если вы хотите прибавлять к этому полю числа. Иногда тип поля меняют, но необходимые миграции не накатыают на БД и при десериализации инстанса модели у этого инстанса атрибут, обозначенный в модели как целочисленный. может оказаться строковым, как по-прежнему указано в схеме БД.

    Делайте миграции или меняйте схему вручную для приведения в соответствие с моделью.
    Ответ написан
    1 комментарий
  • Всё, что нужно знать о разработке собственной игры и где найти команду?

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

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

    Самое мудрое - не писать снуля, а обратиться в студию, которая делает такого рода вещи на заказ. Ну а на сколько там договоритесь - это уже надо конкретно общаться.
    Ответ написан
    1 комментарий
  • Как сделать бот в Телеграм без приставки bot на конце?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Есть Telegram bot API - это для ботов. А есть Telegram client API - это для приложений, вполняющих функции клиентской стороны. То есть если вы задумаете написать свой клиент для телеграмма, то будете пользоваться этим API. Некоторые злоупотребляют правилами и делают ботов с использованием этого API, чтобы боты ритворялись реальными аккаунтами. За это, по идее, должны банить.
    Не надо делать таких ботов. Для чего вам?
    Ответ написан
    1 комментарий
  • Как предотвратить деформацию картинок в ролике?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Самый простой вариант - подготовить картинки заранее обрезав и качественно смасштабировав их под нужный формат кадра.
    Можно воспользоваться вот этой распространенной утилитой https://imagemagick.org
    Или любой аналогичной для командной строки.
    Фактически вам нужен ресайз под конкретный размер по вертикали. а затем кроп под конкретную ширину, однако так у вас может отрезаться часть значимого сюжета.
    Можно слишком широкие картинки (типа 16:9) снабдить предварительно сверху и снизу небольшими полями, чтобы по бокам отрезалось меньше.
    Получить рамеры картинки поможет утилита exiftool.
    Ещё цвет полей картинки можно выбрать близким к фону каринки на краях. Для этого можно сильно размыть картинку по гауссу и взять несколько проб цвета из верхней чсти изображения и из нижней. Усреднить и получится цвет полей, которые не будут сильно бросаться в глаза. Ещё можно размыть верх и низ картинки по маске и смешать с фоном.
    Для всего этого лучше, конечно, не на баше скрипт писать, а на питоне с использованием библиотеки PIL (pillow).
    Ответ написан
    Комментировать
  • Почему так популярны телеграм боты?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ботов писать относительно просто, порог вхождения минимальный по сравнению с программированием под iOS и андроид, да и проще написания десктопных приложений с GUI, а в использовании боты проще, чем утилиты командной строки.
    Зато в результате может получиться довольно функцинальная штука. Легко настроить многоэтапную диалоговую коммуникацию с пользователем, получить для обработки изображения и фото, возвращать ссылки на скачивание результатов.

    Так вооот! Из-за этого невысокого порога вхождения развелось куча "курсов" программирования для чайников, которые первым упражнением, полезность которого удается легко показать ученикам, выбирают написание бота.
    И так у этих коуч-питонистов легко всё получается (ещё бы, надо де продать курс с первого бесплатного занятия), что у незадачливых школьников появляется неиллюзорная вера в себя и они бегут повторять увиденное на ютубе, а потом, когда, конечно же, то-то идёт не так как показано в видосе, они бегут сюда спрашивать как всё надо сделать, чтобы работало.

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вот здесь есть подборочка геокодеров: https://gisgeography.com/geocoders/
    А так берите любой, который вам по бесплатным лимитам подходит, если подходит.
    Ответ написан
    1 комментарий
  • Как эффективнее работать с файлом, к которому нужен постоянный доступ?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Что вы подразумеваете под "безболезненно работать"? Правильно открытый на запись файл не мешает читать из него. Или что там у вас пользоватль собирается делать с файлом?
    Ответ написан
    3 комментария