Importer PGN twic vers Scid par script

Comment importer le PGN 1)PGN : Portable Game Notation twic 2)TWIC : The Week in Chess hebdomadaire dans Scid vs. PC d’abord manuellement puis dans un script PowerShell de Windows 10 ?

Importer manuellement le PGN twic dans Scid

Tout d’abord, Mark Crowther compile chaque semaine les parties de jeu d’échecs récentes issues des tournois de la semaine au format PGN et CBV dans son site Twic qui édite également le magazine The Week in Chess.

Pour commencer, télécharger le dernier PGN zippé identifié par un numéro comme « 1316 » dans une ligne de la table « TWIC Downloads » à la date du 29 janvier 2020.

Ensuite, décompresser l’archive zippée contenant le PGN.

Finalement, importer le PGN twic dans Scid vs. PC par le menu :

Scid vs. PC menu "Outils" > "Importer un fichier PGN..."

Importer automatiquement le PGN twic dans Scid

Script Shell Bash .sh pour Linux

Le 31 juillet 2015, KatolaZ a créé le script Bash twic_script.sh V 0.1 ayant l’extension de fichier .sh pour Linux (Ubuntu, Debian, etc.) ou Unix.

Considérons les trois étapes implémentées par les utilitaires suivants :

  • Premièrement, wget pour télécharger le PGN Twic ;
  • Deuxièmement, unzip pour décompresser l’archive zippée ;
  • Troisièmement, pgnscid pour importer le PGN twic décompressé dans Scid.

Pour commencer, le script s’intéresse à l’automatisation de la boucle pour télécharger les PGN Twic de tel numéro à tel autre, en particulier jusqu’au dernier le plus récent. De plus, le script utilise la variante linux Scidb.

Powershell Twic2Scid.ps1 pour Windows 10

En premier lieu, Powershell est le langage de commande de Windows 10 qui remplace l’interpréteur Cmd des commandes historiques compatibles MS-DOS3) MS-DOS : Microsoft Disk Operating System. Quelques jours avant le premier avril 2015, Microsoft Mobile a propulsé sur le Microsoft Store « MS-DOS Mobile » pour Smartphone Windows 8 Mobile classé pour les utilisateurs de trois ans nostalgiques et plus. D’où l’expression : j’en ai plein le DOS..

clic avec le bouton droit de la souris sur le menu démarrer de Windows 10 > Windows Powershell

Ensuite, après l’invite Powershell identifiée par « PS chemin > », entrer la commande « cd4)cd: change directory » de changement de répertoires afin d’aller dans le répertoire créé lors de l’installation de Scid vs. PC pour retrouver ses bases de données :

PS C:\Users\Chess> cd C:\Chess\Scid\Prog\bin\bases
PS C:\Chess\Scid\Prog\bin\bases> # We are in the Scid folder of databases

Par ailleurs, créer le sous-répertoire « twic » sous « bin\bases » avec le gestionnaire de fichiers de Windows 10. Sous « twic » se trouve également le répertoire « pgn » :

En outre, l’ancien interpréteur de commandes « Cmd » présent dans plusieurs versions de Windows est toujours accessible depuis la console Powershell.

Pour concaténer plusieurs PGN en un seul PGN, le plus rapide reste la commande héritée de MS-DOS « copy » avec comme joker « *.pgn ». Le résultat de la concaténation « twic.pgn » est dans le répertoire parent « twic » accessible via le chemin relatif « .. » :

PS C:\Chess\Scid\Prog\bin\bases\twic> cd pgn
PS C:\Chess\Scid\Prog\bin\bases\twic\pgn> cmd /C copy *.pgn ..\twic.pgn
twic1285.pgn
twic1286.pgn
...
twic1310.pgn
twic1311.pgn
        1 copied file(s).
PS C:\Chess\Scid\Prog\bin\bases\twic\pgn> cd ..
PS C:\Chess\Scid\Prog\bin\bases\twic> dir twic.pgn

    Folder: C:\Chess\Scid\Prog\bin\bases\twic

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       26/01/2020     13:31       94517379 twic.pgn

27 PGN twic dézippés prennent tout de même 90 Mo.

