Skip to content

About

ChessStats is a console app used to retrieve monthly play time, ratings and top openings for any chessdotcom user.

Topics

Resources

Stars

6 stars

Watchers

3 watching

Forks

Repository files navigation

ChessStats for Chess.com

About

ChessStats is a console app used to retrieve monthly play time, ratings and top openings for any chess.com user. Note that variant game types are not included in the stats (displayed as 'X' during game retrieval) and unrated game ('NR') information is time only. The project site is here.

Installation

Download the latest version from the Releases page, extract ChessStats.exe (or ChessStats if you are on Linux) and put it where you want it to go. Note that the cache and reporting directories are created relative to the executable's location.

Usage

chessstats [chessdotcom username]

or

chessstats -refresh

or just double click the exe and you will be prompted for a chess.com username unless the CHESSSTATS_DEFAULT_PARAMS environment veriable is set in which case that will be taken as the default.

(Linux Only) Pre v0.8.0

If you receive the following error you are missing 'libgdiplus'.

The type initializer for 'Gdip' threw an `exception.`

To resolve run the following:

> apt-get update
> apt-get install -y libgdiplus

Docker

Every release publishes a container image for linux/amd64 and linux/arm64 to the GitHub Container Registry. It runs ChessStats, refreshes the reports on a schedule and serves them with nginx, so a single container is enough to publish a set of players' stats.

docker pull ghcr.io/hyper-dragon/chessstats:latest

The package is public, so no registry login is needed. Use a version tag (ghcr.io/hyper-dragon/chessstats:0.8.3) if you want a fixed release; latest follows the most recent one. The image contains a self-contained single-file build of the tool on top of the .NET runtime dependencies, so nothing else has to be installed.

Running it

docker run -d --name chessstats \
  -p 18080:80 \
  -e CHESS_USERS="Hyper-Dragon GothamChess" \
  -v chessstats-results:/app/ChessStatsResults \
  -v chessstats-cache:/app/ChessStatsCache \
  ghcr.io/hyper-dragon/chessstats:latest

Then browse to http://localhost:18080/ for the index page. The first report is generated on start, so allow a few minutes on an empty volume - docker logs -f chessstats shows the progress.

Environment variable Default Purpose
CHESS_USERS (empty) Space separated usernames to report on. Each one is created as a directory under /app/ChessStatsResults.
REFRESH_INTERVAL 86400 Seconds between refreshes.
Volume Contents
/app/ChessStatsResults The generated reports and index.html - this is what nginx serves.
/app/ChessStatsCache The downloaded monthly game archives, so restarts do not re-download history.

Choosing the accounts

A directory under /app/ChessStatsResults is an account to report on - -refresh works from that directory list. CHESS_USERS simply creates those directories at start up, so either approach works, and pre-seeding the volume is the more declarative of the two:

docker run --rm -v chessstats-results:/results alpine \
  sh -c "mkdir -p /results/Hyper-Dragon /results/GothamChess"

Use the spelling Chess.com reports for the account (the name in its profile URL). A directory seeded in a different case is adopted and renamed, so hyper-dragon becomes Hyper-Dragon on the first run. Removing an account is just removing its directory.

Notes

  • Reports are large - tens of megabytes for an active player - because everything is embedded so they work offline. nginx serves them gzipped.
  • Give the container memory headroom. A very active account holds its whole game list plus the generated report in memory at once.
  • Exit codes are 0 (ok), 1 (finished with warnings) and 2 (fatal).

Offline Reports & Network Access

Every report is a single self-contained HTML file: graphs, images, fonts and CSS are all embedded, so it can be copied anywhere and opened without a network connection.

