Newsgroup: it.hobby.scacchi
Titolo: sito modern chess e json

ciao a tutti
per chi non lo conoscesse volevo segnalare il bel sito
http://www.modern-chess.com/
 con articoli molto ben spiegati
 
purtroppo non c'e' il link per salvare le partite in pgn
dal source della pagina vedo che sono in formato json
qualcuno sa come fare?
 
 


Dove l'avresti visto JSON ? (link?)
 


da una partita qualunque 
http://www.modern-chess.com/en/chess-academy/article=122
 
view-source riga 161
 
var json = [{"headers":{"Event":"Moscow-ch 17th","Site":"Moscow ","Date":"1937.11.??","Round":"?","White":"Belavenets, Sergey Vesevolodovi","Black":"Rauzer, Vsevolod","Result":"1-0","Annotator":"GM Grigor Grigorov","SetUp":"1","FEN":"6k1\/p2b1p1p\/1p4p1\/1N1p4\/8\/P3P3\/1P3PPP\/6K1 w - - 0 1","PlyCount":"61","EventDate":"1937.11.??","EventRounds":"17","EventCountry":"URS","Source":"ChessBase","SourceDate":"2011.11.24","To Move":"W"},"moves":[{"type":"move","fen":"6k1\/p2b1p1p\/1p4p1\/3p4\/8\/P1N1P3\/1P3PPP\/6K1 b - - 1 1","from":"b5","to":"c3","code":"Nc3"},{"type":"evaluation","code":"$1"},{"type":"comment","text":"Based on the articles of GM Viktor Gavrikov, we are acquainted to the idea of placing the knight on \"d4\". As already notices, the blockade of the isolated pawn with a knight is characteristic to the middlegame positions, where the main idea is to reduce the opponent's attacking ideas related to the movement of the pawn. When there are still many pieces on the board, it is not enough just to control the square that is in front of the isolated pawn. In these situations, very often, the opponent sacrifices the central pawn in order to activate the pieces. The things are absolutely different in the endgame. As at this stage of the game, the sacrifice of the isolator does not endanger, the control of the square in front of it is enough. As already mentioned, in the middlegame the aim is to block the isolated pawn, while in endgame, it is to destroy it."},{"type":"move","fen":"6k1\/p4p1p\/1pb3p1\/3p4\/8\/P1N1P3\/1P3PPP\/6K1 w - - 2 2","from":"d7","to":"c6","code":"Bc6"},{"type":"comment","text":"Maybe it is a better place for the bishop. From \"c6\", it indirectly places pressure on the long diagonal and especially on the \"g2\" pawn. In these circumstances,....
 
riusciamo a fare un parser?

 riusciamo a fare un parser?
 
In javascript:
- JSON.parse(stringa);
In PHP:
- json_decode(stringa);
In altri linguaggi meno comuni per il web:
- leggi i docs, sicuramente c'è una funzione singola
 
Quando hai il JSON hai fatto.
 
Ciao!


ciao Francesco
non ho capito
stai dicendo che dal json riesci a estrarre il pgn?
 

 Quando hai il JSON hai fatto.
 
Fare il parse del JSON in se, è banale (qui una versione leggibile dello stesso: 
http://pastebin.com/ZPb5Qk5A
)
 
Lui intendeva però un parser che lo rendesse poi direttamente in PGN, che è molto meno banale visto che quelle che in quel JSON sono resi come elementi sequenziali in un unico array "piatto" (che mette allo stesso livello mosse commenti, simboli, varianti ecc, sempre sequenziali), in PGN diventano invece strutture nidificate in maniera diversa


difatti, lo stavo vedendo da qui
http://json.parser.online.fr/
 
tempo fa l'avevo fatto per le partite prodotte con fritz
tipo 
http://www.inforchess.com/estudios/Ajedrez%20Postal/2016/16ajedrezpostal23.htm
 
dal view-source prendo l'html della partita
me la incollo in una textarea e poi raschio via l'html e mi rimane il pgn
due colpi di scalpello per aggiungere il FEN iniziale e fatto
 
però ho visto da altri siti esempi di json diversi
pensavo che si rispettasse uno standard per rappresentare una partita in json
cosi il parser andava sempre bene, pazienza
il php non lo mastico
ma se riusciamo anche in piu' passaggi ad arrivare ad un pgn non sarebbe male
cosi tutte le volte che esce un articolo su modern-chess 
ce lo possiamo comodamente gestire da chessbase....
 
leggetevi gli articoli, sono ottimi!  
 
 

 ce lo possiamo comodamente gestire da chessbase....
 
Messo insieme in un pomeriggio, quindi sicuramente andrà in crash a seconda di che sorgente gli passi, ma più o meno sembra funzionare... dovrebbe interpretare mosse, annotazioni, commenti e varianti *ma non* i simboli grafici (freccie e caselle colorate)
 
Per PC Windows con Framework .NET 4 (che da Win7 in su dovrebbe sempre esserci), estrai in una cartella a piacere ed esegui... non salva niente da nessuna parte, quindi basta cancellare il tutto per disinstallare:
 
https://dl.dropboxusercontent.com/u/90846278/ModernChessComParser.zip
 


Grande Luca! il macinino sembra girare alla grande, ;-)
stavo facendo qualche prova, se puoi aggiungici il tasto "pulisci" per svuotare la textarea di input, dato che per ripulire le partite lunghe viene un po' male...
 
grazie 1000, inserire le partite a mano era una palla gigantesca! 
 

 stavo facendo qualche prova, se puoi aggiungici il tasto "pulisci" per svuotare la textarea di input, dato che per ripulire le partite lunghe viene un po' male...
 
Dato che basta 'tasto destro/seleziona tutto' sembrava superfluo ;)
 
Comunque, visto che mi dici che non si schianta a destra e a manca, ho dato un po' di garbo all'interfaccia e aggiunto un paio di cose... scarica pure dallo stesso link di cui sopra
 
NOTA BENE: la funzione per appendere automaticamente ad un file PGN nuovo/esistente da provare a tuo rischio e pericolo


... mi sembrava strano ;-) l'abitudine del contrl-A
thanks very good! :-)

 thanks very good! :-)
 
