first commit
This commit is contained in:
commit
3caea37187
269
README.md
Normal file
269
README.md
Normal file
@ -0,0 +1,269 @@
|
||||
# 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
|
||||
Loading…
Reference in New Issue
Block a user