La notion d’erreur est relative à l’outil qui interprète le PGN. Dans le cas de Scid vs. PC, il peut détecter la variante Chess 960 de Fischer et les roques illégaux en blitz. Une difficulté supplémentaire est que les numéros colossaux de lignes des erreurs ont comme référence le fichier géant des PGN concaténés et non pas le PGN erroné correspondant.

De plus, le téléchargement de plusieurs archives zippées correspondant aux PGN twic peuvent surcharger le serveur web.

Pour toutes ces raisons, l’utilisateur devrait essayer d’espacer ses téléchargements pour gérer les éventuelles erreurs dans le PGN courant et limiter la bande passante utilisée sur le serveur twic.

Architecture du script Twic2Scid.ps1

télécharger le twic de la semaine, décompresser en PGN, importer le PGN twic par création de la base Scid, optimiser et détecter les erreurs PGN, mettre à jour la base de référence

Retrouvons les trois étapes clefs :

  • Premièrement, Invoke-WebRequest dans la fonction DownloadPgn pour télécharger le PGN Twic ;
  • Deuxièmement, Expand-Archive dans ProcessTwic pour décompresser l’archive zippée ;
  • Troisièmement, pgnscid.exe de Scid dans CheckPgn pour créer comme s’il s’agissait d’importer, à partir du PGN décompressé, la base twic au format Scid.

La gestion d’erreurs est capable de retrouver le numéro de ligne du roque illégal et de proposer d’éditer le PGN dans NotePad++ à la bonne ligne.

Le script sera également capable de filtrer les parties de jeu d’échecs selon la variante échecs aléatoires Fischer.

Installation et configuration du script

Télécharger “Windows 10 Powershell Twic2Scid.ps1” Twic2Scid.zip – Téléchargé 12 fois – 7 KB

  1. Premièrement, dans le gestionnaire de fichiers de Windows 10, créer le sous-répertoire « twic » dans le répertoire des bases de données échiquéennes déjà créé par le Setup de Scid vs. PC « bin\bases\ »
  2. Deuxièmement, télécharger le script Twic2Scid.ps1 dans « bin\bases\twic\ » depuis le bouton bleu de téléchargement ci-dessus.
    Taille .zip : 7 Ko. Taille .ps1 : 22 Ko. Nombre de lignes Powershell : 349
  3. Troisièmement, clic le bouton démarré de Windows 10. Saisir la lettre « i » comme ISE puis exécuter l’interface graphique5)GUI: Graphical User Interface de Powershell ISE.
    Si l’utilisateur ne trouve pas l’environnement intégré de développement de script Powershell, configurer Windows 10 pour retrouver Powershell ISE.
    Alternativement, l’utilisateur peut exécuter le script dans une console Powershell sans le GUI de l’ISE. Penser à indiquer le répertoire courant par « .\ » devant le nom du script.
  4. Quatrièmement, dans Windows Powershell ISE ou dans NotePad++, configurer les principales variables du script jusqu’à la ligne 76. Où se trouve ce script ? Où l’utilisateur a installé Scid vs. PC ? NotePad++ ?
    La fonction CheckConfig vérifiera si la configuration est correcte.
    Se reporter au dernier chapitre « Le langage de script de Scid vs. PC » pour valider la constante $slotClipBase.
  5. Cinquièmement, dans la console bleue sombre de Windows Powershell (ISE), saisir le nom du script et valider par ENTER :
    .\Twic2Scid.ps1
    Ou plus facilement, clic le triangle vert « Run the script » (F5) dans la barre d’outils de Powershell ISE pour exécuter le script.

Sécurité lors de l’effacement de fichiers

Le script ne démarrera que si dans la console PowerShell, l’utilisateur copie et colle les droits d’exécution d’un script PowerShell :

PS C:\Chess\Scid\Prog\bin\bases\twic> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

Set-ExecutionPolicy n’est à faire qu’une fois dans chaque session PowerShell ISE ou console PowerShell.

Commençons par examiner la sécurité des opérations d’effacement dans les fonctions DeleteFile, DeleteBase, CleanTemporaryFile, DeleteChess960, BackupRefBase.

Option -Confirm de Remove-Item gérée par la fonction DeleteFile

