# VideoStudy.app - FASE 1 ✅ Plataforma de análise de vídeos do YouTube usando Inteligência Artificial com Semantic Kernel. ## 📋 Estrutura do Projeto ``` VideoStudy.app/ ├── VideoStudy.API/ # ASP.NET Core Web API (Semantic Kernel) ├── VideoStudy.Desktop/ # Blazor Hybrid Desktop Application │ ├── VideoStudy.Desktop/ # Server project │ └── VideoStudy.Desktop.Client/ # Client project ├── VideoStudy.Shared/ # Shared models and interfaces ├── Tests/ # Test projects ├── REFERENCES.md # Análise de referências └── README.md # Este arquivo ``` ## 🚀 Quick Start ### Pré-requisitos - **.NET 8.0 SDK** ou superior - **Visual Studio 2022 / VS Code** (opcional) ### 1. Clonar/Abrir Projeto ```bash cd /mnt/c/vscode/VideoStudy.app ``` ### 2. Restaurar Dependências ```bash dotnet restore ``` ### 3. Executar a API #### Opção A: Com Ollama (Local, Grátis) Certifique-se que Ollama está rodando em `http://localhost:11434` ```bash cd VideoStudy.API dotnet run ``` A API estará disponível em: `http://localhost:5000` #### Opção B: Com Groq (Cloud, Grátis) 1. Crie conta em https://console.groq.com 2. Gere API Key 3. Configure em `VideoStudy.API/appsettings.json`: ```json "LlmSettings": { "Provider": "Groq", "ModelId": "llama-3.1-8b-instant", "Endpoint": "https://api.groq.com/openai/v1", "ApiKey": "your-groq-api-key" } ``` ```bash cd VideoStudy.API dotnet run ``` ### 4. Executar Desktop App (em outro terminal) ```bash cd VideoStudy.Desktop/VideoStudy.Desktop dotnet run ``` A aplicação estará disponível em: `http://localhost:5001` ## 📡 Endpoints da API ### Health Check ``` GET /health ``` Resposta: ```json { "status": "ok", "timestamp": "2026-02-06T10:00:00Z" } ``` ### Analisar Vídeo ``` POST /api/analyze Content-Type: application/json { "videoUrl": "https://www.youtube.com/watch?v=...", "language": "en", "mode": "fast" } ``` Resposta: ```json { "videoTitle": "Video Title", "transcript": "Topics covered...", "analysis": "Detailed analysis...", "keyMoments": [ { "timestamp": "00:00:30", "description": "Key moment description", "startSeconds": 30 } ], "status": "success", "errorMessage": null } ``` ## 🏗️ Arquitetura ### VideoStudy.Shared Modelos compartilhados entre API e Desktop: - `AnalysisRequest` - Entrada do usuário - `AnalysisResponse` - Resposta da análise - `KeyMoment` - Momento importante no vídeo - `ProgressUpdate` - Atualização de progresso ### VideoStudy.API - **Framework**: ASP.NET Core 8.0 - **AI Integration**: Semantic Kernel 1.70.0 - **LLM Providers**: - Groq (padrão) - Ollama (local) - OpenAI (opcional) - **CORS**: Habilitado para todas as origens (desenvolvimento) ### VideoStudy.Desktop - **Framework**: Blazor Hybrid - **UI**: Bootstrap 5 + Razor Components - **Comunicação**: HttpClient para chamadas à API - **Recursos**: - URL input para vídeos do YouTube - Seleção de idioma - Modo Fast/Advanced - Barra de progresso - Debug logs - Tratamento de erros ## 🔧 Configuração Avançada ### Mudar LLM Provider Edite `VideoStudy.API/Program.cs` (linhas 21-37): #### Para Ollama: ```csharp builder.Services.AddOllamaChatCompletion( "llama2", new Uri("http://localhost:11434") ); ``` #### Para OpenAI GPT-4: ```csharp builder.Services.AddOpenAIChatCompletion( "gpt-4o-mini", "sk-proj-your-key" ); ``` #### Para Google Gemini: ```csharp builder.Services.AddGoogleAIGeminiChatCompletion( "gemini-1.5-flash-latest", "your-google-api-key" ); ``` ### Build para Produção ```bash dotnet build -c Release dotnet publish -c Release -o ./publish ``` ## 📊 FASE 2 - Status ✅ **Concluído:** - Download de vídeos do YouTube (YoutubeExplode) - Extração de legendas (Modo Rápido) - Transcrição com Whisper.NET (Modo Avançado) - Extração de screenshots (FFmpeg) - Fluxo completo: URL → Transcrição → Análise IA → Screenshots - Progress reporting em tempo real ❌ **Não incluído (FASE 3):** - Geração de PDF - UI refinada (Design System) - Persistência (MongoDB) - Autenticação ## 🔧 Requisitos Externos (Fase 2) ### FFmpeg Para que o "Modo Avançado" (Whisper e Screenshots) funcione, o **FFmpeg** deve estar instalado e acessível no PATH do sistema. **Linux (Ubuntu/Debian):** ```bash sudo apt update && sudo apt install ffmpeg ``` **Windows:** Baixe em [ffmpeg.org](https://ffmpeg.org/download.html) e adicione a pasta `bin` às Variáveis de Ambiente. ### Whisper Model O modelo de IA (base) será baixado automaticamente na primeira execução para a pasta `VideoStudy.Desktop/bin/Debug/net8.0/models/`. ## 🔄 FASE 3 - Próximos Passos Será implementado: - YouTubeService (YoutubeExplode) - TranscriptionService (Whisper.NET) - ScreenshotService (FFmpeg) - Modos: Fast (legendas) e Advanced (Whisper) - Progress reporting em tempo real - Tratamento robusto de erros ## 📝 Notas - A API tem CORS habilitado para todos os domínios (alterar para produção!) - Sem autenticação no momento (adicionar em FASE 3) - LLM provider deve estar ativo antes de iniciar (Ollama ou Groq) - Desktop aguarda API em `http://localhost:5000` (configurável) ## 🐛 Troubleshooting ### Erro: "Unable to connect to API" - Verifique se a API está rodando: `dotnet run` em `VideoStudy.API` - Confirme que porta 5000 está livre - Verifique `appsettings.json` no Desktop: `BaseUrl` deve ser `http://localhost:5000` ### Erro: "LLM Provider not available" - **Se usar Groq**: Verifique API key em `VideoStudy.API/appsettings.json` - **Se usar Ollama**: Certifique-se que Ollama está rodando (`ollama serve`) ### Erro: "ModelId not found" - Verifique o nome do modelo em `appsettings.json` - Ollama: modelos podem ser listados com `ollama list` - Groq: `llama-3.1-8b-instant` é o padrão ## 📞 Versões de Dependências | Package | Versão | Propósito | |---------|--------|-----------| | Microsoft.SemanticKernel | 1.70.0 | IA Integration | | Microsoft.SemanticKernel.Connectors.OpenAI | 1.70.0 | OpenAI-compatible | | Microsoft.SemanticKernel.Connectors.Ollama | 1.70.0-alpha | Local LLM | | Bootstrap | 5.3.2 | CSS Framework (Desktop) | ## 📄 Licença Projeto em desenvolvimento - Todos os direitos reservados --- **Última atualização:** 2026-02-06 **Fase:** 1 (Estrutura Base) **Status:** ✅ Pronto para FASE 2