Già che siamo in ballo... EXE aggiornato ancora, per rispondere correttamente anche a CTRL+A e includere i commenti speciali per disegnare freccie e caselle colorate


Il parser va benissimo e non potevo sperare di meglio,
certo è un peccato che ognuno si fa il tracciato json a modo suo
perche' se io ho il mio sito con il mio viewer,
avrei potuto agganciare il json da questo o quel sito per mostrare le partite senza problemi, se i json fossero stati esposti in modo standard.
allora uso solo pgn, ma c'e' un altro ostacolo: il cross-domain
il codice che segue aggira il problema, chiama il pgn remoto, 
ma funziona a singhiozzo, quando dai F5, forse perche' i dati arrivano troppo tardi..
puoi vedere il source da qui 
http://wpdev1.altervista.org/crossdomain/
 
conoscete altri modi per superare il crossdomain? 
 

 disegnare freccie e caselle colorate
 
frecciie, con due 'i'...
 
 

 ma funziona a singhiozzo, quando dai F5, forse perche' i dati arrivano troppo tardi..
 
Nel caso specifico, credo il problema sia nel fatto che il PGN che stai referenziando in quel codice javascript non è un file statico (nonostante la URL sembri suggerire così) ma è uno stream di dati che viene generato al volo dal server di LiChess quando risponde alla richiesta.
 
Se provi ad usare un file reale, messo su un qualunque server pubblico, sia il visualizzatore di Chessbase sia gli altri viewer web che ci sono in giro, non dovrebbero avere problemi di quel tipo

 frecciie, con due 'i'...
 
Grassie, fa piaciere vedere un'po' di ativitta in piu sul niusgrup ogni tanto, sepure per queztioni futtili...


purtroppo anche con un pgn reale la cosa non è cambiata
ho provato da un paio di server ma si comporta sempre a singhiozzo
solo mettendo il pgn sullo stesso server va un po' meglio, 
eppure la funzione dovrebbe anche aspettare il completamento dei dati....
$(document).ready(function() {	
    $('.cbreplay').html(data); 


Luca forse c'e' un problema sulla grandezza dati della textarea
incollando questo json
view-source:
http://www.modern-chess.com/en/pgn_embed/pgn=27
 
lo taglia alla mossa 22.a4
finisce con... 
"from":"a3","to":"a4","code":"a4"},{"type":"move","fen":"r1r2bk1\/1q1n1ppp\/1pN1pn2\/1p6\/P3P3\/5QP1\/1B1N1PKP\/R1R5 
 
help

 Luca forse c'e' un problema sulla grandezza dati della textarea
 
Si, può essere, su JSON particolarmente lunghi... la versione aggiornata adesso dovrebbe alzare decisamente il massimo (diciamo pure illimitato, fatto salvo esagerazioni che sforano la memoria di sistema disponibile)


forse ha perso qualche accapo
nel pgn salva tutto su una riga
[Event "Amsterdam GAK"][Site "Amsterdam"][Date "1963.12.15"][Round "4"]...

 [Event "Amsterdam GAK"][Site "Amsterdam"][Date "1963.12.15"][Round "4"]...
 
Salva così come lo vedi nella casella di testo, utilizzando un CR+LF per i ritorni a capo... 
Su editor di testo decenti, tipo Notepad++ o anche il banale WordPad, vengono interpretati come si deve e anche sui soliti software DB (Chessbase, Scid, Arena ecc...)
 
Sul Notepad liscio può essere che non vengano renderizzati correttamente, la nuova casella di testo lavora in Unicode/UTF-8 e quindi idem il file risultante, ma ci sono
 
Prova a riscaricarlo, gli ho dato ancora una piccola aggiustatina, ma qui li vedo bene...