some improvements - chess-puzzles - chess puzzle book generator
 (HTM) git clone git://git.codemadness.org/chess-puzzles
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 78e1ed61ec461637e664b9527f002e232f30ca6e
 (DIR) parent e62dd220612aaada2231586e9c00845700bf4949
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Mon, 22 Jan 2024 20:28:16 +0100
       
       some improvements
       
       - be less strict about parsing UCI moves, just space-separated
       - add script to quickly convert PGN to gif, using pgn-extract.
       - improve some comments.
       - move scripts to root dir.
       
       Diffstat:
         M generate.sh                         |       3 +--
         M moves.sh                            |      12 ++++++------
         A pgn_to_gif.sh                       |       6 ++++++
         R docs/stream_lichess.sh -> stream_l… |       0 
       
       4 files changed, 13 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/generate.sh b/generate.sh
       @@ -275,8 +275,7 @@ while read -r line; do
                        echo "$m"
        
                        m="${m% }"
       -                m="${m%[a-h][0-9][a-h][0-9]}"
       -                m="${m%[qrbnQRBN]}" # possible promotion
       +                m="${m%[^ ]*}"
                        m="${m% }"
        
                        test "$prevmoves" = "$m" && break # same, break also
 (DIR) diff --git a/moves.sh b/moves.sh
       @@ -1,6 +1,8 @@
        #!/bin/sh
        # make a list of moves from start to end for each move.
        
       +# output moves to tty with some delay.
       +# Show PGN and human speech-like text for the moves.
        output_tty() {
                while read -r moves; do
                        clear
       @@ -13,7 +15,7 @@ output_tty() {
                done
        }
        
       -# create animated gifs for puzzle solutions.
       +# create an animated gif.
        # Dependencies: ffmpeg, ImageMagick, etc.
        output_gif() {
                tmppal="$(mktemp '/tmp/palette_XXXXXXXX.png')"
       @@ -25,20 +27,18 @@ output_gif() {
                        ./fen -o svg "$fen" "$moves" > "$f"
                        test -s "$f" || break
        
       -                # initial puzzle state also
                        dest="$tmpdir/$n.png"
                        convert "$f" "$dest"
        
                        n=$((n + 1))
                done
        
       -        # create video / animation.
       -
                # generate palette for gif.
                rm -f "$tmppal"
                ffmpeg -loglevel error -stats -i "$tmpdir/%d.png"\
                        -vf palettegen "$tmppal"
        
       +        # create video / animation.
                # wait longer for last frame.
                ffmpeg -loglevel error -stats -framerate 1\
                        -i "$tmpdir/%d.png" \
       @@ -64,12 +64,12 @@ while [ "$m" != "" ]; do
                echo "$m"
        
                m="${m% }"
       -        m="${m%[a-h][0-9][a-h][0-9]}"
       -        m="${m%[qrbnQRBN]}" # possible promotion
       +        m="${m%[^ ]*}"
                m="${m% }"
        
                test "$prevmoves" = "$m" && break # same, break also
        done | \
        sort | \
        output_gif
       +
        #output_tty
 (DIR) diff --git a/pgn_to_gif.sh b/pgn_to_gif.sh
       @@ -0,0 +1,6 @@
       +#!/bin/sh
       +# Dependencies: pgn-extract for PGN to UCI,
       +# see moves.sh for further dependencies.
       +
       +moves="$(pgn-extract --notags -Wuci)"
       +./moves.sh startpos "$moves"
 (DIR) diff --git a/docs/stream_lichess.sh b/stream_lichess.sh