stream_lichess.sh: read initial FEN for chess960, show white vs black name - 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 4f6db6f748b3760f1f991e46bbb37246d201d4c8
 (DIR) parent aa7a4692fb14c40930fde876585a70a88b76b3e2
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Thu, 21 Dec 2023 22:45:17 +0100
       
       stream_lichess.sh: read initial FEN for chess960, show white vs black name
       
       Diffstat:
         M TODO                                |       3 ---
         M docs/stream_lichess.sh              |      22 ++++++++++++++++++++--
       
       2 files changed, 20 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/TODO b/TODO
       @@ -1,6 +1,3 @@
       -- stream_lichess.sh: lichess API: read FEN of start position, for chess 960
       -chess variant.
       -
        - option for output for annotating moves in a human-like way (for screenreaders/espeak).
        https://en.wikipedia.org/wiki/Portable_Game_Notation
        PGN:
 (DIR) diff --git a/docs/stream_lichess.sh b/docs/stream_lichess.sh
       @@ -10,13 +10,17 @@ if [ "$1" = "" ]; then
        fi
        
        gameid="$1"
       -token="API token here"
       +token="" # API token here.
        
        url="https://lichess.org/api/board/game/stream/$gameid"
        
       -# start position
       +# start position of classical chess.
        fen="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
        
       +white="Anonymous"
       +black="Anonymous"
       +firstline=1
       +
        # -N disables cURL buffering, each line is streamed as JSON.
        curl \
        -f \
       @@ -25,9 +29,23 @@ curl \
        -H "Authorization: Bearer $token" \
        -H 'Accept: application/x-ndjson' "$url" | \
        while read -r json; do
       +        if [ "$firstline" = "1" ]; then
       +                str=$(printf '%s' "$json" | jaq '$1 == ".initialFen" { print $3; }')
       +                test "$str" != "" && fen="$str" # override
       +
       +                str=$(printf '%s' "$json" | jaq '$1 == ".white.name" { print $3; }')
       +                test "$str" != "" && white="$str" # override
       +
       +                str=$(printf '%s' "$json" | jaq '$1 == ".black.name" { print $3; }')
       +                test "$str" != "" && black="$str" # override
       +
       +                firstline="0"
       +        fi
       +
                moves=$(printf '%s' "$json" | jaq '$1 == ".moves" { print $3; }')
                test "$moves" = "" && continue
        
                clear
       +        printf '%s vs %s\n\n' "$white" "$black"
                ./fen -o tty "$fen" "$moves"
        done