1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- """
- Обшие дополнительные вспомогательные функции, для работы плагинов.
- - Прсер временнйо метки.
- - Функция для очистки текста от мусора.
- - Резделение чисел по разряду.
- - Генератор числового кода.
- - Конвентер систем счисления.
- Author: Milinuri Nirvalen
- Ver: 1.4 (8)
- """
- from random import randrange
- import re
- # Парсер дельты времени
- # =====================
- TIME_PATTERN = re.compile(r"(?P<value>\d{1,2})\s?(?P<modifier>[wdh]|mi|mo|[ндч]|ми|ме)")
- TIME_MODIFIERS = {
- "mo": 3600*24*30,
- "ме": 3600*24*30,
- "w": 3600*24*7,
- "н": 3600*24*7,
- "d": 3600 * 24,
- "д": 3600 * 24,
- "h": 3600,
- "ч": 3600,
- "mi": 60,
- "ми": 60,
- }
- def parse_timedelta(args: str) -> int:
- res = 0
- for x in TIME_PATTERN.finditer(args):
- value, modifier = x.groups()
- res += int(value) * TIME_MODIFIERS[modifier]
- return res
- # Прочие вспомогательные функции
- # ==============================
- def clear_text(raw_text: str) -> str:
- """Очищает текст.
- Нижний регистр без повтора символов.
- Полезно для неточного сравнения."""
- text = ""
- ls = None
- for x in raw_text.lower():
- if x != ls:
- text += x
- ls = x
- return text
- def sp(x: str | int) -> str:
- """Разделяет число по разрядам."""
- return f'{int(x) if isinstance(x, str) else x:,}'.replace(',', '.')
- def gen_code(lenght: int) -> int:
- """генерирует числовой код заданной длинны.
- Args:
- lenght (int): Длинна кодовой строки
- Returns:
- int: Кодовое число.
- """
- code = 0
- for x in range(lenght+1):
- code += randrange(9) * (10 ** x)
- return code
- # TODO: Переработать функицю для многих систем счисления
- def binToNum(num: str) -> int:
- """Переводит двоичное число в десятичное."""
- res = 0
- for i, x in enumerate(num[::-1]):
- if not x.isdigit():
- continue
- res += int(x)*2**i
- return res
|