This commit is contained in:
2026-04-17 16:35:46 +03:00
parent 0f2fe50eab
commit 56f04804cc
3 changed files with 28 additions and 9 deletions

2
Cargo.lock generated
View File

@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]] [[package]]
name = "ae_anons" name = "ae_anons"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"askama", "askama",

View File

@@ -12,13 +12,17 @@
Автоматизированная система для создания спортивных анонсов с использованием шаблонов After Effects через Nexrender, с данными из электронных таблиц Synology Office. Автоматизированная система для создания спортивных анонсов с использованием шаблонов After Effects через Nexrender, с данными из электронных таблиц Synology Office.
## Новое в версии 0.2.2 ## Новое в версии 0.2.3
- **Веб-интерфейс**: Удобное управление заданиями через браузер - Веб-интерфейс с настраиваемым портом (WEB_PORT)
- **Мониторинг в реальном времени**: Отслеживание статуса всех заданий - Тёмная/светлая тема с автоопределением ОС
- **Управление очередью**: Остановка, очистка и генерация заданий из веб-интерфейса - Сортировка по всем колонкам
- **Тёмная/светлая тема**: Автоматическое определение системной темы - Фильтрация по имени файла/UID
- **Сортировка и фильтрация**: Удобная работа с большим количеством заданий - Остановка всех активных заданий
- Автообновление каждые 60 секунд
- Улучшенное debug-логирование
- Исправлена обработка UNC/SMB путей
- Нормализация множественных пробелов в именах файлов"
## Обзор ## Обзор
@@ -602,7 +606,14 @@ ae_anons/
## История изменений ## История изменений
### v0.2.2 (текущая) ### v0.2.3 (текущая)
- Веб-интерфейс с настраиваемым портом (WEB_PORT)
- Улучшенное debug-логирование
- Исправлена обработка UNC/SMB путей
- Нормализация множественных пробелов в именах файлов"
### v0.2.2
- Исправлено отображение имён выходных файлов в веб-интерфейсе - Исправлено отображение имён выходных файлов в веб-интерфейсе

View File

@@ -1,5 +1,6 @@
#![allow(dead_code)] #![allow(dead_code)]
use chrono::{Datelike, NaiveDate}; use chrono::{Datelike, NaiveDate};
use regex::Regex;
use serde::Serialize; use serde::Serialize;
use serde_json::json; use serde_json::json;
use std::collections::HashMap; use std::collections::HashMap;
@@ -263,10 +264,17 @@ impl JobData {
fn_parts.push(channel.clone()); fn_parts.push(channel.clone());
} }
let outfile_name = transliterate(&fn_parts.join("_"), true) let mut outfile_name = transliterate(&fn_parts.join("_"), true)
.replace(' ', "-") .replace(' ', "-")
.replace('\'', ""); .replace('\'', "");
// Если 3 и более дефисов подряд -> заменяем на один
let re = Regex::new(r"-{3,}").unwrap();
outfile_name = re.replace_all(&outfile_name, "-").to_string();
// Убираем дефисы в начале и конце
outfile_name = outfile_name.trim_matches('-').to_string();
Some(Self { Some(Self {
date: data_str, date: data_str,
time: time.clone(), time: time.clone(),