Files
LLM-infa/web/main.py
jze9 e87f6cd215 Фоновые задачи: плейлисты, длинные лекции, вкладка настроек
- таблица jobs + очередь с воркером: POST /jobs сразу отвечает, элементы
  плейлиста обрабатываются последовательно, есть отмена и живой прогресс
  (скачивание %, минуты распознанного Vosk-аудио)
- expand_url: плейлист раскрывается в список видео
- keep_video=false теперь качает только аудио (для 4-5ч лекций)
- настройки (LLM-ключ, модель, длина выжимки, хранение видео, путь Vosk)
  хранятся в Postgres: переживают перезапуск и перезагрузку страницы
- длина выжимки прокидывается в LLM-промпт ({n} предложений)
- UI: вкладки «Главная»/«Настройки», карточка задач с автообновлением
  каждые 3 сек, прогресс-бар, отмена, библиотека обновляется по мере
  готовности элементов

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 15:01:11 +05:00

40 lines
933 B
Python

import flet as ft
from web.api_client import ApiClient
from web.config import PORT
import web.designer as d
from web.views.main_view import MainView
def main(page: ft.Page) -> None:
page.title = "LLM-infa"
page.theme_mode = ft.ThemeMode.DARK
page.bgcolor = d.BG
page.padding = 0
page.scroll = ft.ScrollMode.HIDDEN
page.window.width = 1100
page.fonts = {}
client = ApiClient()
view = MainView(page, client)
page.add(view.build())
# настройки живут на сервере (БД) — заполняем поля сохранёнными значениями
try:
view.apply_settings(client.get_settings())
except Exception:
pass
view._refresh_library()
view._start_jobs_poll()
page.update()
if __name__ == "__main__":
ft.app(
target=main,
view=ft.AppView.WEB_BROWSER,
port=PORT,
host="0.0.0.0",
)