Skip to main content

Python Wrapper for Chess.com API

Project description

Python wrapper for Chess.com Public API

Maintained Fork

Github Issues GitHub Forks Github Stars License: MIT PyPI - Version PyPI - Downloads Python package

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.

Installation

The package requires Python 3.9 or higher.

Install latest version from PyPI:

pip install nav-chess.com

Resources

Usage

Configuring Headers

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@example.com"
)

Retrieving Data

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.

Synchronous

from chessdotcom import get_player_profile, Client

Client.request_config["headers"]["User-Agent"] = (
    "My Python Application. "
    "Contact me at email@example.com"
)
response = get_player_profile("fabianocaruana")

player_name = response.json['player']['name']
#or
player_name = response.player.name

Asynchronous

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))

Managing Rate Limit

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.

All the methods from the package will now include the header when making a request to the API.

Contact

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

nav_chess_com-2.2.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nav_chess_com-2.2.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page