docu
This commit is contained in:
140
README.md
Normal file
140
README.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Aniworld Download Manager
|
||||
|
||||
A web-based anime download manager with REST API, WebSocket real-time updates, and a modern web interface.
|
||||
|
||||
## Features
|
||||
|
||||
- Web interface for managing anime library
|
||||
- REST API for programmatic access
|
||||
- WebSocket real-time progress updates
|
||||
- Download queue with priority management
|
||||
- Automatic library scanning for missing episodes
|
||||
- JWT-based authentication
|
||||
- SQLite database for persistence
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Python 3.10+
|
||||
- Conda (recommended) or virtualenv
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/your-repo/aniworld.git
|
||||
cd aniworld
|
||||
```
|
||||
|
||||
2. Create and activate conda environment:
|
||||
|
||||
```bash
|
||||
conda create -n AniWorld python=3.10
|
||||
conda activate AniWorld
|
||||
```
|
||||
|
||||
3. Install dependencies:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. Start the server:
|
||||
|
||||
```bash
|
||||
python -m uvicorn src.server.fastapi_app:app --host 127.0.0.1 --port 8000
|
||||
```
|
||||
|
||||
5. Open http://127.0.0.1:8000 in your browser
|
||||
|
||||
### First-Time Setup
|
||||
|
||||
1. Navigate to http://127.0.0.1:8000/setup
|
||||
2. Set a master password (minimum 8 characters, mixed case, number, special character)
|
||||
3. Configure your anime directory path
|
||||
4. Login with your master password
|
||||
|
||||
## Documentation
|
||||
|
||||
| Document | Description |
|
||||
| ---------------------------------------------- | -------------------------------- |
|
||||
| [docs/API.md](docs/API.md) | REST API and WebSocket reference |
|
||||
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | System architecture and design |
|
||||
| [docs/CONFIGURATION.md](docs/CONFIGURATION.md) | Configuration options |
|
||||
| [docs/DATABASE.md](docs/DATABASE.md) | Database schema |
|
||||
| [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) | Developer setup guide |
|
||||
| [docs/TESTING.md](docs/TESTING.md) | Testing guidelines |
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
+-- cli/ # CLI interface (legacy)
|
||||
+-- config/ # Application settings
|
||||
+-- core/ # Domain logic
|
||||
| +-- SeriesApp.py # Main application facade
|
||||
| +-- SerieScanner.py # Directory scanning
|
||||
| +-- entities/ # Domain entities
|
||||
| +-- providers/ # External provider adapters
|
||||
+-- server/ # FastAPI web server
|
||||
+-- api/ # REST API endpoints
|
||||
+-- services/ # Business logic
|
||||
+-- models/ # Pydantic models
|
||||
+-- database/ # SQLAlchemy ORM
|
||||
+-- middleware/ # Auth, rate limiting
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Endpoint | Description |
|
||||
| ------------------------------ | -------------------------------- |
|
||||
| `POST /api/auth/login` | Authenticate and get JWT token |
|
||||
| `GET /api/anime` | List anime with missing episodes |
|
||||
| `GET /api/anime/search?query=` | Search for anime |
|
||||
| `POST /api/queue/add` | Add episodes to download queue |
|
||||
| `POST /api/queue/start` | Start queue processing |
|
||||
| `GET /api/queue/status` | Get queue status |
|
||||
| `WS /ws/connect` | WebSocket for real-time updates |
|
||||
|
||||
See [docs/API.md](docs/API.md) for complete API reference.
|
||||
|
||||
## Configuration
|
||||
|
||||
Environment variables (via `.env` file):
|
||||
|
||||
| Variable | Default | Description |
|
||||
| ----------------- | ------------------------------ | ---------------------- |
|
||||
| `JWT_SECRET_KEY` | (random) | Secret for JWT signing |
|
||||
| `DATABASE_URL` | `sqlite:///./data/aniworld.db` | Database connection |
|
||||
| `ANIME_DIRECTORY` | (empty) | Path to anime library |
|
||||
| `LOG_LEVEL` | `INFO` | Logging level |
|
||||
|
||||
See [docs/CONFIGURATION.md](docs/CONFIGURATION.md) for all options.
|
||||
|
||||
## Running Tests
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
conda run -n AniWorld python -m pytest tests/ -v
|
||||
|
||||
# Run unit tests only
|
||||
conda run -n AniWorld python -m pytest tests/unit/ -v
|
||||
|
||||
# Run integration tests
|
||||
conda run -n AniWorld python -m pytest tests/integration/ -v
|
||||
```
|
||||
|
||||
## Technology Stack
|
||||
|
||||
- **Web Framework**: FastAPI 0.104.1
|
||||
- **Database**: SQLite + SQLAlchemy 2.0
|
||||
- **Auth**: JWT (python-jose) + passlib
|
||||
- **Validation**: Pydantic 2.5
|
||||
- **Logging**: structlog
|
||||
- **Testing**: pytest + pytest-asyncio
|
||||
|
||||
## License
|
||||
|
||||
MIT License
|
||||
Reference in New Issue
Block a user