Fix SeriesApp: Add missing class variable and clean up unused imports
This commit is contained in:
218
README.md
218
README.md
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user