<?php require 'resourcewrapper.class.php'; $wrapper = new ResourceWrapper(); $wrapper->setDatabaseOpenings('http://www.shredderchess.com/online/playshredder/fetch.php?action=book&fen=$url_fen$&la=en&bookcode=p40', '1.0', true, 'parserOpeningsToJSON', true); $wrapper->setDatabaseEndings('http://www.shredderchess.com/online/playshredder/fetch.php?action=egtb&fen=$url_fen$s', '1.0', false, 'parserEndingsToJSON', true); $wrapper->rest(); // Parse the text result from the distant website to get a JSON document. function parserOpeningsToJSON($text, $fen) { $lines = explode("\n", $text); $moves = array(); foreach ($lines as $line) { $infos = explode('#', $line); if (count($infos) == 14) { $move_exp = explode('...', $infos[0]); $move = "null"; if (count($move_exp) > 0) { $move = $move_exp[1]; } $percentage = $infos[7] / 1000; $wins = round($infos[11] / $infos[6], 3); $draws = round($infos[12] / $infos[6], 3); $looses = round($infos[13] / $infos[6], 3); $nb_play = (int) $infos[6]; if ($move != "null") { $moves[] = array('move' => $move, 'probatowin' => $wins, 'probatonull' => $draws, 'nb' => $nb_play); } } } return json_encode($moves);
<?php require 'resourcewrapper.class.php'; $wrapper = new ResourceWrapper(); $wrapper->setDatabaseOpenings('http://chessok.com/onlineserv/opening/connection.php?timestamp=' . time(), '1.0', false, 'parserOpeningsToJSON', false); $wrapper->setDatabaseEndings('http://chessok.com/onlineserv/endbase/connection.php?timestamp=' . time(), '1.0', true, 'parserEndingsToJson', true); $wrapper->rest(); // Transforme le xml renvoye par chessok en JSon et l'affiche. function parserOpeningsToJSON($xmlstr, $fen) { // On regarde qui va jouer (blancs ou noirs). preg_match("/^[^ ]* ([bw]) .*\$/", $fen, $matches); if (count($matches) == 2) { $whiteToPlay = $matches[1] == 'w'; } $moves = new SimpleXMLElement($xmlstr); // On calcule toutes les stats necessaires pour le serveur central. $movesArray = array(); foreach ($moves->MoveList->Item as $item) { $nbWWhite = $item->WhiteWins; $nbWBlack = $item->BlackWins; $nbDraws = $item->Draws; $nb = $nbWWhite + $nbWBlack + $nbDraws; // Cast pour eviter de se retouver avec un SimpleXMLObject au lieu d'un string. $move = (string) $item->Move; if ($nb > 0) { if ($whiteToPlay) { $probaToWin = round($nbWWhite / $nb, 3); } else { $probaToWin = round($nbWBlack / $nb, 3); }