Fix SeriesApp: Add missing class variable and clean up unused imports

This commit is contained in:
2025-10-06 09:17:35 +02:00
parent 4c9076af19
commit 00a68deb7b
8 changed files with 199 additions and 167 deletions

218
README.md
View File

@@ -5,103 +5,118 @@ A powerful anime series management system that helps you track, organize, and do
## 🚀 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
- **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
- **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
- **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
- **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
- **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
- **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)
- Python 3.11+
- Conda package manager
- Windows OS (currently optimized for Windows)
### Quick Start
1. **Clone the Repository**
```bash
git clone <repository-url>
cd Aniworld
```
```bash
git clone <repository-url>
cd Aniworld
```
2. **Create and Activate Conda Environment**
```bash
conda create -n AniWorld python=3.11
conda activate AniWorld
```
```bash
conda create -n AniWorld python=3.11
conda activate AniWorld
```
3. **Install Dependencies**
```bash
pip install -r requirements.txt
```
```bash
pip install -r requirements.txt
```
4. **Set Environment Variables**
```bash
# Set your master password (will be hashed automatically)
set MASTER_PASSWORD=your_secure_password
```
```bash
# Set your master password (will be hashed automatically)
set MASTER_PASSWORD=your_secure_password
```
5. **Start the FastAPI Server**
```bash
# 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"
```
```bash
# 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"
```
6. **Access the Application**
- **Web Interface**: http://localhost:8000
- **API Documentation**: http://localhost:8000/docs
- **Alternative API Docs**: http://localhost:8000/redoc
- **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"
- `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)
- `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/
@@ -123,77 +138,87 @@ Aniworld/
### Authentication
1. **Login to get JWT token**:
```bash
curl -X POST "http://localhost:8000/auth/login" \
-H "Content-Type: application/json" \
-d '{"password": "your_master_password"}'
```
```bash
curl -X POST "http://localhost:8000/auth/login" \
-H "Content-Type: application/json" \
-d '{"password": "your_master_password"}'
```
2. **Use token in requests**:
```bash
curl -X GET "http://localhost:8000/api/anime/search?query=naruto" \
-H "Authorization: Bearer your_jwt_token_here"
```
```bash
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`
- **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
- **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
- Desktop browsers (Chrome, Firefox, Edge, Safari)
- Mobile devices (iOS Safari, Android Chrome)
- Tablet devices
- Dark and light themes
## 🔍 Troubleshooting
### Common Issues
1. **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)
- Check that the AniWorld conda environment is activated
- Verify all dependencies are installed: `pip install -r requirements.txt`
- Check for port conflicts (default: 8000)
2. **Authentication errors**
- Verify the master password is set correctly
- Check environment variables are properly configured
- Clear browser cache/cookies
- Verify the master password is set correctly
- Check environment variables are properly configured
- Clear browser cache/cookies
3. **Import errors**
- Ensure all required packages are installed
- Check Python path configuration
- Verify conda environment is activated
- 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 logs
- `errors.log` - Error-specific logs
- `auth_failures.log` - Authentication failure logs
- `aniworld.log` - General application logs
- `errors.log` - Error-specific logs
- `auth_failures.log` - Authentication failure logs
## 🚦 Development
### Running in Development Mode
```bash
# With auto-reload for development
uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000 --reload --log-level debug
```
### Testing
```bash
# Run all tests
python -m pytest tests/ -v
@@ -203,6 +228,7 @@ python -m pytest tests/ --cov=src --cov-report=html
```
### Code Quality
```bash
# Format code
black src/
@@ -215,9 +241,9 @@ flake8 src/
## 📚 Documentation
- **API Documentation**: Available at `/docs` (Swagger UI) and `/redoc` (ReDoc)
- **Migration Guide**: See `API_DOCUMENTATION.md` for detailed migration information
- **FastAPI Specific**: See `src/server/README_FastAPI.md` for server-specific documentation
- **API Documentation**: Available at `/docs` (Swagger UI) and `/redoc` (ReDoc)
- **Migration Guide**: See `API_DOCUMENTATION.md` for detailed migration information
- **FastAPI Specific**: See `src/server/README_FastAPI.md` for server-specific documentation
## 🤝 Contributing
@@ -233,10 +259,10 @@ This project is licensed under the MIT License - see the LICENSE file for detail
## 🙏 Acknowledgments
- FastAPI team for the excellent framework
- The original Flask implementation that served as the foundation
- All contributors and users of the AniWorld project
- 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.
**Note**: This application is for personal use only. Please respect copyright laws and terms of service of content providers.