From e172ed6e432ea36bf56bf7de6f4c6a72af7ae682 Mon Sep 17 00:00:00 2001 From: austnv Date: Sun, 21 Jun 2026 21:41:47 +0300 Subject: [PATCH] fix: clean host name --- routers/hosts.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/routers/hosts.py b/routers/hosts.py index fc471c4..a3ca580 100644 --- a/routers/hosts.py +++ b/routers/hosts.py @@ -3,19 +3,42 @@ import logging from os import getenv from remnawave import RemnawaveSDK from remnawave.models.hosts import GetAllHostsResponseDto +import re + logging.basicConfig(level=logging.INFO) router = APIRouter(prefix='/api/v1', tags=['hosts']) remnawave = RemnawaveSDK(base_url='http://remnawave:3000', token=getenv('REMNAWAVE_API_TOKEN')) + +def clean_host_name(name): + """ + Очищает имя хоста от флагов и лишних символов. + Пример: '🇷🇺Russia Speed 🚀' -> 'Russia Speed' + """ + # Удаляем все флаги (региональные индикаторы) + flag_pattern = re.compile(r'[\U0001F1E6-\U0001F1FF]{2}') + cleaned = flag_pattern.sub('', name) + + # Удаляем другие эмодзи (опционально) + emoji_pattern = re.compile( + "[\U0001F300-\U0001F9FF\U00002600-\U000027BF\U0001F000-\U0001F02F\U0001F0A0-\U0001F0FF]+", + flags=re.UNICODE + ) + cleaned = emoji_pattern.sub('', cleaned) + + # Убираем лишние пробелы + return cleaned.strip() + + @router.get('/hosts') async def get_nodes(): hosts: GetAllHostsResponseDto = await remnawave.hosts.get_all_hosts() return [ { - 'name': host.remark, + 'name': clean_host_name(host.remark), 'address': host.address, 'port': host.port }