L’option « Oui pour tout » n’est pas gérée. Passer le flag $isConfirm = $false pour cesser d’avoir à confirmer chaque effacement de fichier après une première utilisation.

# (*) =>>> SECURITY: review the functions: DeleteFile, DeleteBase, CleanTemporaryFile, DeleteChess960, BackupRefBase
$isWhatif = $false # $true means that deleteFile displays the command without deletion otherwise $false mean do the deletion
$isConfirm = $true # $true means deleteFile asks for confirmation otherwise $false means do not confirm
function DeleteFile([string]$filename)
{
    if (Test-Path -Path "$filename" -PathType leaf)
    {
        if ($isWhatif)
        {   Remove-Item $filename -WhatIf}      # trace the command with parameter without deletion
        else
        {
            if ($isConfirm)
            { Remove-Item $filename -Confirm} # ask for confirmation before the deletion
            else
            { Remove-Item $filename}          # deletion without confirmation
        }
    }
}

Après quelques utilisations en mode confirmation, une fois que l’utilisateur aura confiance dans ce script, il pourra supprimer ultérieurement le paramètre « –confirm » de Remove-Item par:

$isConfirm = $false

Alternativement, il est possible d’injecter le paramètre « –WhatIf » qui ne fait qu’afficher la commande d’effacement sans effacer physiquement le fichier.

$isWhatif = $true

Traitement du PGN twic 1316 de la semaine sans erreurs

Généralement, le PGN twic de la semaine n’a pas d’erreurs : c’est le cas nominal.

PS C:\Users\Chess> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

PS C:\Users\Chess> C:\Chess\Scid\Prog\bin\bases\twic\Twic2Scid.ps1
The base of reference to be updated is: C:\Chess\Scid\Prog\bin\bases\GiantBase
You can press Ctrl+C to STOP the script at any time to keep the generated files.
Do you want to DOWNLOAD https://www.theweekinchess.com/zips/twic1316g.zip (y/[n]) : y
Try to download C:\Chess\Scid\Prog\bin\bases\twic\twic1316g.zip from https://www.theweekinche
ss.com/zips/twic1316g.zip
Please wait...
Time: 3s
Do you want to UNZIP .zip to generate C:\Chess\Scid\Prog\bin\bases\twic\twic1316.pgn (y/[n]) : y
C:\Chess\Scid\Prog\bin\bases\twic\twic1316.pgn has been successfully unzipped.
Converting file C:\Chess\Scid\Prog\bin\bases\twic\twic1316.pgn to Scid database twic:
Errors/warnings will be written to twic.err.

  [0% 10   20   30   40   50   60   70   80   90  100]
  [..................................................]

