1. glob.glob() чтобы выбрать папки по шаблону.
2. Немного str.split() и datetime.datetime.strptime() для извлечения даты. Превращаешь дату в unix timestamp (целое число). Заворачиваешь это всё в функцию вида def keyfunc(folder: str) -> int:
3. max() с именованным параметром key.
4. PROFIT
Гугли autorun.inf и находи портативную версию питона.
Но учитывая, что это поведение отключается, и учитывая, что этим поведением активно пользуются вирусы... В общем, не рассчитывай на 100% срабатывания.
multiprocessing. Но имей ввиду, что это поможет только на многоядреной машине, и то условно. Нужно произвести замеры, как часто ты делаешь скриншоты, и как долго происходит их обработка. Если обработка длится в 2-3 раза дольше чем поступление новых скриншотов, то можно выкрутиться. Если нет, то нужно оптимизировать обработку.
def callback_inline(call):
У функции нет ни параметра message, ни локальной переменной message. А дальше у тебя идёт обращение к такой переменной по имени message - message.chat.id.
Сделай столько скриншотов, чтобы был полный набор цифр. Вытащи каждую цифру отдельно (если можешь определить их позицию), потом просто пробуй вычитать из изображения неизвестной цифры эталонный образец каждой цифры. Где разница ближе всего к 0, там и правильный ответ.
Есть ещё извращённый способ - использовать WinAPI, чтобы найти в окне приложения тот элемент управления, на котором рендерится сообщение о завершении работы, и периодически опрашивать его текст.
Смотри функции API EnumWindows(), EnumChildWindows() и GetWindowText().
Чтобы вызывать API функции из скрипта на питоне - стандартный модуль ctypes в помощь.
Максимум что тут можно сделать - пройтись алгоритмом connected component и отсеять все компоненты, у которых слишком маленькая площадь. Но и это повредит текст, например, удалит точки на i.
Сделать отдельную функцию, чтобы у каждой был свой декоратор. Общую часть можно вынести в третью функцию, без декоратора, и вызывать её самостоятельно.
Запускать питон код на твоём сервере? Напиши маленький сервис на flask или django, и обращайся к нему с помощью JS на веб-странице. Разумеется, коду будет доступен только сервер, на котором он исполняется, а не машина пользователя.
А чтобы запустить питон код на машине пользователя, тебе придётся уговорить пользователя его скачать, поставить питон, поставить нужные пакеты, а потом запустить.
Этот оператор может быть перегружен, а потому имеет разную семантику для разных типов данных.
Для множеств этот оператор возвращает их пересечение.
Ты можешь добавить поддержку этого оператора в свой класс, объявив магический метод __and__().
Составь новый список, в котором каждый элемент - это частное* двух соседних элементов исходного списка.
Если в новом списке будет несколько одинаковых** элементов подряд, то в исходном списке соответствующие элементы формируют геометрическую прогрессию.
*Не забываем про деление на ноль! Может потребоваться отдельная проверка.
**Не забывай про ограниченную точность чисел с плавающей точкой. Сравнивать такие числа лучше не как обычно, a == b, а с помощью конструкции вида abs(a - b) <= E, где ты задаёшь в E желаемую точность (например, 0.000001).