GAG : Grille Américaine Générateur

GAG est un programme entièrement configurable, qui vous permet de modifier les grilles américaines générées par le logiciel PAPI.

GAG a été testé avec des grilles générées par PAPI 1.6 et 3.0.15. Il faut absolument des grilles générées à ces formats là. GAG peut ne pas, ou mal fonctionner, avec des pages html modifiées.

Exemple de grille transformées par GAG : PAPI 1.6 PAPI 3.0

Un clic sur la page est parfois nécessaire pour activer l'affichage des info-bulles. Bien évidemment javascript doit être activé sur votre navigateur.

Utilisateurs d'I.E 6, avec les dernières m.a.j du sp2 une alerte s'affiche, il vous faut autoriser le javascript pour la page générée ?? Sinon get Firefox !

Parmi les principales fonctionalités on notera les suivantes :

Utilisation :

L'objectif visé lors de la conception de GAG était de créer un programme portable, simple d'utilisation et surtout configurable par l'utilisateur final.

Installation :

GAG est écrit en Python et peut s'exécuter sur Windows, Mac, *nix. Il a été testé avec la dernière version stable de Python : 2.4.3 Il doit probablement fonctionné sous 2.3.5 mais n'a pas été testé avec ! Vous pouvez utiliser plusieurs versions de Python sur votre système sans problèmes donc installez la 2.4 [1] .

Installation de Python :

Téléchargez Python sur votre système.

  • Sous Windows et Mac

    • Cliquez sur l'installateur et laissez vous guider.
  • Sous *nix

    • Debian

      jpcw@debian:~$ sudo apt-get update
      jpcw@debian:~$ sudo apt-get install python2.4
      
    • Autres : utilisez votre sytème de paquetages, vous pouvez également compiler Python sur votre système avec GCC

Installation de GAG :

Téléchargez GAG et dézippez l'archive dans le répertoire tournoi/ où vous voulez sur votre disque dur !

  • tournoi/
    • gag.bat
    • sample_1-6_Ga.htm
    • sample_3-0_Ga.htm
    • gag/
      • BeautifulSoup.py
      • config.py
      • doc_gag.htm
      • gag.cfg
      • gag.py
      • licence.txt
      • parserga.py
      • styles.cfg
      • utils.py
      • backup/
        • doc.rst
        • gag.bat
        • gag.cfg
        • gag.po
        • notes_for_developpers
        • styles.cfg
      • i18n/
        • en/
          • LC_MESSAGES/
            • gag.mo
            • gag.po
        • es/
          • LC_MESSAGES/
            • gag.mo
            • gag.po
        • fr/
          • LC_MESSAGES/
            • gag.mo
            • gag.po
      • input/
      • output/
        • gag.css
        • my_footer
        • my_header

Vérifiez bien que le répertoire gag/ contient un répertoire input/ vide. Certains extracteurs d'archives ne recréent pas les répertoires vides. Si c'est le cas créez le!

Fonctionnement :

GAG traite les fichiers qu'il trouve dans le répertoire gag/input/, les modifie et les enregistre dans le répertoire gag/output/

Copier le fichier sample_1-6_Ga.htm dans gag/input/ et double-cliquez sur gag.py. Votre navigateur va automatiquement afficher la page créée par GAG [2] .

Votre dossier gag/ contient désormais des fichiers se terminant par .pyc, ne les effacez pas, ce sont des fichiers compilés par Python qui rendront l'exécution du programme plus rapide.

Scénario d'utilisation proposé :

Nous vous proposons le scénario d'utilisation suivant :

Plutôt que de copier sytématiquement à la main les fichiers *.htm dans gag/input/ , il est plus judicieux de copier votre fichier tournoi.papi dans le répertoire tournoi/ qui a normalement été créé lors de la décompression du zip.

Ainsi lorsque que vous utilisez PAPI vous générez vos grilles dans le même répertoire. Il ne vous reste plus qu' a double-cliquer sur gag.bat.

gag.bat filtre les documents *Ga.htm, les copie dans gag/input/ et lance gag.py.

@echo off
for %%f IN (*Ga.htm) DO copy "%%f" gag\input
cd gag
echo starting gag
gag.py

Configurer GAG :

GAG a un comportement par défaut, mais quasiment tout est configurable. Voici les options sur lesquelles vous avez la main. Le fichier gag.cfg est composé de deux sections :

Section général :