Database `twic': 4245 games, 2084 players, 38 events, 29 sites.
There were no warnings or errors.
Do you want to UPDATE the base of reference C:\Chess\Scid\Prog\bin\bases\GiantBase (y/[n]) : y
Save the Scid base of reference in C:\Chess\Scid\Prog\bin\bases\backup
Database "C:\Chess\Scid\Prog\bin\bases\GiantBase": 
3936048 games
Version: 4.0
Namebase: 261178 players, 51481 events, 29891 sites, 5677 rounds.

LastWriteTime          Length Name         
-------------          ------ ----         
29/01/2020 02:48:21 550835919 GiantBase.sg4
29/01/2020 02:48:21 184994438 GiantBase.si4
29/01/2020 02:48:21   4736392 GiantBase.sn4
24/01/2020 16:49:33      2971 GiantBase.txt

After MERGING the new PGN in Scid base of reference: C:/Chess/Scid/Prog/bin/bases/GiantBase
Database "C:\Chess\Scid\Prog\bin\bases\GiantBase": 
3940293 games
Version: 4.0
Namebase: 261699 players, 51496 events, 29893 sites, 5677 rounds.

LastWriteTime          Length Name         
-------------          ------ ----         
29/01/2020 17:05:44 551629928 GiantBase.sg4
29/01/2020 17:05:45 185193953 GiantBase.si4
29/01/2020 17:05:44   4744868 GiantBase.sn4
24/01/2020 16:49:33      2971 GiantBase.txt

Do you want to process the NEXT twic 1317 (y/[n]) :  

Pour conclure, la dernière question à l’utilisateur propose de traiter le prochain twic « 1317 » qui n’existe pas encore à la date du 29 janvier 2020.

Persistance du prochain twic à traiter

Le script persiste sur le disque dur dans le répertoire courant le prochain numéro de twic afin d’enchaîner la semaine prochaine sans avoir à configurer le script à nouveau.

Visionner dans les Accessoires de Windows 10 > Bloc-notes ou NotePad++ le fichier de configuration Twic2Scid.psd1 généré par le script.

L’extension de fichier .psd1 signifie fichier de données du script PowerShell de même nom .ps1

Ce fichier texte contient la chaîne de caractère « 1317 » si le traitement du précédent twic « 1316 » a réussi.

Traitement du PGN twic 1312 avec roque illégal

D’abord si vous ne rencontrez pas de roque illégal, sautez ce paragraphe en première lecture ou lisez en diagonale.

En premier lieu,  dans son éditeur préféré, l’utilisateur met en commentaire le twic courant « 1316 » et enlève le symbole de commentaire « # » en tête de ligne du « 1312 » :

#$twicNbr = "1316" # The week in chess last number on January 29, 2020
$twicNbr = "1312" # The week in chess last number with illegal castling in the PGN

Ensuite, si l’utilisateur a déjà traité un twic avec succès tel que le twic « 1316 », il convient d’effacer le fichier de configuration Twic2Scid.psd1 par exemple avec le gestionnaire de fichier sinon le script proposera de télécharger le twic suivant « 1317 ». Attention de ne pas effacer le script .ps1 lui-même. Le fichier de données .psd1 a l’icône bleu de bloc-notes.

Tout en reconnaissant qu’une autre méthode est de laisser les lignes $twicNbr inchangées avec les commentaires originaux et de remplacer « 1317 » par « 1312 » dans le fichier de configuration Twic2Scid.psd1 avant de relancer le script.

PS C:\Chess\Scid\Prog\bin\bases\twic> C:\Chess\Scid\Prog\bin\bases\twic\Twic2Scid.ps1
The base of reference to be updated is: C:\Chess\Scid\Prog\bin\bases\RefTest
You can press Ctrl+C to STOP the script at any time to keep the generated files.
Do you want to DOWNLOAD https://www.theweekinchess.com/zips/twic1312g.zip (y/[n]) : 
Do you want to UNZIP .zip to generate C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn (y/[n]) : y
C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn has been successfully unzipped.
Converting file C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn to Scid database twic:
Errors/warnings will be written to twic.err.

  [0% 10   20   30   40   50   60   70   80   90  100]
  [..................................................]

Database `twic': 7810 games, 1691 players, 37 events, 28 sites.
There were 1 errors or warnings; examine the file "twic.err"

C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn:(game 3270, line 86359) Warning: illegal castling (O-O) in game Gelfand, B - Gareev, T, 2019

Do you want to EDIT C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn in NotePad++ at line 86359 (y/[n]) : y
Fix the PGN issue editing in NotePad++ C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn
Once the PGN fixed, RESTART this script answering 'n' or 'enter' about download and unzip

L’analyseur syntaxique capture le numéro de ligne 86359 de l’erreur du PGN afin d’aller directement à la bonne ligne lors de l’édition dans NotePad++ du PGN erroné. L’utilisateur doit un peu chercher autour du numéro d’erreur :

86360: Qb2 28. Rd2 Bc3 29. Nxc3 Qxc3 30. Bg5 Nf6 31. O-O Qd4 0-1

Prenons le cas de « 7. O-O-O ». En revanche, il n’est pas possible de faire un « 31. O-O » même si le Roi blanc est revenu sur sa case centrale initiale.

Corriger PGN twic 1312 avec roque illégal dans NotePad++

L’utilisateur devra trouver qu’il doit effacer le dernier coup n°31 tout en conservant le game terminator « 0-1 » dans l’éditeur NotePad++. Sauver le PGN ainsi corrigé et relancer le script.

