1. Что вообще должен делать код?
2. Ну можно попробовать использовать defaultdict() вместо обычного словаря, но не факт что поможет.
3. Погоняй отдельные куски кода через timeit, поищи узкие места.
Вот здесь твоя ошибка. Это всё равно что учиться водить автомобиль на болиде формулы 1.
Начинай с малого. Проштудируй "Изучаем Питон" Лутца, порешай простенькие задачки. Почитай официальную документацию по стандартной библиотеке. Наизусть учить не требуется, но нужно чтобы был рефлекс "ага, вроде что-то такое питон уже умеет, можно не изобретать велосипед".
Потом освойся с более сложными вещами вроде асинхронного программирования, работы с HTTP ресурсами (как синхронной, так и асинхронной).
И вот тогда у тебя будет достаточно знаний, чтобы не спотыкаться на элементарных вещах.
Сразу начинать с живого проекта = получить несистематизированную кашу в голове.
Я начинал с написания IRC бота (но у меня уже было какое-никакое понимание программирования на других императивных языках), так на код без слёз не взглянешь, и многие вещи потом приходилось доучивать отдельно. Не нужно повторять эту ошибку.
JRBRO, ну разве что описание алгоритмов background subtraction, вроде метода смеси гауссиан (Gaussian Mixture Model). Конкретную ссылку привести затрудняюсь.
Но идея-то на поверхности лежит. Алгоритм статистически определяет "допустимый" диапазон вариаций значений пикселей в области, и отмечает как движение всё, что не укладывается в этот диапазон. Нет изменений пикселей - нет движения. Обратите внимание на белые машины на вашем примере - они фиксируются как движущиеся в начале и в конце, там, где меняется яркость пикселей. А сама белая крыша не меняется, и движение на ней не фиксируется.
Конечно, можно пойти по другому пути - проверять перекрытие областей движения с игнорируемой областью и игнорировать те, которые с ней пересекаются. ЕМНИП, алгоритмы background subtraction дают на выходе пиксельную маску, а не набор ограничивающих рамок (bounding box), так что это будет не так уж сложно. Но по мне так проще обработать исходный кадр.
И да, формирование маски - я имел ввиду вручную, один раз нарисовать изображение, где белым отмечена анализируемая часть кадра, а чёрным - игнорируемая. А потом модифицировать кадр согласно этой маске.
Выучить Питон и сделать.
В чём конкретно затруднение? Где результат твоих попыток?
Я фз, что за "пример ввода" у тебя, так как задача не требует ввода, но этот пример как раз подсказывает, какие классы и методы нужно использовать для решения.
Ну для начала, у тебя в шебанг-строке прописан /bin/bash, а утилита почему-то запускает скрипт через /bin/sh. Стоит проверить, корректно ли отрабатывает твой скрипт, если его запустить через /bin/sh.
Также стоит проверить права доступа. Есть ли у пользователя, из под которого работает утилита, права на доступ к /home/ban.sh и /home/ban.py?
Т.е. ты хочешь, чтобы твой клиент не давал залогиниться пользователям, которых ты решишь забанить?
Спасибо, посмеялся. Зачем пользоваться левым клиентом, в котором есть дополнительная причина для отказа, если есть официальный?
Почитать history - дело несложное, но ведь для этого потребуется подключиться к дискорду (с какой учеткой?) и зайти на твой сервер.
2. Ну можно попробовать использовать defaultdict() вместо обычного словаря, но не факт что поможет.
3. Погоняй отдельные куски кода через timeit, поищи узкие места.