chess player api

Sort:
Oldest
io_kloud

I have deployed the chess player api written in fastapi in heroku. Given chess.com username it will return fideid, fidename and chess.com player_id.

The data are collected from chess.com api's titled and player endpoints along with fide rating xml file.

Process in compiling the data.

1. Get all usernames from titled endpoint. The data are only limited to titled players.

2. Get player info such as the name, player_id from player endpoint given username.

3. If name from player info has two words like Magnus Carlsen, transform it to "Carlsen, Magnus" and save. This transformed name will be used to lookup in the rating xml file from FIDE. If name has 3 words like aa bb cc, transform it to cc, aa bb.

4. Get the fide xml file and execute merge on fide_name and transformed chess.com player name.

There are chess.com names that have not matched in the FIDE names, Overall this is not a complete mapping, there are usernames that cannot be mapped to FIDE names because sometimes there are no names specified, etc. I tried manual editing to some top players but not much. I am using this functionality with my other app under development to find the  chess.com username in FIDE database.

If you want to help to expand the data, I need chess.com_username : fide_name mapping.

Example,

Chefshouse : Ding, Liren

Ding, Liren name is in fide: https://ratings.fide.com/profile/8603677

 

Home page

https://api-chess-player.herokuapp.com/

Endpoint

https://api-chess-player.herokuapp.com/chess/{username}

Example

https://api-chess-player.herokuapp.com/chess/hikaru

Response

{"fideid":2016192,"fidename":"Nakamura, Hikaru","chessplayerid":15448422}

Query on the web with /chess/{username} endpoint

https://api-chess-player.herokuapp.com/docs#/default/username_chess__username__get

1. Press try out

2. input username

3. Press execute

4. Look at the response body

 

Others

Here is an api to get player fide info given fideid, this is not my repo but I use it in my other app called head to head record matchup which is under development.

https://github.com/xRuiAlves/fide-ratings-scraper

 

 

dimpoul

Since the Titled players on chess.com can choose to not fill in the Name section, I don't see how this mapping could ever be cemplete...

io_kloud

Perhaps not complete but maximize.

Example "Nigel Short" in chess.com, but in FIDE it is "Short, Nigel D", the issue is the D. The algorithm I have can only do "Short, Nigel". I keep a list for this kind of exception and next month when I run the script this will be added in the database.

io_kloud

Checking the top 50 in the leaderboard for live_blitz these are the usernames that is not in my database.

not found bongcloudmajesty
not found wonderboy05
not found play_late_no_sleep
not found floatypotato
not found xaola
not found micki-taryan
not found fightermann
not found onemanarmy93
not found sviridov_valery
not found den_kuzo
not found black_knight2209

 

bongcloudmajesty - a strong player but no title and no name, (no issue, the player chooses not to show the name)

wonderboy05 - this player is a GM per FIDE but is not listed in the titled endpoint, this will be added in special names and will be recorded in the database next month.

play_late_no_sleep - an FM but no name, (no issue)

floatypotato - a GM but no name (no issue)

xaola - an FM but no name, (no issue)

micki-taryan - a GM with name "Haik Martirosyan", but its FIDE name is "Martirosyan, Haik M.", I can add this to special names and will be added in the database next month.

fightermann - not a titled player, the name is "Robert James Fischer", (no issue)

onemanarmy93 - a GM but no name, (no issue)

sviridov_valery - an NM not recorded in database at this time, priority is on GM, WGM, IM, WIM, FM, WFM, CM and WCM. (no issue)

 

dimpoul

Hi @io_kloud, I am not trying to discourage you from continuing this effort, as I see a lot of value in this mapping that you are trying to get. However, I believe that some of these titled players (either the ones with the usernames that you mentioned or the ones further down in the leaderboards) might just prefer to remain anonymous and this is why they did not choose to fill their name under the "Name" section in their profile.

io_kloud

True indeed, so those players will not be recorded.

io_kloud

I got a python module called fuzzywuzzy. It will match names from chess.com and fide. It will generate candidate matches with fuzzy score, high fuzzy score is a close match. Example.

 

chess.com_name: Lance Henderson de La Fuente, fidename_fuzzyresult: [('Henderson de La Fuente, Lance', 100), ('Henderson de La Fuente, Andrea', 77)]


chess.com_name: Alex Fier, fidename_fuzzyresult: [('Fier, Alexandr', 82), ('Faille, Alex', 80)]


chess.com_name: Abhijeet Kunte, fidename_fuzzyresult: [('Kunte, Abhijit', 89), ('Gupta, Abhijeet', 79)]


