This commit is contained in:
2025-12-14 18:48:06 +03:00
parent ccec507033
commit 1a51349eed
17 changed files with 1081 additions and 134 deletions
Binary file not shown.
Binary file not shown.
+3
View File
@@ -34,6 +34,9 @@ def saveImage(file_bytes: bytes, file_name: str) -> bool:
logger.debug(f"[ImageSave] Saving image to {target_path}")
img.save(target_path, "PNG")
if not os.path.isfile(target_path):
logger.error(f"[ImageSave] File {target_path} not found")
return False
return True
except Exception as e:
+55 -21
View File
@@ -1,39 +1,73 @@
import re
import time
from .loggers import logger
# Простая транслитерация
TRANSLIT_MAP = {
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd',
'е': 'e', 'ё': 'yo', 'ж': 'zh', 'з': 'z', 'и': 'i',
'й': 'y', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n',
'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't',
'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch',
'ш': 'sh', 'щ': 'sch', 'ъ': '', 'ы': 'y', 'ь': '',
'э': 'e', 'ю': 'yu', 'я': 'ya'
"а": "a",
"б": "b",
"в": "v",
"г": "g",
"д": "d",
"е": "e",
"ё": "yo",
"ж": "zh",
"з": "z",
"и": "i",
"й": "y",
"к": "k",
"л": "l",
"м": "m",
"н": "n",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"т": "t",
"у": "u",
"ф": "f",
"х": "h",
"ц": "c",
"ч": "ch",
"ш": "sh",
"щ": "sch",
"ъ": "",
"ы": "y",
"ь": "",
"э": "e",
"ю": "yu",
"я": "ya",
}
# Заглавные буквы → в ту же латиницу, но без capital (ниже мы в lower() всё равно переводим)
TRANSLIT_MAP.update({k.upper(): v for k, v in TRANSLIT_MAP.items()})
def transliterate(text: str) -> str:
return ''.join(TRANSLIT_MAP.get(ch, ch) for ch in text)
return "".join(TRANSLIT_MAP.get(ch, ch) for ch in text)
def safeFilename(name: str) -> str:
# 1. Транслитерация кириллицы
name = transliterate(name)
try:
# 1. Транслитерация кириллицы
name = transliterate(name)
# 2. Приводим к нижнему регистру
name = name.lower()
# 2. Приводим к нижнему регистру
name = name.lower()
# 3. Заменяем всё, что не буква/цифра, на "_"
name = re.sub(r'[^a-z0-9]+', '_', name)
# 3. Заменяем всё, что не буква/цифра, на "_"
name = re.sub(r"[^a-z0-9]+", "_", name)
# 4. Убираем повторяющиеся "_"
name = re.sub(r'_+', '_', name).strip('_')
# 4. Убираем повторяющиеся "_"
name = re.sub(r"_+", "_", name).strip("_")
# 5. Ограничиваем длину
name = name[:80] or "file"
# 5. Ограничиваем длину
name = name[:80] or "file"
# 6. Добавляем таймштамп
timestamp = int(time.time() * 1000) # миллисекунды
return f"{name}_{timestamp}"
# 6. Добавляем таймштамп
timestamp = int(time.time() * 1000) # миллисекунды
return f"{name}_{timestamp}"
except Exception as e:
logger.error(f"Ошибка создания названия файла: {str(e)}")
return "file"