# novelai-api
Python API for the NovelAI REST API
This module is intended to be used by developers as a helper for using NovelAI's REST API.
| Category | Badges |
|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Pypi | [![PyPI](https://img.shields.io/pypi/v/novelai-api)](https://pypi.org/project/novelai-api) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/novelai-api)](https://pypi.org/project/novelai-api) [![PyPI - License](https://img.shields.io/pypi/l/novelai-api)](https://pypi.org/project/novelai-api/) [![PyPI - Format](https://img.shields.io/pypi/format/novelai-api)](https://pypi.org/project/novelai-api/) |
| Quality checking | [![Python package](https://github.com/Aedial/novelai-api/actions/workflows/python-package.yml/badge.svg)](https://github.com/Aedial/novelai-api/actions/workflows/python-package.yml) [![Python package](https://github.com/Aedial/novelai-api/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Aedial/novelai-api/actions/workflows/codeql-analysis.yml) [![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/PyCQA/pylint) [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) |
| Stats | [![GitHub top language](https://img.shields.io/github/languages/top/Aedial/novelai-api)](https://github.com/Aedial/novelai-api/search?l=python) ![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/Aedial/novelai-api) ![GitHub repo size](https://img.shields.io/github/repo-size/Aedial/novelai-api) ![Pypi package size](https://byob.yarr.is/Aedial/novelai-api/pypi-size) ![GitHub issues](https://img.shields.io/github/issues-raw/Aedial/novelai-api) ![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/Aedial/novelai-api) |
| Activity | ![GitHub last commit](https://img.shields.io/github/last-commit/Aedial/novelai-api) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/Aedial/novelai-api/v0.31.0) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Aedial/novelai-api) |
Retired versions: 3.7.2
Final commit of retired versions can be found with the tag `py<version>` (e.g. `py3.7.2`).
# Usage
Download via [pip](https://pypi.org/project/novelai-api):
```
pip install novelai-api
```
## Using the module via Command Line
### Get access key
Get the access key for your account. This key is used to login to the API through the /login endpoint.
```bash
python -m novelai_api get_access_key <username> <password>
```
### Get access token
Login to the API and get the access token. This token is valid 30 days and is required to use most of the API.
Take care to properly escape the arguments if they contain special characters.
```bash
python -m novelai_api get_access_token <username> <password>
```
### Sanity check
Run a sanity check on your user content. It will print what content couldn't be decrypted.
Take care to properly escape the arguments if they contain special characters.
```bash
python -m novelai_api sanity_check <username> <password>
```
### Decode
Decode a b64 encoded tokenized text. This will print the tokens and the decoded text.
```bash
python -m novelai_api decode <model> <data>
```
## Using the module in your code
A full list of examples is available in the [example](example) directory
The API works through the NovelAIAPI object.
It is split in 2 groups: NovelAIAPI.low_level and NovelAIAPI.high_level
### low_level
The low level interface is a strict implementation of the official API (<https://api.novelai.net/docs>).
It only checks for input types via assert, and output schema if NovelAIAPI.low_level.is_schema_validation_enabled is True
### high_level
The high level interface builds on the low level one for easier handling of complex settings.
It handles many tasks from the frontend
# Development
All relevant objects are in the [novelai_api](novelai_api) directory.
The [Poetry](https://pypi.org/project/poetry/) package is required (`pip install poetry`) as the venv manager.
## Contributing
You can contribute features and enhancements through PR. Any PR should pass the tests and the pre-commits before submission.
The pre-commit hook can be installed via
```
poetry run nai-pre-commit
```
## Testing against the API
To run against the API, you can use `poetry run nai-test-api`.
[API](tests/api)
## Testing against the mocked API
To run against the mocked API, you can use `poetry run nai-test-mock`.
| :warning: WIP, does not work yet :warning: |
|--------------------------------------------|
[Mock](tests/mock)
## Docs
To build the docs, run
```
poetry run nai-build-docs
```
The docs will be locally viewable at docs/build/html/index.html
Raw data
{
"_id": null,
"home_page": "https://github.com/Aedial/novelai-api",
"name": "novelai-api",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0.0,>=3.8.10",
"maintainer_email": null,
"keywords": "python, NovelAI, NAI, API",
"author": "Aedial",
"author_email": "aedial.dev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/a7/d8/ba8447e19484d202f55b9e1ac9d7adde451dfd1bd930dd3bb627734b9cb4/novelai_api-0.31.0.tar.gz",
"platform": null,
"description": "# novelai-api\nPython API for the NovelAI REST API\n\nThis module is intended to be used by developers as a helper for using NovelAI's REST API.\n\n| Category | Badges |\n|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Pypi | [![PyPI](https://img.shields.io/pypi/v/novelai-api)](https://pypi.org/project/novelai-api) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/novelai-api)](https://pypi.org/project/novelai-api) [![PyPI - License](https://img.shields.io/pypi/l/novelai-api)](https://pypi.org/project/novelai-api/) [![PyPI - Format](https://img.shields.io/pypi/format/novelai-api)](https://pypi.org/project/novelai-api/) |\n| Quality checking | [![Python package](https://github.com/Aedial/novelai-api/actions/workflows/python-package.yml/badge.svg)](https://github.com/Aedial/novelai-api/actions/workflows/python-package.yml) [![Python package](https://github.com/Aedial/novelai-api/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Aedial/novelai-api/actions/workflows/codeql-analysis.yml) [![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/PyCQA/pylint) [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) |\n| Stats | [![GitHub top language](https://img.shields.io/github/languages/top/Aedial/novelai-api)](https://github.com/Aedial/novelai-api/search?l=python) ![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/Aedial/novelai-api) ![GitHub repo size](https://img.shields.io/github/repo-size/Aedial/novelai-api) ![Pypi package size](https://byob.yarr.is/Aedial/novelai-api/pypi-size) ![GitHub issues](https://img.shields.io/github/issues-raw/Aedial/novelai-api) ![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/Aedial/novelai-api) |\n| Activity | ![GitHub last commit](https://img.shields.io/github/last-commit/Aedial/novelai-api) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/Aedial/novelai-api/v0.31.0) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Aedial/novelai-api) |\n\nRetired versions: 3.7.2\nFinal commit of retired versions can be found with the tag `py<version>` (e.g. `py3.7.2`).\n\n# Usage\nDownload via [pip](https://pypi.org/project/novelai-api):\n```\npip install novelai-api\n```\n\n## Using the module via Command Line\n\n### Get access key\nGet the access key for your account. This key is used to login to the API through the /login endpoint.\n```bash\npython -m novelai_api get_access_key <username> <password>\n```\n\n### Get access token\nLogin to the API and get the access token. This token is valid 30 days and is required to use most of the API.\nTake care to properly escape the arguments if they contain special characters.\n```bash\npython -m novelai_api get_access_token <username> <password>\n```\n\n### Sanity check\nRun a sanity check on your user content. It will print what content couldn't be decrypted.\nTake care to properly escape the arguments if they contain special characters.\n```bash\npython -m novelai_api sanity_check <username> <password>\n```\n\n### Decode\nDecode a b64 encoded tokenized text. This will print the tokens and the decoded text.\n```bash\npython -m novelai_api decode <model> <data>\n```\n\n## Using the module in your code\nA full list of examples is available in the [example](example) directory\n\nThe API works through the NovelAIAPI object.\nIt is split in 2 groups: NovelAIAPI.low_level and NovelAIAPI.high_level\n\n### low_level\nThe low level interface is a strict implementation of the official API (<https://api.novelai.net/docs>).\nIt only checks for input types via assert, and output schema if NovelAIAPI.low_level.is_schema_validation_enabled is True\n\n### high_level\nThe high level interface builds on the low level one for easier handling of complex settings.\nIt handles many tasks from the frontend\n\n\n# Development\nAll relevant objects are in the [novelai_api](novelai_api) directory.\nThe [Poetry](https://pypi.org/project/poetry/) package is required (`pip install poetry`) as the venv manager.\n\n## Contributing\nYou can contribute features and enhancements through PR. Any PR should pass the tests and the pre-commits before submission.\nThe pre-commit hook can be installed via\n```\npoetry run nai-pre-commit\n```\n\n## Testing against the API\nTo run against the API, you can use `poetry run nai-test-api`.\n\n[API](tests/api)\n\n## Testing against the mocked API\nTo run against the mocked API, you can use `poetry run nai-test-mock`.\n\n| :warning: WIP, does not work yet :warning: |\n|--------------------------------------------|\n\n[Mock](tests/mock)\n\n## Docs\nTo build the docs, run\n```\npoetry run nai-build-docs\n```\nThe docs will be locally viewable at docs/build/html/index.html\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python API for the NovelAI REST API",
"version": "0.31.0",
"project_urls": {
"Bug Tracker": "https://github.com/Aedial/novelai-api/issues",
"Homepage": "https://github.com/Aedial/novelai-api",
"Repository": "https://github.com/Aedial/novelai-api"
},
"split_keywords": [
"python",
" novelai",
" nai",
" api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a721fef063cbd3a48fb723adfa9a07bed963532eb13c13ff291804f0e3e6177e",
"md5": "8430f3dbf7ce78d65a6a922b49ee48bd",
"sha256": "691643536504751d1bdf43b320ce2004f5c0427640f2dd20fe1df1223b27ce7a"
},
"downloads": -1,
"filename": "novelai_api-0.31.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8430f3dbf7ce78d65a6a922b49ee48bd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.8.10",
"size": 6413112,
"upload_time": "2024-10-01T18:20:04",
"upload_time_iso_8601": "2024-10-01T18:20:04.868295Z",
"url": "https://files.pythonhosted.org/packages/a7/21/fef063cbd3a48fb723adfa9a07bed963532eb13c13ff291804f0e3e6177e/novelai_api-0.31.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a7d8ba8447e19484d202f55b9e1ac9d7adde451dfd1bd930dd3bb627734b9cb4",
"md5": "9ec8888325a2dd1838bd4b2aa23ae15f",
"sha256": "9359dc8c23deb091477674a1238bfbff3314c2204c70f4e9cedac619d4a2563a"
},
"downloads": -1,
"filename": "novelai_api-0.31.0.tar.gz",
"has_sig": false,
"md5_digest": "9ec8888325a2dd1838bd4b2aa23ae15f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.8.10",
"size": 6309400,
"upload_time": "2024-10-01T18:20:07",
"upload_time_iso_8601": "2024-10-01T18:20:07.002678Z",
"url": "https://files.pythonhosted.org/packages/a7/d8/ba8447e19484d202f55b9e1ac9d7adde451dfd1bd930dd3bb627734b9cb4/novelai_api-0.31.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-01 18:20:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Aedial",
"github_project": "novelai-api",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "novelai-api"
}