X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=remoteglot.pl;h=c86eedee530e2a1e879e8b413aa2ceb524a1c551;hb=82620f45773509d6cb29f1df0f12bab1e3bbb63e;hp=86334a7e0e4a4f737c74f08b684f9832892053be;hpb=9538e715d31e338a2164992775d31a88feeda13f;p=remoteglot diff --git a/remoteglot.pl b/remoteglot.pl index 86334a7..c86eede 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -77,6 +77,7 @@ my $last_text = ''; my ($pos_calculating, $pos_calculating_second_engine); uciprint($engine, "setoption name UCI_AnalyseMode value true"); +uciprint($engine, "setoption name Analysis Contempt value Off"); while (my ($key, $value) = each %remoteglotconf::engine_config) { uciprint($engine, "setoption name $key value $value"); } @@ -84,6 +85,7 @@ uciprint($engine, "ucinewgame"); if (defined($engine2)) { uciprint($engine2, "setoption name UCI_AnalyseMode value true"); + uciprint($engine2, "setoption name Analysis Contempt value Off"); while (my ($key, $value) = each %remoteglotconf::engine2_config) { uciprint($engine2, "setoption name $key value $value"); } @@ -124,7 +126,7 @@ if (defined($remoteglotconf::server)) { ); } if (defined($remoteglotconf::target)) { - if ($remoteglotconf::target =~ /^https?:/) { + if ($remoteglotconf::target =~ /^(?:\/|https?:)/) { fetch_pgn($remoteglotconf::target); } elsif (defined($t)) { $t->cmd("observe $remoteglotconf::target"); @@ -248,9 +250,26 @@ sub handle_fics { # Starts periodic fetching of PGNs from the given URL. sub fetch_pgn { my ($url) = @_; - AnyEvent::HTTP::http_get($url, sub { - handle_pgn(@_, $url); - }); + if ($url =~ m#^/#) { # Local file. + eval { + local $/ = undef; + open my $fh, "<", $url + or die "$url: $!"; + my $pgn = <$fh>; + close $fh; + handle_pgn($pgn, '', $url); + }; + if ($@) { + warn "$url: $@"; + $http_timer = AnyEvent->timer(after => 1.0, cb => sub { + fetch_pgn($url); + }); + } + } else { + AnyEvent::HTTP::http_get($url, sub { + handle_pgn(@_, $url); + }); + } } my ($last_pgn_white, $last_pgn_black); @@ -910,6 +929,7 @@ sub output_json { } else { $pos = Position->start_pos('white', 'black'); } + $pos->{'chess960'} = $pos_calculating->{'chess960'}; my $halfmove_num = 0; for my $move (@{$pos_calculating->{'history'}}) { my $id = id_for_pos($pos, $halfmove_num);