4.1 KiB
4.1 KiB
AniWorld Web Manager
A modern Flask-based web application for managing anime downloads with a beautiful Fluent UI design.
Features
✅ Anime Search
- Real-time search with auto-suggest
- Easy addition of series from search results
- Clear search functionality
✅ Series Management
- Grid layout with card-based display
- Shows missing episodes count
- Multi-select with checkboxes
- Select all/deselect all functionality
✅ Download Management
- Background downloading with progress tracking
- Pause, resume, and cancel functionality
- Real-time status updates via WebSocket
✅ Modern UI
- Fluent UI design system (Windows 11 style)
- Dark and light theme support
- Responsive design for desktop and mobile
- Smooth animations and transitions
✅ Localization
- Support for multiple languages (English, German)
- Easy to add new languages
- Resource-based text management
✅ Real-time Updates
- WebSocket connection for live updates
- Toast notifications for user feedback
- Status panel with progress tracking
Setup
-
Install Dependencies
pip install Flask Flask-SocketIO eventlet -
Environment Configuration Set the
ANIME_DIRECTORYenvironment variable to your anime storage path:# Windows set ANIME_DIRECTORY="Z:\media\serien\Serien" # Linux/Mac export ANIME_DIRECTORY="/path/to/your/anime/directory" -
Run the Application
cd src/server python app.py -
Access the Web Interface Open your browser and navigate to:
http://localhost:5000
Usage
Searching and Adding Anime
- Use the search bar to find anime
- Browse search results
- Click "Add" to add series to your collection
Managing Downloads
- Select series using checkboxes
- Click "Download Selected" to start downloading
- Monitor progress in the status panel
- Use pause/resume/cancel controls as needed
Theme and Language
- Click the moon/sun icon to toggle between light and dark themes
- Language is automatically detected from browser settings
- Supports English and German out of the box
Configuration
- Click the "Config" button to view current settings
- Shows anime directory path, series count, and connection status
File Structure
src/server/
├── app.py # Main Flask application
├── templates/
│ └── index.html # Main HTML template
├── static/
│ ├── css/
│ │ └── styles.css # Fluent UI styles
│ └── js/
│ ├── app.js # Main application logic
│ └── localization.js # Multi-language support
API Endpoints
GET /- Main web interfaceGET /api/series- Get all series with missing episodesPOST /api/search- Search for animePOST /api/add_series- Add series to collectionPOST /api/download- Start downloading selected seriesPOST /api/rescan- Rescan anime directoryGET /api/status- Get application statusPOST /api/download/pause- Pause current downloadPOST /api/download/resume- Resume paused downloadPOST /api/download/cancel- Cancel current download
WebSocket Events
connect- Client connection establishedscan_started- Directory scan initiatedscan_progress- Scan progress updatescan_completed- Scan finished successfullydownload_started- Download initiateddownload_progress- Download progress updatedownload_completed- Download finisheddownload_paused- Download pauseddownload_resumed- Download resumeddownload_cancelled- Download cancelled
Security Features
- Input validation on all API endpoints
- No exposure of internal stack traces
- Secure WebSocket connections
- Environment-based configuration
Browser Compatibility
- Modern browsers with ES6+ support
- WebSocket support required
- Responsive design works on mobile devices
Development Notes
- Uses existing
SeriesAppclass without modifications - Maintains compatibility with original CLI application
- Thread-safe download management
- Proper error handling and user feedback