PS C:\Chess\Scid\Prog\bin\bases\twic> C:\Chess\Scid\Prog\bin\bases\twic\Twic2Scid.ps1
The base of reference to be updated is: C:\Chess\Scid\Prog\bin\bases\RefTest
You can press Ctrl+C to STOP the script at any time to keep the generated files.
Do you want to DOWNLOAD https://www.theweekinchess.com/zips/twic1312g.zip (y/[n]) : 
Do you want to UNZIP C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn (y/[n]) : 
Process existing C:\Chess\Scid\Prog\bin\bases\twic\twic1312g.zip
Converting file C:\Chess\Scid\Prog\bin\bases\twic\twic1312.pgn to Scid database twic:
Errors/warnings will be written to twic.err.

  [0% 10   20   30   40   50   60   70   80   90  100]
  [..................................................]

Database `twic': 7810 games, 1691 players, 37 events, 28 sites.
There were no warnings or errors.
Do you want to UPDATE the base of reference C:\Chess\Scid\Prog\bin\bases\RefTest (y/[n]) : y
Save the Scid base of reference in C:\Chess\Scid\Prog\bin\bases\backup
Database "C:\Chess\Scid\Prog\bin\bases\RefTest": 
7810 games
Version: 4.0
Namebase: 1691 players, 37 events, 28 sites, 2167 rounds.

LastWriteTime        Length Name       
-------------        ------ ----       
15/01/2020 20:11:35 1560754 RefTest.sg4
15/01/2020 20:11:35  367252 RefTest.si4
15/01/2020 20:11:35   40893 RefTest.sn4

After MERGING the new PGN in Scid base of reference: C:/Chess/Scid/Prog/bin/bases/RefTest
Database "C:\Chess\Scid\Prog\bin\bases\RefTest": 
15620 games
Version: 4.0
Namebase: 1691 players, 37 events, 28 sites, 2167 rounds.

LastWriteTime        Length Name       
-------------        ------ ----       
26/01/2020 12:36:35 3121871 RefTest.sg4
26/01/2020 12:36:35  734322 RefTest.si4
26/01/2020 12:36:35   40893 RefTest.sn4

Do you want to process the NEXT twic 1313 (y/[n]) : 

Plus précisément, si la recherche du roque illégal nécessite de rejouer la partie sur un échiquier :

  • premièrement, menu Scid vs. PC « Fichier » > « Ouvrir » la base générée twic.si4 ;
  • deuxièmement, menu « Rechercher » > « Entête… » en se basant sur les noms des joueurs.

De toute évidence, il est indispensable de fermer la base twic.si4 et Scid vs. PC avant de relancer le script avec le PGN corrigé.

L’intelligence artificielle de ConvertFrom-String

Tout d’abord, les commentaires entre les lignes 78 et 110 du script explique dans le détail la création déclarative de l’analyseur syntaxique du fichier texte twic.err.

# How to populate the template for IA-based ConvertFrom-String according to the programmation by examples?

D’autant plus qu’en seulement deux lignes, le modèle templateTwicErr identifie les deux erreurs les plus représentatives et les plus différentes.

$templateTwicErr = @'
{pgn*:C:\Chess\base\twic\twic1312.pgn}:(game {game:3270}, line {line:86359}) {type:Warning}: {error:illegal castling (O-O) in game Gelfand, B - Gareev, T, 2019}
{Pgn*:C:\Chess\base\twic\twic1296.pgn}:(game {game:2570}, line {line:63828}) {type:Error reading tag}: {error:[FEN "nrkrqbbn/pppppppp/8/8/8/8/PPPPPPPP/NRKRQBBN w DBdb - 0 1"]}
'@

Commençons par examiner comment le générateur d’analyseur syntaxique ConvertFrom-String utilise une technique d’Intelligence Artificielle basée sur les exemples propulsée par Microsoft Research. Pour prendre un autre exemple, l’article avancé « FlashExtract: some prose about ConvertFrom-String » et les articles qui suivent comme « PGN parser in PowerShell » présentent des parsers plus élaborés. Il faut reconnaître que le parser de twic.err est beaucoup plus simple et convient pour une introduction à cette technique d’analyse syntaxique dirigée par les exemples. Plus précisément, la fonction CheckPgn appelle le cmdlet ConvertFrom-String piloté par le template.

Toutefois,  l’utilisation du parser généré se limite à l’extraction du numéro de ligne utilisé par le script pour piloter NotePad++ lors de l’édition du PGN erroné. Il faut reconnaître qu’une extraction de chaîne directe basée sur les tokens « , line  » et « ) » serait plus rapide mais moins extensible.

Purger Chess960 de la base twic.si4 issue du PGN 1296

En premier lieu, si vous ne rencontrez pas de variantes Chess960, sautez ce paragraphe en première lecture ou lisez en diagonale. Plus précisément, ce chapitre montre comment il est possible d’automatiser la recherche d’une chaîne de caractère comme « Chess960 » dans toutes les parties d’une base, définir le filtre des parties qui remplissent le critère, effacer, compacter et classifier.

D’abord,  dans Windows Powershell ISE, autoriser la définition de $twicNbr « 1296 » en supprimant le dièze « # » de commentaire en première colonne :

# remote PGN on the internet identified by its twic number in string format:
#$twicNbr = "1316" # The week in chess last number on January 29, 2020
#$twicNbr = "1312" # The week in chess last number with illegal castling in the PGN
$twicNbr = "1296" # The week in chess last number containing Chess960 variant

Ensuite,  dans le gestionnaire de fichiers de Windows, effacer le fichier textuel Twic2Scid.psd1 de persistance du prochain TwicNbr.

Finalement, lancer le script Twic2Scid.ps1 ainsi configuré dans Windows Powershell ISE. Si l’utilisateur a déjà téléchargé twic1296g.zip dans une précédente session, sauter l’étape de téléchargement.

PS C:\Chess\Scid\Prog\bin\bases\twic> C:\Chess\Scid\Prog\bin\bases\twic\Twic2Scid.ps1
The base of reference to be updated is: C:\Chess\Scid\Prog\bin\bases\RefTest
Do you want to DOWNLOAD https://www.theweekinchess.com/zips/twic1296g.zip (y/[n]) : 
Do you want to UNZIP .zip to generate C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn (y/[n]) : y
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn has been successfully unzipped.
Converting file C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn to Scid database twic:
Errors/warnings will be written to twic.err.

  [0% 10   20   30   40   50   60   70   80   90  100]
  [..................................................]

Database `twic': 2649 games, 1453 players, 32 events, 28 sites.
There were 240 errors or warnings; examine the file "twic.err"

