Metadata-Version: 2.1
Name: asyncakinator
Version: 1.6
Summary: An async API wrapper for Akinator, written in Python.
Author-email: avizum <juliusrt@outlook.com>
License: MIT License
Project-URL: homepage, https://github.com/avizum/asyncakinator
Project-URL: documentation, https://asyncakinator.readthedocs.io/
Project-URL: repository, https://github.com/avizum/asyncakinato
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
Provides-Extra: docs
License-File: LICENSE

asyncakinator
=============


.. image:: https://discord.com/api/guilds/751490725555994716/embed.png
   :target: https://discord.gg/muTVFgDvKf
   :alt: Support Server Invite

An async API wrapper for the online game, Akinator, written in Python.

`Akinator <https://en.akinator.com/>`_ is a web-based game which tries to determine what character you are thinking of by asking a series of questions.


Installing
----------

To install, just run the following command:

.. code-block:: shell

    # MacOS/Linux
    python3 -m pip install -U asyncakinator

    # Windows
    py -3 -m pip install -U asyncakinator


Requirements
~~~~~~~~~~~~
- Python ≥3.9

- ``aiohttp``


Documentation
-------------
Documention can be found `here. <https://asyncakinator.readthedocs.io/en/latest/>`_


Quick Examples
--------------

Here's a quick little example of the library being used to make a simple, text-based Akinator game:

.. code-block:: python

    import asyncio

    from asyncakinator import (
        Akinator,
        Answer,
        CanNotGoBack,
        InvalidAnswer,
        Language,
        NoMoreQuestions,
        Theme
    )


    game = Akinator(
        language=Language.ENGLISH,
        theme=Theme.ANIMALS,
    )


    async def main():
        question = await game.start()

        while game.progression <= 80:
            print(question)
            user_input = input("Answer:  ")
            try:
                answer = Answer.from_str(user_input)
            except InvalidAnswer:
                print("Invalid answer")
                continue
            try:
                question = await game.answer(answer)
            except CanNotGoBack:
                print("This is the first question, you can't go back.")
                continue
            except NoMoreQuestions:
                break

        await game.win()

        correct = input(
            f"You are thinking of {game.first_guess.name} ({game.first_guess.description}). "
            f"Am I correct?\n{game.first_guess.absolute_picture_path}\n---\nAnswer:  "
        )
        if Answer.from_str(correct) == Answer.YES:
            print("Nice.")
        else:
            print("Maybe next time.")
        await game.close()


    asyncio.run(main())
