Python wrapper for Chess.com API which provides public data from the chess.com website. All endpoints provided by Chess.com's API are available in the respectively named methods.
The package requires Python 3.7 or higher.
Install latest version from PyPI: pip install chess.com
- Documentation: readthedocs.org
- Published-Data API: chess.com
All the functions return a ChessDotComResponse
object. The data can be accessed in dictionary format or via attributes.
The package uses aiohttp for asynchronous requests and requests for synchronous requests to interact with the API.
from chessdotcom import get_player_profile, Client
Client.request_config["headers"]["User-Agent"] = (
"My Python Application. "
"Contact me at [email protected]"
)
response = get_player_profile("fabianocaruana")
player_name = response.json['player']['name']
#or
player_name = response.player.name
import asyncio
from chessdotcom.aio import get_player_profile
usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"]
cors = [get_player_profile(name) for name in usernames]
async def gather_cors(cors):
return await asyncio.gather(*cors)
responses = asyncio.run(gather_cors(cors))
The package offers several ways to deal with the rate limit. Every function accepts a tts
parameter which controls the number of seconds the Client
will wait before making the request. This is useful if running a lot of coroutines at once.
cors = [get_player_profile(name, tts = i / 10) for i, name in enumerate(usernames)]
The second method is to adjust the rate_limit_handler
attribute of the Client
object.
Client.rate_limit_handler.tries = 2
Client.rate_limit_handler.tts = 4
If the initial request gets rate limited the client will automatically retry the request 2 more times with an interval of 4 seconds.
Headers and and other request parameters can be set through the Client
object. Official Chess.com documentation requires adding a User-Agent
header.
from chessdotcom import Client
Client.request_config["headers"]["User-Agent"] = (
"My Python Application. "
"Contact me at [email protected]"
)
All the methods from the package will now include the header when making a request to the API.
- Email me at [email protected] or open a new Issue on Github.