The first five errors inside twic.err are:
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn:(game 2570, line 63828) Error: Invalid FEN: nrkrqbbn/pppppppp/8/8/8/8/PPPPPPPP/NRKRQBBN w DBdb - 0 1
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn:(game 2570, line 63828) Error reading tag: [FEN "nrkrqbbn/pppppppp/8/8/8/8/PPPPPPPP/NRKRQBBN w DBdb - 0 1"]
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn:(game 2570, line 63836) Error reading move in game Kasparov, G - Caruana, F, 2019: Nb3
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn:(game 2571, line 63854) Error: Invalid FEN: nrkrqbbn/pppppppp/8/8/8/8/PPPPPPPP/NRKRQBBN w DBdb - 0 1
C:\Chess\Scid\Prog\bin\bases\twic\twic1296.pgn:(game 2571, line 63854) Error reading tag: [FEN "nrkrqbbn/pppppppp/8/8/8/8/PPPPPPPP/NRKRQBBN w DBdb - 0 1"]

Do you want to REMOVE Chess960 games from the generated Scid twic (y/[n]) : y
Before deleting Chess960:
Database "twic": 
2649 games
Version: 4.0
Namebase: 1453 players, 32 events, 28 sites, 421 rounds.

After deleting Chess960 in the generated base but not in the PGN:
Database "twic": 
2569 games
Version: 4.0
Namebase: 1445 players, 30 events, 27 sites, 421 rounds.

Do you want to REVIEW twic in the GUI of Scid (y/[n]) : 
Are all issues FIXED (y/[n]) : y
Do you want to UPDATE the base of reference C:\Chess\Scid\Prog\bin\bases\RefTest (y/[n]) : y
Save the Scid base of reference in C:\Chess\Scid\Prog\bin\bases\backup
Database "C:\Chess\Scid\Prog\bin\bases\RefTest": 
18029 games
Version: 4.0
Namebase: 2907 players, 78 events, 55 sites, 2170 rounds.

