VideoStudy/SETUP.md
2026-02-09 18:31:08 -03:00

6.5 KiB

VideoStudy.app - FASE 1 Setup Guide

Estrutura Base Criada

VideoStudy.app/
├── VideoStudy.API/                     # ✅ Web API (port 5000)
│   ├── Program.cs                      # Endpoints + Semantic Kernel config
│   ├── appsettings.json                # LLM provider configuration
│   └── bin/Debug/...                   # Compiled binaries
│
├── VideoStudy.Desktop/                 # ✅ Blazor Hybrid Desktop App
│   ├── VideoStudy.Desktop/             # Server
│   │   ├── Program.cs                  # App setup + HttpClient
│   │   ├── appsettings.json            # API base URL config
│   │   └── Components/Pages/Home.razor # Main UI with form
│   └── VideoStudy.Desktop.Client/      # WebAssembly client
│
├── VideoStudy.Shared/                  # ✅ Shared Models
│   └── Models.cs                       # AnalysisRequest, AnalysisResponse, etc.
│
├── REFERENCES.md                       # Análise de projetos referência
├── README.md                           # Project documentation
├── SETUP.md                            # Este arquivo
└── VideoStudy.sln                      # Solution file

🚀 Como Iniciar

Terminal 1: Executar a API

cd /mnt/c/vscode/VideoStudy.app/VideoStudy.API
dotnet run

Output esperado:

Building...
Built successfully.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
      Press CTRL+C to quit

Testar Health Check:

curl http://localhost:5000/health

Resposta esperada:

{"status":"ok","timestamp":"2026-02-06T10:00:00Z"}

Terminal 2: Executar Desktop App

cd /mnt/c/vscode/VideoStudy.app/VideoStudy.Desktop/VideoStudy.Desktop
dotnet run

Output esperado:

Building...
Built successfully.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5001
      Press CTRL+C to quit

Acesso: Abra browser em http://localhost:5001

🎯 Como Testar a Integração

1. Abrir a Interface Web

  • URL: http://localhost:5001
  • Você verá um formulário com:
    • Campo de URL do YouTube
    • Seletor de idioma
    • Opções: Modo Fast vs Advanced
    • Botão "Analyze Video"

2. Enviar Requisição de Teste

Preencha no formulário:

  • YouTube URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Language: English
  • Mode: Fast
  • Clique em "Analyze Video"

3. Verificar Resposta

Você deve ver:

  • Barra de progresso
  • Debug logs mostrando cada etapa
  • Resultado com:
    • Video Title
    • Transcript Summary
    • Analysis
    • Key Moments

4. Testar via API diretamente (curl)

curl -X POST http://localhost:5000/api/analyze \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "language": "en",
    "mode": "fast"
  }'

Resposta esperada:

{
  "videoTitle": "Example Video: dQw4w9WgXcQ",
  "transcript": "This is a simulated transcript. Mode: fast, Language: en",
  "analysis": "This is a simulated analysis of the video content...",
  "keyMoments": [
    {
      "timestamp": "00:00:15",
      "description": "Introduction",
      "startSeconds": 15
    },
    {
      "timestamp": "00:02:30",
      "description": "Main topic",
      "startSeconds": 150
    },
    {
      "timestamp": "00:05:00",
      "description": "Conclusion",
      "startSeconds": 300
    }
  ],
  "status": "success",
  "errorMessage": null
}

🔧 Configuração de Providers

Usar Ollama (Local)

  1. Instale Ollama: https://ollama.ai
  2. Inicie: ollama serve
  3. Puxe modelo: ollama pull llama2
  4. Edite VideoStudy.API/Program.cs (linha 32):
builder.Services.AddOpenAIChatCompletion(modelId, new Uri(endpoint), apiKey);

Comente e descomente a linha 23:

builder.Services.AddOllamaChatCompletion("llama2", new Uri("http://localhost:11434"));

Usar Groq (Cloud, Grátis)

  1. Crie conta: https://console.groq.com/
  2. Gere API Key
  3. Configure em VideoStudy.API/appsettings.json:
"LlmSettings": {
  "ApiKey": "gsk_your_actual_key_here"
}

🏗️ Estrutura de Arquivos Criados

VideoStudy.Shared/Models.cs

- AnalysisRequest      (input)
- AnalysisResponse     (output)
- KeyMoment            (timestamp + description)
- ProgressUpdate       (for future streaming)

VideoStudy.API/Program.cs

  • GET /health - Health check
  • POST /api/analyze - Main endpoint (atualmente retorna mock data)
  • Semantic Kernel registrado (pronto para FASE 2)
  • CORS habilitado
  • LLM provider configurable

VideoStudy.Desktop/Home.razor

  • URL input
  • Language selector
  • Mode selector (Fast/Advanced)
  • Progress bar
  • Results display
  • Debug logs
  • Error handling

📋 Portas Utilizadas

Aplicação Porta URL
API 5000 http://localhost:5000
Desktop 5001 http://localhost:5001

⚠️ Se as portas estiverem em uso:

# Encontrar processo usando porta 5000
netstat -ano | findstr :5000   # Windows
lsof -i :5000                  # Linux/Mac

# Mudar porta no appsettings.json ou:
dotnet run --urls "http://localhost:5100"

O que Funciona

  • Build da solução
  • API respondendo em /health e /api/analyze
  • Desktop conectando à API
  • Formulário web funcional
  • Debug logs mostrando fluxo
  • Tratamento de erros básico
  • Semantic Kernel integrado (ready for FASE 2)

⏭️ Próximos Passos (FASE 2)

  • Integrar YouTubeService (download de vídeos)
  • Integrar yt-dlp para extração de legendas
  • Integrar Whisper.NET para transcrição
  • Integrar FFmpeg para screenshots
  • Implementar WebSocket para progress real-time
  • Adicionar persistência (MongoDB)
  • Implementar modos Fast/Advanced completos

🐛 Troubleshooting

"Cannot connect to API"

  • Verifique se API está rodando em outro terminal
  • Verifique que porta 5000 está aberta
  • Verifique appsettings.json do Desktop

"Build failed"

dotnet clean
dotnet restore
dotnet build

"Semantic Kernel errors"

  • Verifique versão: dotnet package search Microsoft.SemanticKernel
  • Atualize: dotnet package update

📞 Informações de Compilação

  • Framework: .NET 8.0
  • Último Build: Sucesso (0 erros, 0 warnings)
  • Projetos: 4 (Shared, API, Desktop, Desktop.Client)
  • Tamanho solução: ~50MB (depois de compilada)

Status FASE 1: COMPLETO E FUNCIONANDO