Skip to main content
Glama

chesscom-mxcp

player_tools.cpython-311.pyc11.2 kB
� ߭[ho� �V�dZddlmZmZmZddlmZmZddlm Z ddl Z ddl Z e j e ��Zdedeeeffd�Zdedeeeffd �Zdedeeeffd �Zdedeeeffd �Zded ed edeeeffd�Zdedeeeeffd�Zded ed edefd�ZdS)z! Chess.com player-related tools. �)�Dict�Any�List)�make_api_request� get_cache_ttl)�dbN�username�returnc ��K�d|��}td��} t||����d{V��} tjd||�dd��|�dd ��d ���n4#t $r'}t �d |����Yd}~nd}~wwxYw|S#t $r}d d t|����icYd}~Sd}~wwxYw)z� Get a player's profile information from Chess.com. Args: username: The Chess.com username Returns: Player profile data including join date, status, followers, etc. �player/�player_profile�� cache_ttlNz� INSERT INTO player_profile_views (username, viewed_at, follower_count, country) VALUES ($username, CURRENT_TIMESTAMP, $followers, $country) � followersr�country�)r rrzCould not store analytics: �errorz Failed to fetch player profile: ) rrr�execute�get� Exception�logger�debug�str�r �endpointr�data�es �,/home/yori/chess-mxcp/python/player_tools.py�get_player_profiler s?����$��#�#�H��.�/�/�I�F�%�h�)�D�D�D�D�D�D�D�D�D�� <� �J��%�!�X�X�k�1�5�5��8�8�I�r�2�2��� � � � ��� <� <� <� �L�L�:�q�:�:� ;� ;� ;� ;� ;� ;� ;� ;����� <����� �� �F�F�F��D�C��F�F�D�D�E�E�E�E�E�E�E�����F���sG�B(�AA2�1B(�2 B#�<B�B(�B#�#B(�( C�2C �C� Cc ��K�d|�d�}td��} t||����d{V��}|���D]�\}}t|t��r�d|vr�|d}t jd|||�dd ��|�d i���d d ��|�d i���d d ��z|�d i���d d ��zd�����|S#t$r}ddt|����icYd}~Sd}~wwxYw)z� Get a player's chess statistics from Chess.com. Args: username: The Chess.com username Returns: Player statistics for different game types (chess_blitz, chess_rapid, etc.) r z/stats� player_statsrN�lastz� INSERT INTO rating_history (username, game_type, rating, games_played, recorded_at) VALUES ($username, $game_type, $rating, $games, CURRENT_TIMESTAMP) �ratingr�record�win�loss�draw)r � game_typer#�gamesrzFailed to fetch player stats: ) rr�items� isinstance�dictrrrrr)r rrrr(�stats� rating_datars r�get_player_statsr//s�����*��)�)�)�H��n�-�-�I�D�%�h�)�D�D�D�D�D�D�D�D�D��!%� � � � � � � �I�u��%��&�&� �6�U�?�?�#�F�m� �� �� !)�!*�)�o�o�h��:�:�"�Y�Y�x��4�4�8�8���B�B�!�I�I�h��3�3�7�7���B�B�C�!�I�I�h��3�3�7�7���B�B�C� �� � � ��� �� �D�D�D��B�#�a�&�&�B�B�C�C�C�C�C�C�C�����D���s�C?D� E�#D<�6E�<Ec��K�d|�d�}td��} t||����d{V��}|S#t$r}dt|��d�cYd}~Sd}~wwxYw)z� Check if a player is currently online on Chess.com. Args: username: The Chess.com username Returns: Dictionary with 'online' boolean value r z /is-online� current_gamesrNF)�onliner�rrrrrs r�is_player_onliner4Us�����.��-�-�-�H��o�.�.�I�2�%�h�)�D�D�D�D�D�D�D�D�D��� �� �2�2�2��#�a�&�&�1�1�1�1�1�1�1�1�����2�����2� A�A� A�Ac��,K�d|�d�}td��} t||����d{V��}t|�dg����}t jd||d���|S#t $r}gt|��d �cYd}~Sd}~wwxYw) z� Get a list of a player's current games on Chess.com. Args: username: The Chess.com username Returns: List of ongoing games r z/gamesr1rNr)z� INSERT INTO player_activity (username, game_count, checked_at) VALUES ($username, $count, CURRENT_TIMESTAMP) )r �count�r)r)rr�lenrrrrr)r rrr� game_countrs r�get_player_current_gamesr;is�����*��)�)�)�H��o�.�.�I� .�%�h�)�D�D�D�D�D�D�D�D�D������'�2�.�.�/�/� � � � �#�Z� 8� 8� :� :� :� � �� �.�.�.��c�!�f�f�-�-�-�-�-�-�-�-�����.���s�AA-�- B�7B�B�B�year�monthc ��K�t|���d��}d|�d|�d|��}tjd|||d���}|rd�|D��}d|iS t |d � ���d {V��}|�dg��}|D]�}|�d i���d d ���d|�di���d d ���d|�dd ����} tjd| ||||d�����|S#t $r} gt| ��d�cYd } ~ Sd } ~ wwxYw)z� Get a player's games for a specific month from Chess.com. Args: username: The Chess.com username year: Year (YYYY format) month: Month (1-12) Returns: List of games for the specified month �r �/games/�/z� SELECT game_data FROM chess_games_cache WHERE username = $username AND year = $year AND month = $month ORDER BY cached_at DESC �r r<r=c��g|] }|d�� S)� game_data�)�.0�games r� <listcomp>z-get_player_games_by_month.<locals>.<listcomp>�s��<�<�<�t��k�"�<�<�<�r)Nr�whiter r�_�black�end_timez� INSERT OR REPLACE INTO chess_games_cache (game_id, username, game_data, cached_at, year, month) VALUES ($game_id, $username, $game_data, CURRENT_TIMESTAMP, $year, $month) )�game_idr rDr<r=r8)r�zfillrrrrr) r r<r=� month_strr� cached_gamesr)rrGrNrs r�get_player_games_by_monthrR�s������E� � � � ��#�#�I�<��<�<�$�<�<��<�<�H��:����u� =� =�?�?�L�� �<�<�|�<�<�<������.�%�h�$�?�?�?�?�?�?�?�?�?������"�%�%��� � �D����'�2�.�.�2�2�:�r�B�B�L�L�T�X�X�g�WY�EZ�EZ�E^�E^�_i�km�En�En�L�L�qu�qy�qy�{E�GI�rJ�rJ�L�L�G� �J�� #�$�!��� �� � � � �� �� �.�.�.��c�!�f�f�-�-�-�-�-�-�-�-�����.���s�B<D� D?�#D:�4D?�:D?c��K�d|�d�}td��} t||����d{V��}|S#t$r}gt|��d�cYd}~Sd}~wwxYw)z� Get a list of available monthly game archives for a player on Chess.com. Args: username: The Chess.com username Returns: List of archive URLs r z/games/archives� game_archivesrN)�archivesrr3rs r�get_player_game_archivesrV�s�����3��2�2�2�H��o�.�.�I�1�%�h�)�D�D�D�D�D�D�D�D�D��� �� �1�1�1���Q���0�0�0�0�0�0�0�0�����1���r5c��nK�t|���d��}d|�d|�d|�d�}tjd|||d���}|r|dd S t |d � ���d {V��}tjd ||||d���|S#t $r}dt|����cYd }~Sd }~wwxYw)a Download PGN files for all games in a specific month from Chess.com. Args: username: The Chess.com username year: Year (YYYY format) month: Month (1-12) Returns: Multi-game PGN format text containing all games for the month r?r r@rAz/pgnz� SELECT pgn_data FROM chess_games_cache WHERE username = $username AND year = $year AND month = $month AND pgn_data IS NOT NULL LIMIT 1 rBr�pgn_dataF)� accept_jsonNz� UPDATE chess_games_cache SET pgn_data = $pgn WHERE username = $username AND year = $year AND month = $month )�pgnr r<r=zError downloading PGN data: )rrOrrrr)r r<r=rPr� cached_pgnrXrs r�download_player_games_pgnr\�s&�����E� � � � ��#�#�I�@��@�@�$�@�@��@�@�@�H������u� =� =�?�?�J��)��!�}�Z�(�(�7�)�(��F�F�F�F�F�F�F�F�F�� � � �� ���  � � � � ���� �7�7�7�6�c�!�f�f�6�6�6�6�6�6�6�6�����7���s�2B� B4�B/�)B4�/B4)�__doc__�typingrrr� chess_clientrr� mxcp.runtimer�json�logging� getLogger�__name__rrrr/�boolr4r;�intrRrVr\rErIr�<module>rgs�����#�"�"�"�"�"�"�"�"�"�8�8�8�8�8�8�8�8������� � � � ����� �� �8� $� $��F�s�F�t�C��H�~�F�F�F�F�D#D�S�#D�T�#�s�(�^�#D�#D�#D�#D�L2�S�2�T�#�t�)�_�2�2�2�2�(.�S�.�T�#�s�(�^�.�.�.�.�84.�c�4.��4.�S�4.�T�RU�WZ�RZ�^�4.�4.�4.�4.�n1�S�1�T�#�t�C�y�.�5I�1�1�1�1�(07�c�07��07�S�07�S�07�07�07�07�07�07rI

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/datYori/chesscom-mxcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server