chess.com_name: Alder Escobar, fidename_fuzzyresult: [('Escobar, Alexis', 81), ('Escobar Forero, Alder', 79)]


chess.com_name: Andres F Gallego, fidename_fuzzyresult: [('Galle, Andre', 81), ('Gallego Andres, Carles', 81)]


chess.com_name: Aaron Summerscale, fidename_fuzzyresult: [('Summerscale, Aaron P', 94), ('Huemmecke, Aaron', 75)]


chess.com_name: Akshayraj Kore, fidename_fuzzyresult: [('Akshayraj, Kore', 100), ('Akshay, Khator', 74)]


chess.com_name: Aleksei Aleksandrov, fidename_fuzzyresult: [('Aleksandrov, Aleksej', 95), ('Alekseev, Aleksandr', 86)]


chess.com_name: Alex Huzman, fidename_fuzzyresult: [('Huang, Alex', 86), ('Han, Alex', 84)]


chess.com_name: Alex Onischuk, fidename_fuzzyresult: [('Onischuk, Alena', 89), ('Onischuk, Alexander', 84)]


chess.com_name: Aleksander Goloshchapov, fidename_fuzzyresult: [('Goloshchapov, Alexander', 93), ('Kolchanov, Aleksandr', 81)]


chess.com_name: Alex Stripunsky, fidename_fuzzyresult: [('Stripunsky, Alexander', 86), ('Pensky, Alex', 77)]


chess.com_name: Haddouche Mohamed, fidename_fuzzyresult: [('Haddouche, Mohamed', 100), ('Chouchane, Mohamed', 82)]


chess.com_name: Amin Tabatabaei, fidename_fuzzyresult: [('Tabatabaei, M. Amin', 94), ('Taba-Tabai, Mehin', 84)]


chess.com_name: amirreza pourramezanali, fidename_fuzzyresult: [('Pourramezanali, Amirreza', 100), ('Ramzannia, Amirreza', 78)]


chess.com_name: Andrejs Sokolovs, fidename_fuzzyresult: [('Kozlovs, Andrejs', 90), ('Sokolov, Andrei', 87)]


chess.com_name: Andres Rodriguez Vila, fidename_fuzzyresult: [('Rodriguez Vila, Andres', 100), ('Rodriguez, Andres', 86)]


chess.com_name: Arjun Kalyan, fidename_fuzzyresult: [('Arjun Kalyan', 100), ('Kolani, Arjun', 83)]


chess.com_name: Anurag Mhamal, fidename_fuzzyresult: [('Anurag, Mhamal', 100), ('Anurag Malik', 80)]


chess.com_name: Wang Hao, fidename_fuzzyresult: [('Wang, Hao', 100), ('Wang, Hanbo', 89)]

 

In the first example, chess.com_name: Lance Henderson de La Fuente, fidename_fuzzyresult: [('Henderson de La Fuente, Lance', 100), ('Henderson de La Fuente, Andrea', 77)]

The fidename 'Henderson de La Fuente, Lance' got a fuzzy score of 100, upon checking the fide page the name is a match.

 

Of the samples shown it missed chess.com_name: Alex Onischuk with the result

chess.com_name: Alex Onischuk, fidename_fuzzyresult: [('Onischuk, Alena', 89), ('Onischuk, Alexander', 84)]

The correct match 'Onischuk, Alexander' only got 84.

 

It also missed with Alex Huzman and Alder Escobar their scores are below 90.

 

It seems like a score of 95 and above can be considered a match without the need for verification and then 80 and above needs to be verified. I will replace my old algorithm with this fuzzy logic.

 

 

io_kloud

Page and database updated.

https://api-chess-player.herokuapp.com/

 

api testing:

https://api-chess-player.herokuapp.com/docs#/default/username_chess__username__get

 

dimpoul

This is some amazing work man, and it all looks very neat to me! I can tell you are a very professional engineer and cheers for that! Feel free to take a look at my chess related projects and please let me know what you think:

www.skakibot.com

-Dimpoul

io_kloud

How to interpret the "Degrees - Find out the shortest victory path between you and the world champion GM Magnus Carlsen in blitz..."?

 

I see some interesting commands but could not figure out where to input it to get a response except on the three highlighted commands.

 

The dashboard looks like this.

axIRTS6.png

 

io_kloud

100+ players are added in the api. FIDE data are based on 2022-03-001 rating list.

https://api-chess-player.herokuapp.com/

 

Testing

https://api-chess-player.herokuapp.com/docs#/default/username_chess__username__get