Python client for Chess.com API
Project description
Python client for Chess.com Public API
Python client for Chess.com API which provides public data from the chess.com website.
Installation
The package requires Python 3.8 or higher.
Install latest version from PyPI pip install chess.com
Resources
- Documentation: readthedocs.org
- Published-Data API: chess.com
Usage
Retrieving Data
The package uses aiohttp for asynchronous requests and requests for synchronous requests to interact with the API.
Using client instance
from chessdotcom import ChessDotComClient
client = ChessDotComClient(user_agent = "My Python Application...")
response = client.get_player_profile("fabianocaruana")
response.player.name # 'Fabiano Caruana'
response.player.title # 'GM'
response.player.last_online_datetime # datetime.datetime(2024, 10, 25, 20, 8, 28)
response.player.joined_datetime # datetime.datetime(2013, 3, 17, 15, 14, 32)
# See readthedocs for full documentation of responses
# or access the source
response.json['player']['name'] # 'Fabiano Caruana'
Using functions
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")
Asynchronous
from chessdotcom import ChessDotComClient
client = ChessDotComClient(user_agent = "My Python Application...", aio = True)
usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"]
cors = [client.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
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 pass rate_limit_handler option to the client.
from chessdotcom import RateLimitHandler
client = ChessDotComClient(
rate_limit_handler = RateLimitHandler(tts = 4,retries = 2)
)
If the initial request gets rate limited the client will automatically retry the request 2 more times with an interval of 4 seconds.
Available Endpoints
Player Data
- Profile
- Stats
- Clubs
- Game archives
- Current games
- Games by month
- Games by month PGN
- Tournaments
- Titled players
- Team matches
- Current games to move
Clubs
Tournaments
Team Matches
Countries
Daily Puzzle
Other
Reporting Issues
Chess.com API is subject to change. Smoke tests are ran daily to make sure the package is working correctly.
Please open an Issue if you spot any bugs.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chess_com-3.13.0.tar.gz.
File metadata
- Download URL: chess_com-3.13.0.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e06eb6d7740011574e4af9ea0e808a96d4bddade85dee76ff595bf26369bc1fd
|
|
| MD5 |
482188fa9bddd19426367bf5f547bcf5
|
|
| BLAKE2b-256 |
59d251ebf748fb337e2acb351598ecc9f58d8e967cb77cc60e1882452a606d3d
|
File details
Details for the file chess_com-3.13.0-py3-none-any.whl.
File metadata
- Download URL: chess_com-3.13.0-py3-none-any.whl
- Upload date:
- Size: 49.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11fe0999a681b93385c8d5dabf9d692e734fa250fbe58e3717f9f7cb98f98981
|
|
| MD5 |
786b1fe27c1dc33d22fd038ff19a4d78
|
|
| BLAKE2b-256 |
e9f4ef4860a2be9b2f6d4f7126c181f3554b711e577ec1e7613eeefb886f7ab6
|