LastWriteTime        Length Name       
-------------        ------ ----       
23/01/2020 17:45:00 3586853 RefTest.sg4
23/01/2020 17:45:00  847545 RefTest.si4
23/01/2020 17:45:00   59324 RefTest.sn4

After MERGING the new PGN in Scid base of reference: C:/Chess/Scid/Prog/bin/bases/RefTest
Database "C:\Chess\Scid\Prog\bin\bases\RefTest": 
20598 games
Version: 4.0
Namebase: 3996 players, 108 events, 80 sites, 2170 rounds.

LastWriteTime        Length Name       
-------------        ------ ----       
23/01/2020 17:49:17 4073649 RefTest.sg4
23/01/2020 17:49:17  968288 RefTest.si4
23/01/2020 17:49:17   76516 RefTest.sn4

Pour conclure, il n’y a plus de variantes Chess960 dans la base twic.si4. De plus, l’utilisateur ne souhaite pas le vérifier en validant par ENTER par défaut :

Do you want to REVIEW twic in the GUI of Scid (y/[n]) :

Par contre, l’utilisateur suppose que le twic.si4 corrigé ne contient aucun autre problème.

Are all issues FIXED (y/[n]) : y

Il est vrai que répondre automatiquement à cette question est hors de portée de ce script, étant donné le grand nombre « 240 » d’erreurs dans twic.err

En fait toutes les erreurs proviennent uniquement des variantes Chess960.

  • L’utilisateur répond « n » ou « ENTER ». Corriger le PGN ou twic.si4 en dehors des problèmes résolus relatifs à Chess960.
  • L’utilisateur répond « y ». Cela signifie qu’il considère que la base automatiquement corrigée twic.si4 est valide. Le script fusionne twic.si4 avec la base de référence.

Le langage de script de Scid vs. PC

Tout d’abord, le manuel de référence du langage de script de Scid vs. PC est en ligne depuis 2013. Par ailleurs, les commandes sont préfixées par « sc_ » signifiant Shane’s Chess.

En outre, l’utilisateur lisant le C++ consultera les commentaires du code source plus à jour :

C:\Chess\Scid\Source\scid_vs_pc-4.19\src\tkscid.cpp
// sc_game_flag:
//    If there is two args, this returns the specified flag status for the
//    specified game. If there are three args, the 2nd arg (0 or 1 or invert)
//    sets the specified flag for the game.
//    Flags that can be specified: delete, user, ...
//    Extra calling methods:
//      sc_game flag <flag> filter <0|1|invert> operates on all filtered games.

De plus, les commandes sont accessibles également sur la base courante ouverte dans l’interface graphique Scid.exe. Considérons, par exemple la vérification du numéro de slot de la clipbase en mémoire dans le script Powershell. Cette étape est nécessaire lors de la phase préliminaire de configuration du script :

$slotClipBase = 9 # 1. Run Scid. 2. menu "Help" > "Startup window". 3. above "Keep", enter in the input field the command: "sc_info clipbase" without double quotes
$slotFirstBase = 1 # First opened base

Lancer l’interface graphique (GUI) Scid.exe depuis le bouton démarrer de Windows 10 ou depuis le raccourci habituel.

Scid vs. PC menu "Aide" > "Fenêtre de démarrage"
script scid sc_info clipbase

Copier/coller la commande « sc_info clipbase » dans la zone de saisie vide au-dessus de l’option [] « Keep open after startup ». Après l’invite « > », la réponse attendue « 9 » s’affiche au-dessus.

Une commande Scid plus complexe est d’afficher la ligne principale de trois variantes identifiées par leur code ECO avec extension Scid :

foreach eco {A30u C50q E15m} {::splash::add [sc_eco summary $eco 0]}

Le résultat s’affiche au-dessus sur plusieurs lignes :

A30u [English: Symmetrical, Hedgehog, 8.Qxd4 d6]  1.c4 c5 2.Nf3 Nf6 3.g3 b6 4.Bg2 Bb7 5.O-O e6 6.Nc3 Be7 7.d4 cxd4 8.Qxd4 d6 

