A Python package for interacting with the (private) Kahoot! Player API
Project description
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.
kahoot-py
KahootPy is a Python client for interacting with the Kahoot API, allowing you to join games, send responses, and handle events in real-time.
🌟 Features
- 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.
🚀 Quick Start
-
Install the package via pip:
pip install kahoot
-
Import and use KahootPy in your Python script:
from kahoot import KahootClient
🛠️ Example Usage
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())
🎉 Event Handlers
- 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.
📁 Project Structure
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
⚙️ Technical Details
- 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.
📝 License
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Feel free to:
- Open issues
- Submit pull requests
- Suggest new features or improvements
👤 Author
Vehbi
- GitHub: @vehbiu
🔒 Responsible Use
This tool is intended for educational and personal use only. Users must ensure compliance with Kahoot's terms of service and applicable laws.
🙏 Acknowledgments
- Inspired by the need for real-time interaction with Kahoot's educational games.
📊 Stats
Made with ❤️ by @vehbiu
Project details
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
File details
Details for the file kahoot-1.1.0.tar.gz
.
File metadata
- Download URL: kahoot-1.1.0.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2462dbb87770127535414036528edb716319ba54f58448fd42e1d29c2c3ba703 |
|
MD5 | aff6b911377dc0f324f4321267e72921 |
|
BLAKE2b-256 | 2d62bc738cee82c2f7c9a8fbc167215da1deb2c31f0f5fc9e84f41acfe172a5d |
File details
Details for the file kahoot-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: kahoot-1.1.0-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b8725892a5b88334477e7132b19c5be78861d29d19905dd233f37342ae39f60 |
|
MD5 | 98004fa81b1a5bef226afd0fdb5904d9 |
|
BLAKE2b-256 | 81094072adeb412ea9419e36677064d12f392e5bf66789f258c11ff861ae0c81 |