This is a python application dedicated to creating chess puzzles/tactics from a pgn file. Also it can download your games from lichess.org and use that file.
It's based on the great https://github.com/clarkerubber/Python-Puzzle-Creator by @clarkerubber
Things that I changed:
- Use a local pgn file with games as a source.
- Write results to a file called tactics.pgn
- Default engine depth to 8, so it's faster. Before it was nodes=3500000 this is a depth around 20. So it took several minutes to analyze a game. With depth 8 it takes seconds.
- You can use the
depth
argument to change the depth if you want more precision. - chess.pop_count to chess.popcount, because it was failing
There is another option if you don't want to install and manage python scripts I created a more user friendly tactics generator and it's online http://chesstacticsgenerator.vitomd.com It uses a different approach to create tactics, so probably it will generate a different set of tactics.
This script requires the Requests and Python-Chess libraries to run, as well as a copy of Stockfish
Is recommended that you use Python 3 and pip3. But it could work with Python 2.7 and pip (probably you will need to install futures pip install futures
)
Please, take a look at development doc for details.
pip3 install -r requirements.txt --user
MacOS / Linux : sh build-stockfish.sh
to obtain the current lichess Stockfish instance.
You can download games from a specific user using this command:
python3 download_games.py <lichess username>
By default, it will download the last 60 games from blitz, rapid and classical.
Arguments
You can use the max
argument to get more games and use the lichess api token with the token
argument to make the download faster. https://lichess.org/api#operation/apiGamesUser
It will save the games in the games.pgn
file
Example to get 100 games using the token
python3 download_games.py <lichess username> --max 100 --token 123456789
You can download games from multiple tournaments using this command:
python3 download_tournaments.py E14kHVwX tdntXNhy
The arguments are the tournaments ids separate by a space
It will save the games in the games.pgn
file
To execute the generator execute this command. By default it will look for the games.pgn
file:
python3 main.py
Arguments
--quiet
to reduce the screen output.--depth=8
select the Stockfish depth analysis. Default is8
and will take some seconds to analyze a game, with--depth=18
will take around 6 minutes.--games=ruy_lopez.pgn
to select a specific pgn file. Default isgames.pgn
--strict=False
UseFalse
to generate more tactics but a little more ambiguous. Default isTrue
--threads=4
Stockfish argument, number of engine threads, default4
--memory=2048
Stockfish argument, memory in MB to use for engine hashtables, default2048
--includeBlunder=False
If False then generated puzzles won't include initial blunder move, default isTrue
--stockfish=./stockfish-x86_64-bmi2
Path to Stockfish binary. Optional. If omitted, the program will try to locate Stockfish in current directory or download it from the net
Example:
python3 main.py --quiet --depth=12 --games=ruy_lopez.pgn --strict=True --threads=2 --memory=1024
The resulting file will be a pgn file called tactics.pgn
. Each tactic contains the headers from the source game.
The result header
is the tactic result and not the game result. It can be loaded to a Lichess study or to an app like iChess to practice tactics.
- If you have problems building Stockfish try downloading Stockfish directly https://stockfishchess.org/download/
Check My projects for a full detailed list.