Рабочий пайплайн: YouTube -> транскрипция -> выжимка -> Postgres
- новый 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>
This commit is contained in:
45
web/main.py
Normal file
45
web/main.py
Normal file
@@ -0,0 +1,45 @@
|
||||
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",
|
||||
)
|
||||
Reference in New Issue
Block a user