Disclaimer: This project is not officially affiliated with Kahoot in any way. It is an open-source project created for educational purposes only. Use at your own risk. I bear no responsibility for any misuse of this tool.
KahootPy is a Python client for interacting with the Kahoot API, allowing you to join games, send responses, and handle events in real-time.
- Join Games: Quickly join Kahoot games using game PINs.
- Event Handling: Register handlers for various game events such as questions and game status updates.
- Real-Time Communication: Utilize WebSocket connections for real-time interaction with the Kahoot server.
- User-Friendly: Simple interface for sending packets and handling game events.
-
Install the package via pip:
pip install kahoot
-
Import and use KahootPy in your Python script:
from kahoot import KahootClient
Here's a basic example of how to use the KahootClient: Info: Check client_example.py for an example that correctly utilizes the API
import asyncio
from kahoot import KahootClient
from kahoot.packets.server.question_start import QuestionStartPacket
async def question_start(packet: QuestionStartPacket):
print(f"Question started: {packet}")
async def main():
client = KahootClient()
client.on("question_start", question_start)
await client.join_game(game_pin=3850352, username='your_username')
# Run the main function
asyncio.run(main())
- Joining a Game: Use the
join_game
method to join a game with a specific PIN and username. - Listening for Events: Register handlers for various events (e.g., questions, game status) using the
on
method.
kahoot/
βββ __init__.py # Package initialization
βββ packets/ # Packet definitions and implementations
βββ util/ # Utility functions (e.g., challenge solver, logger)
βββ exceptions.py # Custom exceptions
βββ constants.py # Constant values (e.g., USER_AGENT)
βββ README.md # Documentation
- Built using
httpx
for HTTP requests andaiocometd
for WebSocket communication. - Utilizes asynchronous programming with Python's
asyncio
for efficient real-time interaction. - Modular design with separate packet handling and utility functions for easy maintenance.
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.
Contributions are welcome! Feel free to:
- Open issues
- Submit pull requests
- Suggest new features or improvements
Vehbi
- GitHub: @vehbiu
This tool is intended for educational and personal use only. Users must ensure compliance with Kahoot's terms of service and applicable laws.
- Inspired by the need for real-time interaction with Kahoot's educational games.
Made with β€οΈ by @vehbiu