To make that possible the report graphics (the player placeholder image, the heading icon and the Montserrat 700/800 fonts) are compiled into the executable as embedded resources instead of being downloaded at run time. Chess.com retired the CDN those files used to be served from, which previously made every run fail with 521 before any data had been retrieved (issue #27).

The only network access during a run is the Chess.com public API itself, plus the player's avatar - and if that avatar cannot be downloaded the built-in placeholder is used instead.

Version History

Version 0.8.3

  • Report graphics (images and fonts) are now embedded in the executable instead of being downloaded at run time. Chess.com retired the CDN they were fetched from, which made every run fail before any data was retrieved (issue #27)
  • A player with no avatar now falls back to the built-in placeholder rather than failing the run
  • An account with no completed games is reported as a single notice and no longer fails the run
  • A results directory seeded by hand is matched case-insensitively and adopted, so report links stay valid on case-sensitive filesystems
  • Exit codes are 0 (ok), 1 (completed with warnings) and 2 (fatal) - negative codes both collapse to 254 on Linux
  • Sends a contactable User-Agent, as required by the Chess.com API policy
  • Assembly/file version metadata now matches the release number
  • Moved to .NET 10 (.NET 6 is out of support)

Version 0.8.2

  • Fix for issue #26 - Cloudflare blocking requests to CDC

Version 0.8.1

  • Improved HTML Report
    • Only display stats graphs for the time controls played by the CDC user

Version 0.8

  • Full CAPS Scores for all games analysed on Chess.com
    • All games graph
    • 3 Game Rolling Average
    • 10 Game Rolling Average
  • Improved Graph Rendering (.svg)
  • Removed the dependency on libgdiplus (linux only)
  • Changed the report section ordering
  • Added a linux arm build

Version 0.7

  • CAPS scores, limited to the last 20 games, now included
  • Openings for the last 40 games table added
  • Various Html improvements including:
    • Favicon added to pages
    • Image used for the background
    • Embedded fonts
    • Dark tables
  • The index file is only generated once per run
  • Fixed v0.6 missing assembly issue
  • Removed Microsoft.CodeAnalysis.FxCopAnalyzers (deprecated)
  • Switched to .Net 6.0

Version 0.6

  • Graphs for ratings and monthly win/loss averages (included in Html Reports)
  • Html index file generation ([location of executable]/ChessStatsResults/index.html)
  • Several minor fixes
  • CAPS scores removed due to chess.com site changes

Version 0.5

  • Output files written to a reporting directory ([location of executable]/ChessStatsResults/[Username]/) containing:
    • A full (self-contained) HTML Report
    • The original text report
    • Full PGN files (all games) for each time control
    • CAPs Data in TSV format for easy spreadsheet import
  • A refresh data option (for each user in the reporting directory)
  • Caching for previously retrieved game and CAPs data at ([location of executable]/ChessStatsCache/CacheV1/[Username])
  • Error handling improvements
  • Several minor display fixes

Version 0.4

  • CAPS averages are broken down by time control.
    • These are available for games that have been analysed on the chess.com website (games with no analysis are marked with '-' on ingest).

Known Issues

  • Version 0.8.x
    • None
  • Version 0.7.x
    • The 'Last 40 Openings' section only displays the top 15 for black and white...so the totals may not add up to 40!
  • Version 0.6
    • CAPS scores are not available due to Chess.com site changes
    • Error: An assembly specified in the application dependencies manifest (ChessStats.deps.json) was not found
      • Delete the folder C:\Users<username>\AppData\Local\Temp\ .net\ and rerun
    • Error: Unable to write index.html
      • Make sure that index.html is not in use and rerun

Dependencies

  • ChessDotComSharp @nullablebool
  • Chess.com Api
  • Chess.com website HTML for CAPs extraction (broken)
  • Chess.com undocumented endpoint for CAPs extraction (last 20 games only)
  • Project Site

Acknowledgements

  • Chess.Com @ChessCom
  • Covid-19 & Social Isolation
  • Thanks to chess.com users BaronVonChickenpants and maxmlynek2 for bug spotting
  • Thanks to chess.com user NefariousNebula for highlighting the (undocumented) CAPS endpoint

Saying Thank You

If you find this useful and want to say thanks just send me a fun trophy or two or three over on chess.com 😃 If you find it really useful then consider hitting the donate button at the top of the page.

Example Output (HTML)

Sample Report

Example Output Fragments (Text)

> chessstats GothamChess
                                                                                                    
     ()                                                                                             
   <~~~~>  _________  .__                                   _________  __             __            
    \__/   \_   ___ \ |  |__    ____    ______  ______     /   _____/_/  |_ _____   _/  |_   ______ 
   (____)  /    \  \/ |  |  \ _/ __ \  /  ___/ /  ___/     \_____  \ \   __\\__  \  \   __\ /  ___/ 
    |  |   \     \____|   Y  \\  ___/  \___ \  \___ \      /        \ |  |   / __ \_ |  |   \___ \  
    |  |    \______  /|___|  / \___  >/____  >/____  >    /_______  / |__|  (____  / |__|  /____  > 
    |__|           \/      \/      \/      \/      \/             \/             \/for Chess.com\/  
   /____\                                                                                           
  (______)                                                                                          
 (________)   Hyper-Dragon :: Version 0.7 :: 07/2021 :: https://github.com/Hyper-Dragon/ChessStats  
                                                                                                    
===================== Live Chess Report for GothamChess : 24/07/2021@18:29 UTC =====================

================== All Openings (Max 15) ===================

Playing As White                                                        | Tot.
------------------------------------------------------------------------+------
B20-Sicilian Defense Mengarini Variation                                |  569
A45-Trompowsky Attack                                                   |  528
A01-Nimzowitsch Larsen Attack                                           |  511
A01-Nimzowitsch Larsen Attack Modern Variation                          |  378
A01-Nimzowitsch Larsen Attack Classical Variation                       |  320
A01-Nimzowitsch Larsen Attack Indian Variation                          |  306
A00-Sodium Attack                                                       |  271
A45-Trompowsky Attack Raptor Variation                                  |  257
A40-Modern Defense with                                                 |  246
D00-Queens Pawn Opening Accelerated London System                       |  238
B12-Caro Kann Defense Advance Tal Variation                             |  215
A45-Trompowsky Attack Classical Defense                                 |  207
A45-Indian Game                                                         |  205
A40-Queens Pawn Opening Horwitz Defense                                 |  200
B06-Modern Defense with                                                 |  153

Playing As Black                                                        | Tot.
------------------------------------------------------------------------+------
C10-French Defense Rubinstein Variation                                 |  275
B10-Caro Kann Defense                                                   |  261
A40-Modern Defense with                                                 |  199
B10-Caro Kann Defense Two Knights Attack                                |  198
A04-Reti Opening Kingside Fianchetto Variation                          |  184
A01-Nimzowitsch Larsen Attack Modern Variation                          |  179
A00-Kings Fianchetto Opening                                            |  171
A04-Reti Opening Herrstrom Gambit                                       |  167
B15-Caro Kann Defense                                                   |  159
B06-Modern Defense with                                                 |  158
A00-Vant Kruijs Opening                                                 |  155
A45-Indian Game                                                         |  151
B00-Kings Pawn Opening Owen Defense                                     |  150
A00-Mieses Opening                                                      |  148
A04-Reti Opening Dutch Variation                                        |  148

======== Time Played/Ratings by Time Control/Month =========

Time Control/Month| Play Time | Rating Min/Max/+-  | Vs Min/BestWin/Max | Win  | Draw | Loss | Tot. 
------------------+-----------+--------------------+--------------------+------+------+------+------
Blitz     2017-03 |  14:12:22 | 1917 | 2495 |  578 | 1635 | 2603 | 2624 |  106 |    9 |   77 |  192
Blitz     2017-04 |  21:36:46 | 2399 | 2578 |  179 | 2242 | 2604 | 2638 |  154 |   27 |  104 |  285
Blitz     2017-05 |  14:40:44 | 2344 | 2510 |  166 | 2163 | 2583 | 2594 |  115 |   14 |   88 |  217
Blitz     2017-06 |   5:39:49 | 2388 | 2477 |   89 | 2247 | 2576 | 2637 |   38 |    4 |   42 |   84
Blitz     2017-07 |   0:48:30 | 2408 | 2433 |   25 | 2359 | 2737 | 2737 |    6 |    1 |    3 |   10
Blitz     2017-08 |   2:28:50 | 2406 | 2459 |   53 | 2288 | 2539 | 2550 |   15 |    5 |   12 |   32
Blitz     2017-09 |   7:15:37 | 2431 | 2575 |  144 | 2295 | 2531 | 2663 |   54 |    9 |   29 |   92
Blitz     2017-10 |   4:12:47 | 2482 | 2539 |   57 | 2313 | 2671 | 2671 |   27 |    4 |   23 |   54
Blitz     2017-11 |   8:23:39 | 2383 | 2534 |  151 | 2217 | 2562 | 2610 |   51 |   11 |   47 |  109
Blitz     2017-12 |   9:35:45 | 2408 | 2623 |  215 | 2239 | 2708 | 2710 |   77 |   11 |   33 |  121
Blitz     2018-01 |   2:39:41 | 2500 | 2545 |   45 | 2301 | 2540 | 2644 |   15 |    3 |   16 |   34
Blitz     2018-02 |   0:19:47 | 2488 | 2504 |   16 | 1092 | 1092 | 1182 |    2 |    - |    1 |    3
Blitz     2018-04 |   3:43:20 | 2475 | 2538 |   63 | 1528 | 2695 | 2742 |   33 |    2 |   11 |   46
Blitz     2018-05 |  13:03:48 | 2411 | 2524 |  113 |  563 | 2567 | 2785 |  114 |    7 |   36 |  157
Blitz     2018-06 |   8:48:36 | 2309 | 2424 |  115 |  583 | 2452 | 2519 |   76 |    9 |   28 |  113
Blitz     2018-07 |  20:17:05 | 2281 | 2493 |  212 |  593 | 2559 | 2621 |  185 |    9 |   45 |  239
Blitz     2018-08 |  24:14:28 | 2465 | 2617 |  152 |  371 | 2745 | 2757 |  197 |   14 |   60 |  271
Blitz     2018-09 |  20:03:34 | 2473 | 2588 |  115 |  510 | 2626 | 3019 |  187 |    6 |   40 |  233
Blitz     2018-10 |  21:01:52 | 2475 | 2663 |  188 |  628 | 2681 | 2714 |  191 |   11 |   51 |  253
Blitz     2018-11 |  20:22:21 | 2501 | 2687 |  186 |  494 | 2760 | 2761 |  193 |    9 |   37 |  239
Blitz     2018-12 |  16:59:16 | 2492 | 2630 |  138 |  683 | 2704 | 2704 |  119 |   13 |   38 |  170
Blitz     2019-01 |  21:28:18 | 2434 | 2595 |  161 |  611 | 2662 | 2693 |  163 |   13 |   72 |  248
Blitz     2019-02 |   8:56:09 | 2473 | 2612 |  139 |  601 | 2671 | 2710 |   73 |    4 |   26 |  103
Blitz     2019-03 |   7:09:31 | 2528 | 2665 |  137 |  476 | 2695 | 3096 |   56 |    4 |   15 |   75
Blitz     2019-04 |   4:49:51 | 2567 | 2645 |   78 | 1395 | 2639 | 2736 |   23 |    5 |   23 |   51
Blitz     2019-05 |   3:44:12 | 2504 | 2575 |   71 |  367 | 2593 | 2602 |   22 |    3 |   14 |   39
Blitz     2019-07 |   1:45:16 | 2507 | 2554 |   47 | 2333 | 2734 | 2746 |   13 |    1 |    9 |   23
Blitz     2019-08 |  12:01:50 | 2517 | 2724 |  207 | 1045 | 2809 | 2827 |   82 |    9 |   48 |  139
Blitz     2019-09 |  10:15:44 | 2629 | 2737 |  108 |  814 | 2695 | 2885 |   66 |   10 |   47 |  123
Blitz     2019-10 |  15:21:50 | 2539 | 2693 |  154 |  862 | 2734 | 2797 |  102 |   13 |   72 |  187
Blitz     2019-11 |  11:07:56 | 2571 | 2683 |  112 | 2392 | 2701 | 2705 |   77 |    8 |   50 |  135
Blitz     2019-12 |  12:02:00 | 2593 | 2715 |  122 | 1078 | 2713 | 2747 |   85 |    9 |   53 |  147
Blitz     2020-01 |  25:36:12 | 2570 | 2726 |  156 | 1060 | 2848 | 2860 |  175 |   18 |  128 |  321
Blitz     2020-02 |  17:19:46 | 2646 | 2737 |   91 | 1181 | 2805 | 2873 |  123 |    8 |   82 |  213
Blitz     2020-03 |  17:03:02 | 2578 | 2699 |  121 |  888 | 2679 | 2810 |  109 |    8 |   82 |  199
Blitz     2020-04 |  21:53:21 | 2536 | 2715 |  179 | 2301 | 2733 | 2898 |  130 |   24 |   86 |  240
Blitz     2020-05 |  16:17:55 | 2546 | 2669 |  123 | 1224 | 2777 | 2777 |   98 |   12 |   68 |  178
Blitz     2020-06 |  20:56:26 | 2518 | 2654 |  136 |  536 | 2988 | 2988 |  148 |   10 |   45 |  203
Blitz     2020-07 |  35:20:59 | 2503 | 2666 |  163 |  302 | 2872 | 2872 |  241 |   15 |  104 |  360
Blitz     2020-08 |  46:27:09 | 2457 | 2671 |  214 |  880 | 2731 | 2996 |  306 |   28 |  199 |  533
Blitz     2020-09 |  50:35:36 | 2473 | 2733 |  260 | 1016 | 2808 | 3029 |  301 |   43 |  220 |  564
Blitz     2020-10 |  38:14:42 | 2557 | 2716 |  159 |  581 | 2890 | 3095 |  265 |   30 |  150 |  445
Blitz     2020-11 |  41:44:31 | 2493 | 2723 |  230 |  569 | 2853 | 3017 |  298 |   25 |  160 |  483
Blitz     2020-12 |  41:25:26 | 2549 | 2725 |  176 |  861 | 2758 | 3032 |  276 |   34 |  144 |  454
Blitz     2021-01 |  50:07:51 | 2432 | 2667 |  235 |  577 | 2773 | 2835 |  319 |   31 |  224 |  574
Blitz     2021-02 |  28:41:20 | 2602 | 2767 |  165 | 1380 | 2779 | 2886 |  190 |   19 |  122 |  331
Blitz     2021-03 |  38:23:28 | 2614 | 2830 |  216 |  491 | 2870 | 2882 |  245 |   22 |  163 |  430
Blitz     2021-04 |  42:19:56 | 2546 | 2746 |  200 | 2283 | 2844 | 2903 |  288 |   34 |  196 |  518
Blitz     2021-05 |  30:58:53 | 2550 | 2710 |  160 | 2380 | 2819 | 2956 |  222 |   23 |  147 |  392
Blitz     2021-06 |  11:53:04 | 2531 | 2686 |  155 | 1372 | 2686 | 3015 |   86 |   11 |   47 |  144
Blitz     2021-07 |   1:30:52 | 2567 | 2608 |   41 | 2391 | 2576 | 2605 |   11 |    2 |    8 |   21
------------------+-----------+--------------------+--------------------+------+------+------+------
Blitz  NR 2018-02 |   0:12:34 |    - |    - |    - |    - |    - |    - |    - |    - |    1 |    1
Blitz  NR 2018-05 |   1:51:29 |    - |    - |    - |    - |    - |    - |   21 |    - |    1 |   22
Blitz  NR 2018-06 |   1:29:36 |    - |    - |    - |    - |    - |    - |   13 |    - |    1 |   14
Blitz  NR 2018-07 |   4:56:41 |    - |    - |    - |    - |    - |    - |   44 |    - |    3 |   47
Blitz  NR 2018-08 |   3:19:15 |    - |    - |    - |    - |    - |    - |   27 |    1 |    2 |   30
Blitz  NR 2018-09 |   5:09:47 |    - |    - |    - |    - |    - |    - |   49 |    1 |    4 |   54
Blitz  NR 2018-10 |   3:15:30 |    - |    - |    - |    - |    - |    - |   34 |    1 |    - |   35
Blitz  NR 2018-11 |   5:13:00 |    - |    - |    - |    - |    - |    - |   49 |    3 |    5 |   57
Blitz  NR 2018-12 |   6:20:12 |    - |    - |    - |    - |    - |    - |   39 |    1 |    1 |   41
Blitz  NR 2019-01 |   8:30:22 |    - |    - |    - |    - |    - |    - |   41 |    1 |    5 |   47
Blitz  NR 2019-02 |   1:37:19 |    - |    - |    - |    - |    - |    - |   17 |    - |    1 |   18
Blitz  NR 2019-03 |   6:20:58 |    - |    - |    - |    - |    - |    - |   31 |    - |    - |   31
Blitz  NR 2019-04 |   8:50:41 |    - |    - |    - |    - |    - |    - |   51 |    - |   42 |   93
Blitz  NR 2019-05 |   3:34:01 |    - |    - |    - |    - |    - |    - |   15 |    - |    1 |   16
Blitz  NR 2019-08 |   9:37:32 |    - |    - |    - |    - |    - |    - |   49 |    1 |    1 |   51
Blitz  NR 2019-09 |   3:46:30 |    - |    - |    - |    - |    - |    - |   30 |    1 |    1 |   32
Blitz  NR 2019-10 |   2:34:51 |    - |    - |    - |    - |    - |    - |   15 |    - |    1 |   16
Blitz  NR 2019-11 |   1:03:46 |    - |    - |    - |    - |    - |    - |    5 |    - |    - |    5
Blitz  NR 2019-12 |   2:41:02 |    - |    - |    - |    - |    - |    - |   19 |    - |    2 |   21
Blitz  NR 2020-01 |   5:39:28 |    - |    - |    - |    - |    - |    - |   31 |    - |    1 |   32
Blitz  NR 2020-02 |   3:13:00 |    - |    - |    - |    - |    - |    - |   25 |    1 |    1 |   27
Blitz  NR 2020-03 |   2:46:15 |    - |    - |    - |    - |    - |    - |   16 |    - |    1 |   17
Blitz  NR 2020-05 |   2:30:04 |    - |    - |    - |    - |    - |    - |   17 |    - |    4 |   21
Blitz  NR 2020-06 |  26:51:28 |    - |    - |    - |    - |    - |    - |  171 |    3 |   12 |  186
Blitz  NR 2020-07 |  21:40:14 |    - |    - |    - |    - |    - |    - |  113 |    9 |   16 |  138
Blitz  NR 2020-08 |   2:03:38 |    - |    - |    - |    - |    - |    - |   16 |    - |    3 |   19
Blitz  NR 2020-09 |   2:11:49 |    - |    - |    - |    - |    - |    - |   11 |    - |   12 |   23
Blitz  NR 2020-10 |   2:57:17 |    - |    - |    - |    - |    - |    - |   24 |    2 |    2 |   28
Blitz  NR 2020-11 |   9:53:25 |    - |    - |    - |    - |    - |    - |   90 |    2 |    5 |   97
Blitz  NR 2020-12 |   7:31:23 |    - |    - |    - |    - |    - |    - |   61 |    1 |    4 |   66
Blitz  NR 2021-01 |   5:38:39 |    - |    - |    - |    - |    - |    - |   45 |    - |    4 |   49
Blitz  NR 2021-02 |   1:18:26 |    - |    - |    - |    - |    - |    - |   10 |    - |    3 |   13
Blitz  NR 2021-03 |   3:00:25 |    - |    - |    - |    - |    - |    - |   21 |    1 |    1 |   23
Blitz  NR 2021-04 |   0:18:45 |    - |    - |    - |    - |    - |    - |    2 |    - |    - |    2
Blitz  NR 2021-05 |   0:40:43 |    - |    - |    - |    - |    - |    - |    7 |    1 |    - |    8
Blitz  NR 2021-06 |   0:42:07 |    - |    - |    - |    - |    - |    - |    5 |    - |    - |    5
------------------+-----------+--------------------+--------------------+------+------+------+------
Bullet    2017-03 |   6:40:22 | 1925 | 2708 |  783 | 1665 | 2853 | 2866 |  135 |    9 |   76 |  220
Bullet    2017-04 |   2:33:39 | 2638 | 2720 |   82 | 1750 | 2788 | 2799 |   50 |    2 |   38 |   90
Bullet    2017-05 |   1:34:12 | 2602 | 2707 |  105 | 2445 | 2694 | 2809 |   29 |    - |   25 |   54
Bullet    2017-06 |   4:50:38 | 2536 | 2704 |  168 | 2386 | 2732 | 2747 |  109 |   10 |   65 |  184
Bullet    2017-08 |   1:04:15 | 2661 | 2707 |   46 | 2505 | 2764 | 2774 |   18 |    2 |   18 |   38
Bullet    2017-09 |   3:17:24 | 2559 | 2687 |  128 | 2414 | 2722 | 2745 |   53 |    6 |   53 |  112
Bullet    2017-10 |   1:21:31 | 2540 | 2599 |   59 | 2431 | 2663 | 2675 |   22 |    6 |   17 |   45
Bullet    2017-11 |  23:27:14 | 2525 | 2731 |  206 | 1880 | 2787 | 2866 |  470 |   58 |  274 |  802
Bullet    2017-12 |  14:36:09 | 2589 | 2780 |  191 | 2122 | 2848 | 2860 |  299 |   34 |  164 |  497
Bullet    2018-01 |  15:03:51 | 2585 | 2763 |  178 | 2188 | 2862 | 2876 |  305 |   28 |  183 |  516
Bullet    2018-02 |   2:40:04 | 2572 | 2716 |  144 |  981 | 2723 | 2787 |   51 |    7 |   34 |   92
Bullet    2018-04 |   4:16:50 | 2599 | 2732 |  133 | 2450 | 2908 | 2921 |   71 |    7 |   61 |  139
Bullet    2018-05 |   2:45:09 | 2559 | 2663 |  104 |  506 | 2689 | 2719 |   60 |    4 |   30 |   94
Bullet    2018-06 |   3:57:12 | 2473 | 2652 |  179 |  419 | 2666 | 2675 |   92 |    4 |   36 |  132
Bullet    2018-07 |   8:15:36 | 2500 | 2633 |  133 |  887 | 2765 | 2965 |  152 |   18 |  104 |  274
Bullet    2018-08 |  10:33:24 | 2541 | 2674 |  133 |  612 | 2909 | 2979 |  228 |   16 |  107 |  351
Bullet    2018-09 |  12:48:25 | 2505 | 2694 |  189 | 1037 | 2731 | 2769 |  274 |   22 |  121 |  417
Bullet    2018-10 |  22:43:37 | 2566 | 2808 |  242 |  628 | 3050 | 3118 |  559 |   50 |  366 |  975
Bullet    2018-11 |  14:20:38 |  515 | 2795 | 2280 |  726 | 3042 | 3185 |  440 |   30 |  172 |  642
Bullet    2018-12 |   9:35:28 | 2558 | 2843 |  285 |  642 | 3111 | 3126 |  283 |   22 |  187 |  492
Bullet    2019-01 |   5:27:42 | 2666 | 2803 |  137 | 1000 | 2872 | 2884 |  149 |   16 |  108 |  273
Bullet    2019-02 |   2:21:42 | 2610 | 2795 |  185 | 1645 | 2769 | 2779 |   47 |    4 |   52 |  103
Bullet    2019-03 |   1:52:59 | 2556 | 2628 |   72 | 2399 | 2777 | 2789 |   34 |    3 |   31 |   68
Bullet    2019-04 |   3:38:23 | 2556 | 2674 |  118 | 1223 | 2748 | 2771 |   76 |    4 |   50 |  130
Bullet    2019-05 |   0:32:25 | 2591 | 2628 |   37 | 2436 | 2679 | 2679 |   10 |    3 |    6 |   19
Bullet    2019-07 |   0:32:15 | 2582 | 2625 |   43 | 2518 | 2553 | 2561 |   16 |    3 |   10 |   29
Bullet    2019-08 |   0:07:44 | 2603 | 2620 |   17 | 2619 | 2626 | 2635 |    2 |    - |    2 |    4
Bullet    2019-09 |   6:57:50 | 2332 | 2604 |  272 | 1878 | 2644 | 2685 |  151 |   15 |  111 |  277
Bullet    2019-10 |   5:28:20 | 2551 | 2644 |   93 | 1753 | 3185 | 3201 |   95 |   15 |  124 |  234
Bullet    2019-11 |   0:13:19 | 2576 | 2597 |   21 | 2471 | 2694 | 2710 |    1 |    - |    6 |    7
Bullet    2019-12 |   3:07:58 | 2545 | 2655 |  110 | 1332 | 3207 | 3223 |   62 |    4 |   42 |  108
Bullet    2020-01 |   3:31:36 | 2540 | 2635 |   95 | 2194 | 2654 | 2663 |   69 |    8 |   42 |  119
Bullet    2020-02 |   0:58:38 | 2550 | 2645 |   95 | 2281 | 2735 | 2735 |   26 |    - |   13 |   39
Bullet    2020-03 |   7:05:41 | 2527 | 2656 |  129 | 2228 | 2683 | 2775 |  140 |    8 |   93 |  241
Bullet    2020-04 |  11:15:20 | 2438 | 2754 |  316 | 2256 | 2774 | 2774 |  215 |   24 |  128 |  367
Bullet    2020-05 |   5:57:05 | 2523 | 2708 |  185 | 2013 | 2804 | 3153 |  118 |    9 |  106 |  233
Bullet    2020-06 |   2:58:45 | 2536 | 2623 |   87 |  926 | 2695 | 2706 |   68 |    6 |   34 |  108
Bullet    2020-07 |   2:03:31 | 2581 | 2639 |   58 | 2410 | 2647 | 2658 |   53 |    4 |   31 |   88
Bullet    2020-08 |   1:35:30 | 2539 | 2614 |   75 | 1001 | 2668 | 2678 |   38 |    2 |   16 |   56
Bullet    2020-09 |   2:37:40 | 2586 | 2765 |  179 |  989 | 2801 | 2837 |   45 |    3 |   36 |   84
Bullet    2020-10 |  13:15:41 | 2725 | 3053 |  328 | 2545 | 3139 | 3165 |  373 |   35 |  263 |  671
Bullet    2020-11 |   3:36:45 | 2824 | 3058 |  234 | 2634 | 3099 | 3530 |   43 |    5 |   83 |  131
Bullet    2020-12 |   0:35:55 | 2819 | 2841 |   22 | 2483 | 2934 | 2948 |   14 |    2 |    4 |   20
Bullet    2021-01 |   1:09:38 | 2787 | 2833 |   46 | 2607 | 2847 | 2856 |   11 |    3 |   10 |   24
Bullet    2021-02 |   0:57:46 | 2773 | 2828 |   55 |  498 | 2786 | 2794 |   14 |    - |    6 |   20
Bullet    2021-03 |   9:43:08 | 2693 | 2862 |  169 | 1997 | 2958 | 2965 |  190 |   16 |  106 |  312
Bullet    2021-04 |   1:45:05 | 2753 | 2837 |   84 | 2374 | 2842 | 2850 |   37 |    2 |   18 |   57
Bullet    2021-05 |   0:23:03 | 2734 | 2782 |   48 | 1633 | 2684 | 2691 |    9 |    - |    4 |   13
Bullet    2021-06 |   0:01:01 | 2762 | 2762 |    - | 2725 |    - | 2725 |    - |    - |    1 |    1
Bullet    2021-07 |   0:02:07 | 2744 | 2756 |   12 | 2900 |    - | 2910 |    - |    - |    3 |    3
------------------+-----------+--------------------+--------------------+------+------+------+------
Bullet NR 2018-02 |   0:01:26 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
Bullet NR 2018-04 |   0:22:33 |    - |    - |    - |    - |    - |    - |   10 |    2 |    - |   12
Bullet NR 2018-05 |   0:05:17 |    - |    - |    - |    - |    - |    - |    2 |    1 |    - |    3
Bullet NR 2018-06 |   0:07:47 |    - |    - |    - |    - |    - |    - |    5 |    - |    - |    5
Bullet NR 2018-07 |   0:07:24 |    - |    - |    - |    - |    - |    - |    4 |    - |    1 |    5
Bullet NR 2018-08 |   0:40:25 |    - |    - |    - |    - |    - |    - |   17 |    3 |    5 |   25
Bullet NR 2018-09 |   0:11:04 |    - |    - |    - |    - |    - |    - |    4 |    - |    2 |    6
Bullet NR 2018-10 |   0:51:52 |    - |    - |    - |    - |    - |    - |   22 |    3 |   11 |   36
Bullet NR 2018-11 |   1:07:03 |    - |    - |    - |    - |    - |    - |   37 |    - |   19 |   56
Bullet NR 2018-12 |   0:15:58 |    - |    - |    - |    - |    - |    - |    9 |    - |    2 |   11
Bullet NR 2019-02 |   0:02:13 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
Bullet NR 2019-03 |   0:02:46 |    - |    - |    - |    - |    - |    - |    3 |    - |    - |    3
Bullet NR 2019-04 |   0:03:08 |    - |    - |    - |    - |    - |    - |    4 |    - |    - |    4
Bullet NR 2019-08 |   0:01:48 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
Bullet NR 2019-09 |   0:03:21 |    - |    - |    - |    - |    - |    - |    2 |    - |    - |    2
Bullet NR 2019-10 |   1:33:13 |    - |    - |    - |    - |    - |    - |   46 |    5 |   33 |   84
Bullet NR 2019-11 |   0:24:00 |    - |    - |    - |    - |    - |    - |   17 |    1 |    2 |   20
Bullet NR 2019-12 |   0:01:42 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
Bullet NR 2020-01 |   0:35:39 |    - |    - |    - |    - |    - |    - |    6 |    2 |   25 |   33
Bullet NR 2020-06 |   0:14:59 |    - |    - |    - |    - |    - |    - |   12 |    1 |    - |   13
Bullet NR 2020-07 |   0:05:37 |    - |    - |    - |    - |    - |    - |    3 |    - |    - |    3
Bullet NR 2020-08 |   0:04:14 |    - |    - |    - |    - |    - |    - |    2 |    - |    - |    2
Bullet NR 2020-10 |   0:11:14 |    - |    - |    - |    - |    - |    - |    2 |    1 |    3 |    6
Bullet NR 2020-11 |   0:03:16 |    - |    - |    - |    - |    - |    - |    - |    - |    3 |    3
Bullet NR 2021-02 |   0:00:39 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
------------------+-----------+--------------------+--------------------+------+------+------+------
Rapid     2017-05 |   0:16:28 | 1933 | 1933 |    - | 1694 | 1694 | 1694 |    1 |    - |    - |    1
Rapid     2017-09 |   0:23:55 | 1818 | 1818 |    - | 2008 |    - | 2008 |    - |    - |    1 |    1
Rapid     2018-01 |   0:19:30 | 1909 | 1909 |    - | 1714 | 1714 | 1714 |    1 |    - |    - |    1
Rapid     2018-07 |   0:58:16 | 1985 | 2079 |   94 | 1791 | 1967 | 1978 |    2 |    - |    1 |    3
Rapid     2018-08 |   1:20:54 | 1977 | 2043 |   66 | 1735 | 1765 | 1970 |    2 |    - |    1 |    3
Rapid     2018-09 |   5:06:41 | 1935 | 2149 |  214 | 1727 | 2063 | 2063 |   11 |    1 |    1 |   13
Rapid     2018-10 |   3:57:22 | 2119 | 2160 |   41 | 1775 | 1979 | 2172 |    6 |    - |    2 |    8
Rapid     2019-01 |   0:33:03 | 2221 | 2222 |    1 | 1578 | 1753 | 1753 |    2 |    - |    - |    2
Rapid     2019-02 |   0:57:20 | 2224 | 2237 |   13 | 1460 | 2023 | 2023 |    3 |    - |    - |    3
Rapid     2019-03 |   0:08:47 | 2238 | 2238 |    - | 1467 | 1467 | 1467 |    1 |    - |    - |    1
Rapid     2019-10 |   0:01:23 | 2238 | 2238 |    - |  913 |  913 |  913 |    1 |    - |    - |    1
Rapid     2020-01 |   0:25:08 | 2248 | 2248 |    - | 1807 | 1807 | 1807 |    1 |    - |    - |    1
Rapid     2020-03 |   4:24:03 | 2162 | 2274 |  112 | 1127 | 1988 | 2003 |    7 |    - |    2 |    9
Rapid     2020-05 |   5:02:24 | 2175 | 2253 |   78 |  800 | 2072 | 2072 |   10 |    1 |    1 |   12
Rapid     2020-06 |   1:39:40 | 2115 | 2173 |   58 | 1314 | 1424 | 2009 |    2 |    - |    2 |    4
Rapid     2020-09 |   0:21:51 | 2525 | 2525 |    - | 1000 | 1000 | 1000 |    1 |    - |    - |    1
Rapid     2020-11 |   0:43:57 | 2415 | 2459 |   44 | 1495 | 1495 | 2296 |    1 |    1 |    1 |    3
Rapid     2020-12 |   3:15:21 | 2417 | 2418 |    1 |  606 | 1775 | 1775 |   13 |    - |    - |   13
Rapid     2021-01 |   2:55:10 | 2418 | 2420 |    2 |  926 | 1660 | 1660 |   12 |    - |    - |   12
Rapid     2021-02 |   0:05:25 | 2420 | 2420 |    - |  986 |  986 |  986 |    1 |    - |    - |    1
Rapid     2021-03 |   1:27:34 | 2371 | 2431 |   60 | 1063 | 2025 | 2311 |    6 |    - |    1 |    7
Rapid     2021-04 |   0:18:22 | 2421 | 2421 |    - | 1319 | 1319 | 1319 |    1 |    - |    - |    1
------------------+-----------+--------------------+--------------------+------+------+------+------
Rapid  NR 2018-05 |   0:27:52 |    - |    - |    - |    - |    - |    - |    2 |    - |    - |    2
Rapid  NR 2018-08 |   0:16:43 |    - |    - |    - |    - |    - |    - |    1 |    - |    - |    1
Rapid  NR 2018-12 |   3:17:15 |    - |    - |    - |    - |    - |    - |    8 |    - |   11 |   19
Rapid  NR 2019-01 |   0:34:05 |    - |    - |    - |    - |    - |    - |    4 |    - |    - |    4
Rapid  NR 2019-03 |   1:24:38 |    - |    - |    - |    - |    - |    - |    3 |    - |    - |    3
Rapid  NR 2019-08 |   1:41:05 |    - |    - |    - |    - |    - |    - |    4 |    - |    - |    4
Rapid  NR 2019-10 |   5:36:39 |    - |    - |    - |    - |    - |    - |   10 |    - |    1 |   11
Rapid  NR 2019-12 |   2:55:54 |    - |    - |    - |    - |    - |    - |    6 |    - |    - |    6
Rapid  NR 2020-01 |   8:12:49 |    - |    - |    - |    - |    - |    - |   14 |    - |    3 |   17
Rapid  NR 2020-03 |   0:32:12 |    - |    - |    - |    - |    - |    - |    - |    - |    1 |    1
Rapid  NR 2020-05 |   3:27:17 |    - |    - |    - |    - |    - |    - |    8 |    - |    - |    8
Rapid  NR 2020-06 |   1:24:20 |    - |    - |    - |    - |    - |    - |    3 |    1 |    - |    4
Rapid  NR 2020-08 |  10:08:58 |    - |    - |    - |    - |    - |    - |   22 |    - |    1 |   23
Rapid  NR 2020-09 |   3:51:25 |    - |    - |    - |    - |    - |    - |    7 |    2 |    - |    9
Rapid  NR 2020-12 |  12:40:28 |    - |    - |    - |    - |    - |    - |   43 |    2 |    3 |   48
Rapid  NR 2021-01 |   7:21:17 |    - |    - |    - |    - |    - |    - |   21 |    2 |    1 |   24
Rapid  NR 2021-02 |   2:51:53 |    - |    - |    - |    - |    - |    - |    9 |    1 |    3 |   13
Rapid  NR 2021-03 |   1:14:14 |    - |    - |    - |    - |    - |    - |    7 |    - |    - |    7
Rapid  NR 2021-04 |   6:58:34 |    - |    - |    - |    - |    - |    - |   25 |    2 |    2 |   29
Rapid  NR 2021-05 |   1:11:40 |    - |    - |    - |    - |    - |    - |    6 |    - |    - |    6
Rapid  NR 2021-06 |   1:08:50 |    - |    - |    - |    - |    - |    - |    6 |    - |    - |    6
Rapid  NR 2021-07 |   1:08:31 |    - |    - |    - |    - |    - |    - |    6 |    - |    - |    6

========= Time Played by Month (All Time Controls) =========

Month             |  Play Time  |   For Year  |  Cumulative 
------------------+-------------+-------------+-------------
2017-03           |    20:52:44 |    20:52:44 |    20:52:44
2017-04           |    24:10:25 |    45:03:09 |    45:03:09
2017-05           |    16:31:24 |    61:34:33 |    61:34:33
2017-06           |    10:30:27 |    72:05:00 |    72:05:00
2017-07           |     0:48:30 |    72:53:30 |    72:53:30
2017-08           |     3:33:05 |    76:26:35 |    76:26:35
2017-09           |    10:56:56 |    87:23:31 |    87:23:31
2017-10           |     5:34:18 |    92:57:49 |    92:57:49
2017-11           |    31:50:53 |   124:48:42 |   124:48:42
2017-12           |    24:11:54 |   149:00:36 |   149:00:36
------------------+-------------+-------------+-------------
2018-01           |    18:03:02 |    18:03:02 |   167:03:38
2018-02           |     3:13:51 |    21:16:53 |   170:17:29
2018-04           |     8:22:43 |    29:39:36 |   178:40:12
2018-05           |    18:13:35 |    47:53:11 |   196:53:47
2018-06           |    14:23:11 |    62:16:22 |   211:16:58
2018-07           |    34:35:02 |    96:51:24 |   245:52:00
2018-08           |    40:25:09 |   137:16:33 |   286:17:09
2018-09           |    43:19:31 |   180:36:04 |   329:36:40
2018-10           |    51:50:13 |   232:26:17 |   381:26:53
2018-11           |    41:03:02 |   273:29:19 |   422:29:55
2018-12           |    36:28:09 |   309:57:28 |   458:58:04
------------------+-------------+-------------+-------------
2019-01           |    36:33:30 |    36:33:30 |   495:31:34
2019-02           |    13:54:43 |    50:28:13 |   509:26:17
2019-03           |    16:59:39 |    67:27:52 |   526:25:56
2019-04           |    17:22:03 |    84:49:55 |   543:47:59
2019-05           |     7:50:38 |    92:40:33 |   551:38:37
2019-07           |     2:17:31 |    94:58:04 |   553:56:08
2019-08           |    23:29:59 |   118:28:03 |   577:26:07
2019-09           |    21:03:25 |   139:31:28 |   598:29:32
2019-10           |    30:36:16 |   170:07:44 |   629:05:48
2019-11           |    12:49:01 |   182:56:45 |   641:54:49
2019-12           |    20:48:36 |   203:45:21 |   662:43:25
------------------+-------------+-------------+-------------
2020-01           |    44:00:52 |    44:00:52 |   706:44:17
2020-02           |    21:31:24 |    65:32:16 |   728:15:41
2020-03           |    31:51:13 |    97:23:29 |   760:06:54
2020-04           |    33:08:41 |   130:32:10 |   793:15:35
2020-05           |    33:14:45 |   163:46:55 |   826:30:20
2020-06           |    54:05:38 |   217:52:33 |   880:35:58
2020-07           |    59:10:21 |   277:02:54 |   939:46:19
2020-08           |    60:19:29 |   337:22:23 |  1000:05:48
2020-09           |    59:38:21 |   397:00:44 |  1059:44:09
2020-10           |    54:38:54 |   451:39:38 |  1114:23:03
2020-11           |    56:01:54 |   507:41:32 |  1170:24:57
2020-12           |    65:28:33 |   573:10:05 |  1235:53:30
------------------+-------------+-------------+-------------
2021-01           |    67:12:35 |    67:12:35 |  1303:06:05
2021-02           |    33:55:29 |   101:08:04 |  1337:01:34
2021-03           |    53:48:49 |   154:56:53 |  1390:50:23
2021-04           |    51:40:42 |   206:37:35 |  1442:31:05
2021-05           |    33:14:19 |   239:51:54 |  1475:45:24
2021-06           |    13:45:02 |   253:36:56 |  1489:30:26
2021-07           |     2:41:30 |   256:18:26 |  1492:11:56

=============== Total Play Time (Live Chess) ===============

Time Played (hh:mm:ss):   1492:11:56

========================================== End of Report ===========================================

About

ChessStats is a console app used to retrieve monthly play time, ratings and top openings for any chessdotcom user.

Topics

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages