- новый api/: /pipeline/process (yt-dlp, субтитры или Vosk, LLM/экстрактивная суммаризация), /videos, /llm; старый код перенесён в api_legacy/ - web/: Flet UI (flet 0.28.3 + flet-web, порт 8550) - Dockerfile.api: ffmpeg слоем из mwader/static-ffmpeg, pip с кэш-маунтом - requirements/pyproject: убраны moviepy, imageio-ffmpeg, битый asyncio - README с инструкцией запуска и загрузкой Vosk-модели Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
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())
|
|
|
|
# probe env-configured LLM and initial library load
|
|
try:
|
|
status = client.llm_status()
|
|
if status.get("configured"):
|
|
view._set_status(ok=True)
|
|
if status.get("base_url") and not view.base_url.value:
|
|
view.base_url.value = status["base_url"]
|
|
if status.get("model") and not view.selected_model:
|
|
view.selected_model = status["model"]
|
|
view.model_input.value = status["model"]
|
|
except Exception:
|
|
pass
|
|
|
|
view._refresh_library()
|
|
page.update()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
ft.app(
|
|
target=main,
|
|
view=ft.AppView.WEB_BROWSER,
|
|
port=PORT,
|
|
host="0.0.0.0",
|
|
)
|