From 21f55c578f83ecbe042d0af09b79402c9005cf0d Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 17 Jan 2015 13:37:57 +0100 Subject: [PATCH] Add support for filtering individual games from a PGN. --- config.pm | 9 +++++++++ remoteglot.pl | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/config.pm b/config.pm index 182d6eb..e036a4d 100644 --- a/config.pm +++ b/config.pm @@ -7,6 +7,15 @@ package remoteglotconf; our $server = "freechess.org"; our $nick = "SesseBOT"; our $target = "GMCarlsen"; # FICS username or HTTP to a PGN file. + +# Set to non-undef to pick out one specific game from a PGN file with many games. +# See example. +our $pgn_filter = undef; +#our $pgn_filter = sub { +# my $pgn = shift; +# return $pgn->round() eq '7' && $pgn->white eq 'Carlsen,M'; +#}; + our $json_output = "/srv/analysis.sesse.net/www/analysis.json"; our $json_history_dir = "/srv/analysis.sesse.net/www/history/"; # undef for none. diff --git a/remoteglot.pl b/remoteglot.pl index 6a5778a..2a6e2a6 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -273,6 +273,12 @@ sub handle_pgn { warn "Error in parsing PGN from $url\n"; } else { eval { + # Skip to the right game. + while (defined($remoteglotconf::pgn_filter) && + !&$remoteglotconf::pgn_filter($pgn)) { + $pgn->read_game() or die "Out of games during filtering"; + } + $pgn->parse_game({ save_comments => 'yes' }); my $pos = Position->start_pos($pgn->white, $pgn->black); my $moves = $pgn->moves; @@ -309,7 +315,7 @@ sub handle_pgn { } }; if ($@) { - warn "Error in parsing moves from $url\n"; + warn "Error in parsing moves from $url: $@\n"; } } -- 2.39.2