Paramètre Valeur Valeurs acceptées Commentaire
sheet gag.css nom d'un fichier la feuille de style utilisée est dans gag/output/
use_ext_stylesheet 1 1 ou 0 utilisation d'une feuille de style externe
insert_legend 1 1 ou 0 insère la légende au bas de la grille
view_local_in_browser 1 1 ou 0 ouvre la page créée dans le navigateur
delete_src 1 1 ou 0 supprime les fichiers dans input
extension .htm extension à utiliser ne pas oublier le "." .php par exemple
insert_my_header 0 1 ou 0 my_header est dans gag/output/ code php par ex
insert_my_footer 0 1 ou 0 my_footer est dans gag/output/ code php par ex
trace 1 1 ou 0 affiche le déroulement du programme
  • Les fichiers sheet (ici gag.css), my_header & my_footer doivent obligatoirement se situer dans gag/output/

Section ftp :

Paramètre Valeur Valeurs acceptées Commentaire
active 0 1 ou 0 active le transfert FTP vers le serveur
url   url ou adr IP exemple: ftpperso.free.fr
login   texte (vide) compte utilisateur
password   texte (vide) password utilisateur
dir_to_put_file   texte (vide) exemple: samples/php_pages
css 1 1 ou 0 transférer également la feuille css (si externe )
url_site   texte (vide) http://mydomain.com/
view_remote_in_browser 1 1 ou 0 affiche la page distante
  • active si = 0 annule le transfert FTP, vous pouvez conserver les autres paramètres dans le fichier.
  • dir_to_put_file attention si vous préciser un path vers un dossier, ce dernier doit exister sur le serveur.
  • css n'est considéré que si la css n'est pas incluse dans la page htm

Configurer les styles :

L'une des idées de GAG est de souligner certains résultats en modifiant leur fonte. CSS est là pour ça !

Reste a édicter les "règles" qui s'appliqueront, et ce qui représente les bonnes valeurs pour certains, ne correspondra pas aux avis des autres. L'idéal est donc que chaque utilisateur de GAG puisse édicter ses propres règles.

Comment GAG procède :

GAG charge les règles qu'il trouve dans le fichier styles.cfg et pour chaque résultat applique le style défini dans la règle correspondante.

Chaque règle à un intervalle min et max au sein duquel est évalué l'écart de points Elo entre les adversaires.

Il existe six possibilités [3] :

  • Gain contre un joueur plus fort | moins fort
  • Nulle contre un joueur plus fort | moins fort
  • Défaite contre un joueur plus fort | moins fort

On peut factoriser les règles à définir en opposant systématiquement la victoire et la défaite. Il en va de même pour les nulles ! Ce qui constiue un exploit pour un des joueurs est obligatoirement une contre-performance pour son adversaire.

Cependant, afin de pouvoir créer des tranches différentes entre les nulles et les Victoires|Défaites GAG évalue deux types de règles:

  • win
  • drawn

Ainsi nous avons défini deux types d'écarts différents pour les nulles et les victoires|défaites. Voici les tranches évaluées par GAG :

Victoire|Défaite contre un joueur dont l'écart élo est compris entre: >101-200< || >201-300< || >301 et plus

Nulle contre un joueur dont l'écart élo est compris entre: >151-300< || >301-400< || >401 et plus

Créer ses propres règles :

Vous pouvez créer autant de règles d'affichage que vous voulez. La création d'une règle doit cependant répondre à quelques contraintes.

Extrait du fichier styles.cfg règle w101-200:

[w101-200] Nom de la section est important pour le tri par ordre alphabétique croissant.
domaine=win Valeurs acceptées "win" ou "drawn".
min=101 Valeur de la borne "min" est incluse dans l'intervalle.
max=201 Valeur max non-incluse dans l'intervalle. ex: min=0,max=100 begin at 0 stop to 99
style=w101-200 Le nom de la classe du style à appliquer, bien évidemment elle doit exister dans la css.
opposite=w101-200-inv Le nom du style contraire (ici cas de la défaite contre un joueur entre -101 et -200 points élo).
comment=Victoire etc. Commentaire affiché lors de la construction de la légende.
comment_opposite=Défaite Commentaire de la légende du style opposé.

[nom_style]: vous mettez ce que vous voulez mais un nom tel que "w101-200" est explicite et indique un gain contre un joueur avec un écart élo compris entre 101 et 200 points. Les noms des sections sont ensuite classés par ordre croissant (à l'intérieur d'un même domaine) pour déterminer l'ordre de la légende.

min et max: bien évidemment deux styles consécutifs doivent avoir des intervalles contigus!

comment & comment_opposite: la légende est construite automatiquement en fonction des éléments de chaque règle : le style est appliqué au commentaire.

Pour créer vos propres règles, inspirez vous de celles existantes. Nous vous conseillons aussi d'adopter une convention pour les noms de classes que vous aurez dans votre feuilles css. Le fait de prendre le même nom que le style et d'adopter une convention de nom telle que style-inv pour la classe opposée vous aidera à retrouver vos petits. Car si nous avons bien six règles, il n'en existe pas moins douze styles dans la feuilles gag.css.

Attention aussi à ne pas rajouter "trop" de règles et de transformer votre grille en "sapin de noël" :-)

