app v1
This commit is contained in:
115
README.md
Normal file
115
README.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Anime Quiz Video Generator
|
||||
|
||||
Generate "Guess the Anime Opening" videos for YouTube and TikTok.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
After startup:
|
||||
- Frontend: http://localhost:5173
|
||||
- Backend API: http://localhost:8000
|
||||
- API Docs: http://localhost:8000/docs
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── backend/
|
||||
│ ├── app/
|
||||
│ │ ├── main.py # FastAPI endpoints
|
||||
│ │ ├── models.py # Pydantic models
|
||||
│ │ ├── video_generator.py # Video generation logic
|
||||
│ │ └── config.py # Settings
|
||||
│ ├── requirements.txt
|
||||
│ └── Dockerfile
|
||||
├── frontend/
|
||||
│ ├── src/
|
||||
│ │ ├── App.vue # Main component
|
||||
│ │ ├── main.js
|
||||
│ │ └── style.css
|
||||
│ ├── package.json
|
||||
│ └── Dockerfile
|
||||
├── media/
|
||||
│ ├── audio/ # MP3 anime openings
|
||||
│ ├── backgrounds/ # Looping MP4 backgrounds
|
||||
│ └── posters/ # Anime poster images
|
||||
├── output/
|
||||
│ └── videos/ # Generated videos
|
||||
└── docker-compose.yml
|
||||
```
|
||||
|
||||
## Adding Content
|
||||
|
||||
### Audio Files (Required)
|
||||
Place MP3 files of anime openings in `media/audio/`:
|
||||
```
|
||||
media/audio/
|
||||
├── aot_op1.mp3
|
||||
├── demon_slayer_op1.mp3
|
||||
└── jjk_op1.mp3
|
||||
```
|
||||
|
||||
### Background Videos (Recommended)
|
||||
Place looping MP4 backgrounds in `media/backgrounds/`:
|
||||
- Recommended duration: 5-10 seconds
|
||||
- Abstract animations, particles, gradients work best
|
||||
- Will be looped and resized automatically
|
||||
|
||||
### Posters (Optional)
|
||||
Place anime poster images in `media/posters/`:
|
||||
- Supported formats: JPG, PNG, WebP
|
||||
- Will be displayed in answer scenes
|
||||
|
||||
## Video Modes
|
||||
|
||||
### Shorts / TikTok
|
||||
- Resolution: 1080x1920 (9:16)
|
||||
- Fast pacing
|
||||
- Best for 3-5 questions
|
||||
|
||||
### Full Video (YouTube)
|
||||
- Resolution: 1920x1080 (16:9)
|
||||
- Includes final screen with CTA
|
||||
- Best for 10-20 questions
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| GET | /health | Health check |
|
||||
| GET | /content | List available media |
|
||||
| POST | /generate | Generate video |
|
||||
| GET | /download/{filename} | Download video |
|
||||
| GET | /videos-list | List generated videos |
|
||||
|
||||
## Example Request
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": "shorts",
|
||||
"questions": [
|
||||
{
|
||||
"anime": "Attack on Titan",
|
||||
"opening_file": "aot_op1.mp3",
|
||||
"start_time": 32,
|
||||
"difficulty": "easy",
|
||||
"poster": "aot.jpg"
|
||||
}
|
||||
],
|
||||
"audio_duration": 3
|
||||
}
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Backend**: Python 3.12, FastAPI, MoviePy, FFmpeg
|
||||
- **Frontend**: Vue 3, Vite
|
||||
- **Container**: Docker, Docker Compose
|
||||
Reference in New Issue
Block a user