import re
import time

# Простая транслитерация
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'
}

# Заглавные буквы → в ту же латиницу, но без 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)

def safeFilename(name: str) -> str:
    # 1. Транслитерация кириллицы
    name = transliterate(name)

    # 2. Приводим к нижнему регистру
    name = name.lower()

    # 3. Заменяем всё, что не буква/цифра, на "_"
    name = re.sub(r'[^a-z0-9]+', '_', name)

    # 4. Убираем повторяющиеся "_"
    name = re.sub(r'_+', '_', name).strip('_')

    # 5. Ограничиваем длину
    name = name[:80] or "file"

    # 6. Добавляем таймштамп
    timestamp = int(time.time() * 1000)  # миллисекунды
    return f"{name}_{timestamp}"