Utilisation avancée :

Lancer GAG avec d'autres configurations :

Si vous avez dézippé sur votre bureau ouvrez une console et tapez ceci :

cd Bureau\tournoi\gag
gag.py --help

Vous devriez voir apparaître les options admises par GAG au lancement :

usage: gag.py [options]
options:
  -h, --help            show this help message and exit
  -c CONFIG_GAG, --conf=CONFIG_GAG
                        software file configuration, default = gag.cfg
  -s CONFIG_STYLES, --style=CONFIG_STYLES
                        set styles configuration employed to output, default =
                        styles.cfg
  -l LANG, --lang=LANG  set language softawre default = fr

GAG se configure suivant les fichiers *.cfg [4] qui lui sont passés en arguments en ligne de commande.

Si aucun argument n'est spécifié ce sont les valeurs par défaut de ces derniers qui s'appliquent.

Vous pouvez donc lancer GAG avec :

  • Un fichier autre que gag.cfg
  • Un fichier de styles autre que styles.cfg
  • En précisant une autre langue d'exécution

Ainsi, si vous avez plusieurs scénarios d'utilisation, plutôt que de modifier à chaque fois les valeurs des fichiers de config, il suffit de créer autant de fichiers de config que de scénarios.

Il ne vous reste qu' a lancer GAG avec de nouveaux arguments. Vous pouvez invoquer les arguments avec leur "nom court" ('-x fichier'), leur "nom long" ('--xblabla fichier'), mixer les deux.

Soit en console, soit avec un fichier gag_scénario2.bat

gag.py --conf scenario2_gag.conf --styles scenario2_styles.cfg -l en

Bien entendu vous pouvez aussi duppliquer le fichier gag.bat situé dans tournoi/ et ne modifier que la dernière ligne.

Modifier les messages de traduction :

Aucun message n'est codé en dur. Ces derniers se situent à deux endroits dans le programme :

  • le fichier styles.cfg pour les commentaires de la légende
  • les fichiers gag.mo situés dans i18n/$langue/LC_MESSAGES/

Les fichiers *.mo sont des fichiers compilés. Si vous souhaitez modifié une traduction, il vous faut passer par le fichier gag.po un exemplaire se trouve dans backup/.

Faites en une copie avec votre éditeur de texte préféré ou un logiciel spécialisé [5] , effectuez votre traduction et enregistrez votre fichier au format ANSI, mais pas en UTF-8 à cause des accents car la page générée est codée en iso-8859-1.

Ensuite copiez le fichier gag.po que vous venez de modifier dans C:/Python24/Tools/i18n/

Ouvrez une console et tapez ceci :

cd C:\Python24\Tools\i18n
msgfmt.py gag.po

Vous venez de compiler votre fichier gag.po en gag.mo

Il ne vous reste plus qu'à remplacer les fichiers existants dans i18n/$langue/LC_MESSAGES/

A l'heure actuelle seuls les messages français sont traduits.

Toute traduction effectuée en suivant la procédure ci-dessus est la bienvenue. Envoyez la par mail, avec votre nom afin que je puisse vous citer, et je la mettrai en téléchargement sur le site.

Pour ajouter une langue au programme il suffit d'ajouter l'arborescence suivante avec bien entendu les bons fichiers gag.po et gag.mo dans i18n/.

  • code iso langue sur deux lettres/
    • LC_MESSAGES/
      • gag.mo
      • gag.po

Remerciements :

  • Leonard Richardson pour son module BeautifulSoup qui m'a donné envie de créer GAG.
  • Ian Bicking, Michael Foord pour la CSS de cette doc au format restructuredtext générée avec Docutils.
  • Sébastien Aout
  • JC Carpentier
  • Patrice Oriot
  • Philippe
Pour leurs encouragements, conseils et avis éclairés sur le site Ligue Midi-Pyrénées Echecs.

Licence :

GAG est distribué sous la licence GNU GPL : Le contenu de cette licence est disponible dans le fichier licence.txt

Infos :

Author:Jean-Philippe CAMGUILHEM
Version:0.1 of 2006/08/24
[1]

Si la variable d'environnement de Python défini dans votre PATH pointe sur python 2.3, lancez gag de cette façon

jpcw@debian:~$ python2.4 gag.py
[2]Si vous traitez plusieurs feuilles d'un coup, et que vous êtes sur Firefox, pensez à cocher l'option forcer l'ouverture d'une nouvelle page dans un nouvel onglet
[3]Nous avons exclu les forfaits pour lesquels un style différent s'applique, nous considérons que le fait de différencier un gain par forfait contre un joueur plus fort | moins fort n'a aucun intérêt.
[4]L'extension .cfg n'est pas du tout obligatoire, elle est employée par convention.
[5]Poedit fait ça très bien aussi.