-
Notifications
You must be signed in to change notification settings - Fork 0
Database
🌐 English · Deutsch
SQLite database at ~/.aniworld/aniworld.db — WAL mode, 30 s busy timeout, connections are cached per Flask request. A PID lock (~/.aniworld/aniworld.pid) warns when two instances use the same DB.
| Table | Content |
|---|---|
users |
Users: role (admin/user), password hash (Werkzeug), SSO identity (sso_issuer+sso_subject, unique), UI language |
app_settings |
Key-value store of all settings (sensitive values encrypted, see below) |
download_queue |
Download jobs: episode list (JSON), language, provider, status (queued/running/completed/partial/failed/cancelled), progress, errors (JSON), statistics, captcha URL, upscale flag |
custom_paths |
Named additional download targets |
autosync_jobs |
Sync jobs: language, provider, custom path, enabled, on_hold, path_unavailable_action, counters (episodes_found, local_episodes_found, last_new_count), error/retry state |
favourites |
Series bookmarks per user |
seerr_hidden |
Seerr requests hidden per user |
library_cache |
Cached library scan per path (JSON) + scan status |
user_notification_prefs |
Notification settings per user (chat IDs, event toggles) |
push_subscriptions |
Web Push subscriptions (endpoint + keys, per user) |
tmdb_cache |
TMDB lookups (24 h TTL, hourly cleanup) |
browse_cache |
Browse lists (new/popular titles) |
upscale_queue |
Anime4K jobs (multi-file entries via JSON column files) |
mediascan_cache |
Plex/Jellyfin inventory (TMDB/IMDB/TVDB IDs) |
watch_progress |
Playback position per file for the browser player |
Schema migrations run automatically at startup (ALTER TABLE retrofits inside the init_* functions) — downgrades are not supported.
Sensitive keys are stored Fernet-encrypted (prefix enc:); the key is derived from the Flask secret (~/.aniworld/.flask_secret). Affected keys include:
external_api_key, seerr_api_key, oidc_client_secret, cineinfo_tmdb_api_key, mediaplayer_apikey, mediascan_jf_apikey, notif_telegram_bot_token, notif_pushover_app_token, notif_discord_webhook_url, notif_ntfy_auth_token, notif_ntfy_password, pushover_user_key.
Existing plaintext values are migrated automatically at startup.
Backup note: Always back up
aniworld.dband.flask_secrettogether — without the secret the encrypted settings cannot be recovered.
-
get_setting(key, default)/set_setting(key, value)/delete_setting(key)— central settings API (encrypts/decrypts transparently). - Queue claiming (
claim_next_queued) uses a dedicated connection with an atomicUPDATE … WHERE status='queued'so two workers can never grab the same job. -
get_encoding_ffmpeg_opts()translates the encoding settings into ready-to-use FFmpeg arguments (incl. the expert flag parser).
🇬🇧 English
Users
- Installation
- Getting Started
- Configuration
- Web UI
- Download System
- Download History
- AutoSync
- Calendar
- Library
- Authentication
- Notifications
- Integrations
- SyncPlay
- Anime4K Upscaling
- Encoding
- Docker
- Supported Sites
Developers