C50q [Giuoco Pianissimo: 4.d3 Nf6 5.O-O d6]  1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.d3 Nf6 5.O-O d6 

E15m [Queen's Indian: Nimzowitsch, 5.b3 d5]  1.d4 Nf6 2.c4 e6 3.Nf3 b6 4.g3 Ba6 5.b3 d5 
E15m [Queen's Indian: Nimzowitsch, 5.b3 d5 6.cxd5]  1.d4 Nf6 2.c4 e6 3.Nf3 b6 4.g3 Ba6 5.b3 d5 6.cxd5 
E15m [Queen's Indian: Nimzowitsch, 5.b3 d5 6.Bg2]  1.d4 Nf6 2.c4 e6 3.Nf3 b6 4.g3 Ba6 5.b3 d5 6.Bg2 

Le langage interprété est du Tcl/Tk.

Dans le script Powershell, les fonctions évoluées ScidCmdCompactBase, ScidCmdClassifyEco et DeleteChess960 utilisent l’interpréteur tcscid.exe identifié par $runScidShell :

$ScidScript = Join-Path -Path $dirTwic -ChildPath "ScidScript.txt" # textual script file will be created
# Utility of type line of command in the Powershell console or Cmd console
$runPgnToBaseScid = Join-Path -Path $pathScid -ChildPath "pgnscid.exe" # Create a new Scid base from a PGN
$runScidShell = Join-Path -Path $pathScid -ChildPath "tcscid.exe"      # Interpreter to script a Scid base
$runScidCmd = Join-Path -Path $pathScid -ChildPath "scidt.exe"         # Scid base utility driven by options
# Windows tool requiring a mouse
$runScidGui = Join-Path -Path $pathScid -ChildPath "scid.exe"          # Graphic User Interface of Scid

En outre, la fonction RunScidScipt exécute les commandes Scid sauvées temporairement dans le fichier textuel ScidScript.txt pour automatiser l’action d’importer le PGN twic dans Scid.

PS C:\Users\Chess> cd C:\Chess\Scid\Prog\bin
PS C:\Chess\Scid\Prog\bin> # l'invite de l'interpréteur Scid est pourcent
PS C:\Chess\Scid\Prog\bin> .\tcscid.exe
% sc_info clipbase
9
% exit
PS C:\Chess\Scid\Prog\bin>

Toutefois, les résultats des commandes Scid ne sont pas capturés lors de l’invocation via l’opérateur « & » de l’exécutable externe à Powershell correspondant à l’interpréteur tcscid.exe. En outre, la cmdlet Start-Process avec toutes les redirections possibles ne semble pas capturer le résultat des commandes Scid dans leur interpréteur.

En conséquence, un autre interpréteur scidt.exe de commandes Scid, identifié par $runScidCmd, plus modeste car piloté uniquement par options, permet d’afficher des statistiques sur la base Scid avant et après mise à jour.

C:\Chess\Scid\Prog\bin> scidt
usage: C:\Chess\Scid\Prog\bin\scidt -<option> <database>
 -i: General database information
 -d: Change description of database
 -l: List all games
 -c: Show compactness of database
 -C: Compact the database
 -n: Name information
 -N: Remove unused names from the namebase file
 -p[prefix]: list all players starting with prefix
 -e[prefix]: list all events starting with prefix
 -s[prefix]: list all sites starting with prefix
 -r[prefix]: list all rounds starting with prefix
 -S[sort-fields]: Sort the database
  Sort fields: date, year, event, site, round, white, black
      eco, result, length, rating, country
  Example: scidt -Syear,event,round,date myBase.si4

Voir aussi

Powershell scripting: import twic PGN to Scid

Notes   [ + ]

1. PGN : Portable Game Notation
2. TWIC : The Week in Chess
3. MS-DOS : Microsoft Disk Operating System. Quelques jours avant le premier avril 2015, Microsoft Mobile a propulsé sur le Microsoft Store « MS-DOS Mobile » pour Smartphone Windows 8 Mobile classé pour les utilisateurs de trois ans nostalgiques et plus. D’où l’expression : j’en ai plein le DOS.
4. cd: change directory
5. GUI: Graphical User Interface