Local Flask app for building a personal library of imported Kemono posts, attachments, and creator metadata.
- Create creators and creator-specific series or groups.
- Import Kemono posts from:
https://kemono.cr/{service}/user/{user_id}/post/{post_id}https://kemono.cr/{service}/post/{post_id}
- Preview imports and choose which files to download.
- Persist post content, attachments, previews, and source metadata in SQLite.
- View saved posts with sanitized HTML formatting.
- Edit saved post titles, content, tags, and series assignment.
- Rewrite Kemono links in imported content so saved links resolve locally when possible.
- Python 3.10+
- Network access for remote Kemono imports
- Create and activate a virtual environment.
- Install dependencies:
pip install -r requirements.txt
- Start the app:
python run.py
- Open:
http://127.0.0.1:5000
Runtime data is stored locally under data/ by default and is ignored by git.
The app loads a repo-root .env file automatically when it exists, then reads configuration from environment variables:
-
Copy
.env.exampleto.envand set the values you want to keep local. -
Existing process environment variables still win over
.envvalues. -
KEMONO_LIBRARY_SECRET_KEYUse this if you want stable Flask sessions across restarts. -
KEMONO_LIBRARY_DATA_DIRBase directory for local runtime data. Defaults todata/. -
KEMONO_LIBRARY_DATABASEOverride the SQLite database path. -
KEMONO_LIBRARY_FILES_DIROverride the attachment storage directory. -
KEMONO_LIBRARY_ICONS_DIROverride the creator icon storage directory.
If KEMONO_LIBRARY_SECRET_KEY is not set, the app generates a fresh local secret on startup instead of relying on a hardcoded development value.
Run the test suite with:
pytest -q