akipy
A Python wrapper library for the Akinator game API. Akinator is the popular web-based game that guesses characters you're thinking of by asking a series of questions. This library allows you to integrate Akinator's functionality into your Python applications with both synchronous and asynchronous support.
Table of Contents
Features
- Both synchronous and asynchronous API support
- Context manager support for automatic resource cleanup
- Type hints for better IDE support
- Comprehensive error handling with custom exceptions
- Multiple language support
- Child mode support
- Optional Cloudflare bypass via FlareSolverr, TRAWL, or any FlareSolverr v2-compatible solver
Quick Links
Installation
pip install akipy
Usage
There is both synchronous and asynchronous variants of akipy available.
Synchronous: from akipy import Akinator
Asynchronous: from akipy.async_akinator import Akinator
I'll provide a sample usage for synchronous usage of Akinator.
All the examples are also in the project's examples folder. So please check them out as well.
import akipy
aki = akipy.Akinator()
aki.start_game()
while not aki.win:
ans = input(str(aki) + "\n\t")
if ans == "b":
try:
aki.back()
except akipy.CantGoBackAnyFurther:
pass
else:
try:
aki.answer(ans)
except akipy.InvalidChoiceError:
pass
print(aki)
print(aki.name_proposition)
print(aki.description_proposition)
print(aki.pseudo)
print(aki.photo)
Cloudflare / challenge solvers (optional)
If Akinator is behind Cloudflare, pass a solver that speaks the FlareSolverr v2 POST /v1 API:
| Solver | Notes |
|---|---|
| FlareSolverr | Cloudflare proxy |
| TRAWL | FlareSolverr-compatible API |
| Other v2-compatible proxies | Same request format |
Direct requests run first. On a Cloudflare challenge, akipy calls the solver once, applies cookies and User-Agent to the client, then continues over normal HTTP.
Run a solver locally
FlareSolverr:
docker run -d --name=flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest
TRAWL:
docker run -d --name=trawl -p 8191:8191 --shm-size=1gb ghcr.io/germondai/trawl:latest
Use with akipy
import akipy
# FlareSolverr, TRAWL, or any compatible host
aki = akipy.Akinator(solver_url="http://localhost:8191")
# aki = akipy.Akinator(solver_url="https://trawl.example.com")
# aki = akipy.Akinator(solver_url="localhost:8191") # defaults to http
# aki = akipy.Akinator(solver_url="https://fs.example.com/v1")
aki.start_game()
Or set the env var:
export AKIPY_SOLVER_URL="http://localhost:8191"
AKIPY_FLARESOLVERR_URL and flaresolverr_url= still work as aliases.
CI integration tests start FlareSolverr as a service on the runner (http://127.0.0.1:8191). Remote public solvers are often unreachable from GitHub Actions (403 from edge WAF).
Errors
| Exception | When |
|---|---|
CloudflareBlockedError |
Challenge detected and no solver_url configured |
SolverError |
Solver unreachable or returned a non-ok status (FlareSolverrError is an alias) |
Contributing
For contributing to this library, please check CONTRIBUTING.md
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file akipy-1.5.0.tar.gz.
File metadata
- Download URL: akipy-1.5.0.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f82aac7ec384ec9322e559a5a3273d875a6fe17f7d4751edc20dafc46d435db6
|
|
| MD5 |
2685f2f00f06c2de3bb9bc2577bc8f46
|
|
| BLAKE2b-256 |
dedf7d0370df8f5b0cfe572b4302a2c2c9784d1918e7e4d2101bc6ee5ade4240
|
File details
Details for the file akipy-1.5.0-py3-none-any.whl.
File metadata
- Download URL: akipy-1.5.0-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94c57adf40108331bbb323ccdf092bf813558651a52b22805ddb9100af8fc633
|
|
| MD5 |
af7dd321a79d559031b535dd49e2eb40
|
|
| BLAKE2b-256 |
7ecdd0165dc23a69489512a4a6437b430ab4d7f5f7be5ae2636d8c50029757f7
|