Refactor capture engine architecture, rename PictureStream to PictureSource, and split API modules
- Separate CaptureEngine into stateless factory + stateful CaptureStream session - Add LiveStream/LiveStreamManager for shared capture with reference counting - Rename PictureStream to PictureSource across storage, API, and UI - Remove legacy migration logic and unused compatibility code - Split monolithic routes.py (1935 lines) into 5 focused route modules - Split schemas.py (480 lines) into 7 schema modules with re-exports - Extract dependency injection into dedicated dependencies.py Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -199,19 +199,19 @@
|
||||
"confirm.no": "Нет",
|
||||
"common.delete": "Удалить",
|
||||
"common.edit": "Редактировать",
|
||||
"streams.title": "\uD83D\uDCFA Потоки",
|
||||
"streams.description": "Потоки определяют конвейер захвата. Сырой поток захватывает экран с помощью шаблона захвата. Обработанный поток применяет постобработку к другому потоку. Назначайте потоки устройствам.",
|
||||
"streams.title": "\uD83D\uDCFA Источники",
|
||||
"streams.description": "Источники определяют конвейер захвата. Сырой источник захватывает экран с помощью шаблона захвата. Обработанный источник применяет постобработку к другому источнику. Назначайте источники устройствам.",
|
||||
"streams.group.raw": "Захват Экрана",
|
||||
"streams.group.processed": "Обработанные",
|
||||
"streams.section.streams": "\uD83D\uDCFA Потоки",
|
||||
"streams.add": "Добавить Поток",
|
||||
"streams.section.streams": "\uD83D\uDCFA Источники",
|
||||
"streams.add": "Добавить Источник",
|
||||
"streams.add.raw": "Добавить Захват Экрана",
|
||||
"streams.add.processed": "Добавить Обработанный",
|
||||
"streams.edit": "Редактировать Поток",
|
||||
"streams.edit": "Редактировать Источник",
|
||||
"streams.edit.raw": "Редактировать Захват Экрана",
|
||||
"streams.edit.processed": "Редактировать Обработанный Поток",
|
||||
"streams.name": "Имя Потока:",
|
||||
"streams.name.placeholder": "Мой Поток",
|
||||
"streams.edit.processed": "Редактировать Обработанный Источник",
|
||||
"streams.name": "Имя Источника:",
|
||||
"streams.name.placeholder": "Мой Источник",
|
||||
"streams.type": "Тип:",
|
||||
"streams.type.raw": "Захват экрана",
|
||||
"streams.type.processed": "Обработанный",
|
||||
@@ -221,26 +221,26 @@
|
||||
"streams.capture_template.hint": "Шаблон движка, определяющий способ захвата экрана",
|
||||
"streams.target_fps": "Целевой FPS:",
|
||||
"streams.target_fps.hint": "Целевое количество кадров в секунду (10-90)",
|
||||
"streams.source": "Исходный Поток:",
|
||||
"streams.source.hint": "Поток, к которому применяются фильтры обработки",
|
||||
"streams.source": "Источник:",
|
||||
"streams.source.hint": "Источник, к которому применяются фильтры обработки",
|
||||
"streams.pp_template": "Шаблон Фильтра:",
|
||||
"streams.pp_template.hint": "Шаблон фильтра для применения к исходному потоку",
|
||||
"streams.pp_template.hint": "Шаблон фильтра для применения к источнику",
|
||||
"streams.description_label": "Описание (необязательно):",
|
||||
"streams.description_placeholder": "Опишите этот поток...",
|
||||
"streams.created": "Поток успешно создан",
|
||||
"streams.updated": "Поток успешно обновлён",
|
||||
"streams.deleted": "Поток успешно удалён",
|
||||
"streams.delete.confirm": "Вы уверены, что хотите удалить этот поток?",
|
||||
"streams.error.load": "Не удалось загрузить потоки",
|
||||
"streams.description_placeholder": "Опишите этот источник...",
|
||||
"streams.created": "Источник успешно создан",
|
||||
"streams.updated": "Источник успешно обновлён",
|
||||
"streams.deleted": "Источник успешно удалён",
|
||||
"streams.delete.confirm": "Вы уверены, что хотите удалить этот источник?",
|
||||
"streams.error.load": "Не удалось загрузить источники",
|
||||
"streams.error.required": "Пожалуйста, заполните все обязательные поля",
|
||||
"streams.error.delete": "Не удалось удалить поток",
|
||||
"streams.test.title": "Тест Потока",
|
||||
"streams.error.delete": "Не удалось удалить источник",
|
||||
"streams.test.title": "Тест Источника",
|
||||
"streams.test.run": "🧪 Запустить",
|
||||
"streams.test.running": "Тестирование потока...",
|
||||
"streams.test.running": "Тестирование источника...",
|
||||
"streams.test.duration": "Длительность Захвата (с):",
|
||||
"streams.test.error.failed": "Тест потока не удался",
|
||||
"streams.test.error.failed": "Тест источника не удался",
|
||||
"postprocessing.title": "\uD83D\uDCC4 Шаблоны Фильтров",
|
||||
"postprocessing.description": "Шаблоны обработки определяют фильтры изображений и цветокоррекцию. Назначайте их обработанным видеопотокам для единообразной постобработки на всех устройствах.",
|
||||
"postprocessing.description": "Шаблоны обработки определяют фильтры изображений и цветокоррекцию. Назначайте их обработанным источникам для единообразной постобработки на всех устройствах.",
|
||||
"postprocessing.add": "Добавить Шаблон Фильтра",
|
||||
"postprocessing.edit": "Редактировать Шаблон Фильтра",
|
||||
"postprocessing.name": "Имя Шаблона:",
|
||||
@@ -269,16 +269,16 @@
|
||||
"postprocessing.error.delete": "Не удалось удалить шаблон фильтра",
|
||||
"postprocessing.config.show": "Показать настройки",
|
||||
"postprocessing.test.title": "Тест шаблона фильтра",
|
||||
"postprocessing.test.source_stream": "Источник потока:",
|
||||
"postprocessing.test.source_stream": "Источник:",
|
||||
"postprocessing.test.running": "Тестирование шаблона фильтра...",
|
||||
"postprocessing.test.error.no_stream": "Пожалуйста, выберите источник потока",
|
||||
"postprocessing.test.error.no_stream": "Пожалуйста, выберите источник",
|
||||
"postprocessing.test.error.failed": "Тест шаблона фильтра не удался",
|
||||
"device.button.stream_selector": "Настройки потока",
|
||||
"device.stream_settings.title": "📺 Настройки потока",
|
||||
"device.stream_selector.label": "Поток:",
|
||||
"device.stream_selector.hint": "Выберите поток, определяющий что это устройство захватывает и обрабатывает",
|
||||
"device.stream_selector.none": "-- Поток не назначен --",
|
||||
"device.stream_selector.saved": "Настройки потока обновлены",
|
||||
"device.button.stream_selector": "Настройки источника",
|
||||
"device.stream_settings.title": "📺 Настройки источника",
|
||||
"device.stream_selector.label": "Источник:",
|
||||
"device.stream_selector.hint": "Выберите источник, определяющий что это устройство захватывает и обрабатывает",
|
||||
"device.stream_selector.none": "-- Источник не назначен --",
|
||||
"device.stream_selector.saved": "Настройки источника обновлены",
|
||||
"device.stream_settings.border_width": "Ширина границы (px):",
|
||||
"device.stream_settings.border_width_hint": "Сколько пикселей от края экрана выбирать для цвета LED (1-100)",
|
||||
"device.stream_settings.interpolation": "Режим интерполяции:",
|
||||
@@ -288,10 +288,10 @@
|
||||
"device.stream_settings.interpolation_hint": "Как вычислять цвет LED из выбранных пикселей",
|
||||
"device.stream_settings.smoothing": "Сглаживание:",
|
||||
"device.stream_settings.smoothing_hint": "Временное смешивание между кадрами (0=нет, 1=полное). Уменьшает мерцание.",
|
||||
"device.tip.stream_selector": "Настройки видеопотока и проекции LED для этого устройства",
|
||||
"device.tip.stream_selector": "Настройки источника и проекции LED для этого устройства",
|
||||
"streams.group.static_image": "Статические",
|
||||
"streams.add.static_image": "Добавить статическое изображение",
|
||||
"streams.edit.static_image": "Редактировать статическое изображение",
|
||||
"streams.add.static_image": "Добавить статическое изображение (источник)",
|
||||
"streams.edit.static_image": "Редактировать статическое изображение (источник)",
|
||||
"streams.type.static_image": "Статическое изображение",
|
||||
"streams.image_source": "Источник изображения:",
|
||||
"streams.image_source.placeholder": "https://example.com/image.jpg или C:\\path\\to\\image.png",
|
||||
|
||||
Reference in New Issue
Block a user