- Fix setup.html to use redirect_url from API response instead of hardcoded '/' - Add database creation (aniworld.db, cache.db) during setup process - Setup now properly creates all required files for validation - After setup completion, users are correctly redirected to /login - Tested: setup API returns correct redirect_url, database files created, redirect works
AniWorld - Anime Series Management System
A powerful anime series management system that helps you track, organize, and download your favorite anime series. Recently migrated from Flask to FastAPI for improved performance and modern API capabilities.
🚀 Features
Core Functionality
- Series Tracking: Automatically detect missing episodes in your anime collection
- Smart Downloads: Queue-based download system with progress tracking
- File Organization: Automatic file scanning and folder structure management
- Search Integration: Search for anime series across multiple providers
- Real-time Updates: Live progress updates via WebSocket connections
Web Interface
- Modern UI: Clean, responsive web interface with dark/light theme support
- Download Queue: Visual download queue management
- Progress Tracking: Real-time download and scan progress
- Mobile Support: Fully responsive design for mobile devices
API & Integration
- FastAPI Backend: High-performance async API with automatic documentation
- RESTful API: Complete REST API for programmatic access
- OpenAPI Documentation: Interactive API documentation at
/docs - Authentication: Secure master password authentication with JWT tokens
🎯 Recent Migration: Flask → FastAPI
This project has been successfully migrated from Flask to FastAPI, bringing significant improvements:
Performance Benefits
- Async Support: Native async/await for better concurrency
- Faster Response Times: Up to 2-3x performance improvement
- Better Resource Utilization: More efficient handling of concurrent requests
Developer Experience
- Automatic Documentation: Built-in OpenAPI/Swagger documentation
- Type Safety: Full request/response validation with Pydantic
- Modern Standards: OpenAPI 3.0 compliance and JSON Schema validation
- Better Error Handling: Structured error responses with detailed information
API Improvements
- Interactive Documentation: Test API endpoints directly from
/docs - Schema Validation: Automatic request/response validation
- Better Error Messages: Detailed validation errors with field-level feedback
🛠️ Installation & Setup
Prerequisites
- Python 3.11+
- Conda package manager
- Windows OS (currently optimized for Windows)
Quick Start
-
Clone the Repository
git clone <repository-url> cd Aniworld -
Create and Activate Conda Environment
conda create -n AniWorld python=3.11 conda activate AniWorld -
Install Dependencies
pip install -r requirements.txt -
Set Environment Variables
# Set your master password (will be hashed automatically) set MASTER_PASSWORD=your_secure_password -
Start the FastAPI Server
# Development mode with auto-reload uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000 --reload # Or use the VS Code task: "Run FastAPI Server" -
Access the Application
- Web Interface: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Alternative API Docs: http://localhost:8000/redoc
Alternative: Using VS Code Tasks
If you're using VS Code, you can use the pre-configured tasks:
Ctrl+Shift+P→ "Tasks: Run Task" → "Run FastAPI Server"
🔧 Configuration
Environment Variables
MASTER_PASSWORD- Your master password (will be hashed automatically)MASTER_PASSWORD_HASH- Pre-hashed password (alternative to MASTER_PASSWORD)JWT_SECRET_KEY- Secret key for JWT token signing (auto-generated if not set)LOG_LEVEL- Logging level (DEBUG, INFO, WARNING, ERROR)
Directory Structure
Aniworld/
├── src/
│ ├── core/ # Core business logic
│ │ ├── SeriesApp.py # Main application controller
│ │ ├── entities/ # Data models
│ │ └── providers/ # Content providers
│ ├── server/ # FastAPI server
│ │ ├── fastapi_app.py # Main FastAPI application
│ │ └── web/ # Web interface and controllers
│ └── infrastructure/ # Infrastructure components
├── data/ # Application data and databases
├── logs/ # Application logs
└── requirements.txt # Python dependencies
🌐 API Usage
Authentication
-
Login to get JWT token:
curl -X POST "http://localhost:8000/auth/login" \ -H "Content-Type: application/json" \ -d '{"password": "your_master_password"}' -
Use token in requests:
curl -X GET "http://localhost:8000/api/anime/search?query=naruto" \ -H "Authorization: Bearer your_jwt_token_here"
Key Endpoints
- Authentication:
/auth/login,/auth/verify,/auth/logout - System:
/health,/api/system/config - Anime:
/api/anime/search,/api/anime/{id} - Episodes:
/api/episodes/{id},/api/anime/{id}/episodes - Downloads:
/api/download,/api/add_series
For complete API documentation, visit /docs when the server is running.
🖥️ Web Interface
Main Features
- Dashboard: Overview of your anime collection and missing episodes
- Search: Find and add new anime series to track
- Downloads: Manage download queue and monitor progress
- Settings: Configure application preferences
Responsive Design
The web interface is fully responsive and supports:
- Desktop browsers (Chrome, Firefox, Edge, Safari)
- Mobile devices (iOS Safari, Android Chrome)
- Tablet devices
- Dark and light themes
🔍 Troubleshooting
Common Issues
-
Server won't start
- Check that the AniWorld conda environment is activated
- Verify all dependencies are installed:
pip install -r requirements.txt - Check for port conflicts (default: 8000)
-
Authentication errors
- Verify the master password is set correctly
- Check environment variables are properly configured
- Clear browser cache/cookies
-
Import errors
- Ensure all required packages are installed
- Check Python path configuration
- Verify conda environment is activated
Logs
Application logs are stored in the logs/ directory:
aniworld.log- General application logserrors.log- Error-specific logsauth_failures.log- Authentication failure logs
🚦 Development
Running in Development Mode
# With auto-reload for development
uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000 --reload --log-level debug
Testing
# Run all tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html
Code Quality
# Format code
black src/
isort src/
# Lint code
pylint src/
flake8 src/
📚 Documentation
- API Documentation: Available at
/docs(Swagger UI) and/redoc(ReDoc) - Migration Guide: See
API_DOCUMENTATION.mdfor detailed migration information - FastAPI Specific: See
src/server/README_FastAPI.mdfor server-specific documentation
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- FastAPI team for the excellent framework
- The original Flask implementation that served as the foundation
- All contributors and users of the AniWorld project
Note: This application is for personal use only. Please respect copyright laws and terms of service of content providers.