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 :
- Interactivité de la grille :
- Affichage au niveau du nom du joueur de la moyenne Elo des adversaires rencontrés et écart par rapport à son Elo.
- Affichage du nom et du Elo de l'adversaire lors du survol de chaque résultat.
- Mise en valeur des résultats suivant la politique définie dans le fichier de configuration.
- Insertion et construction automatique de la légende (option).
- Génération de la page dans une autre langue. (Translators are welcome !)
- Traitement de plusieurs grilles d'un coup.
- Intégration de la CSS dans la page ou via un lien (option).
- Ouverture automatique de la nouvelle page dans votre navigateur par défaut (option).
- Possibilité de générer la nouvelle page avec une extension de langage de script (php ou asp etc...). Cette option vous permet par exemple d'intégrer la page générée, avec vos menus etc... via :
- l'intégration automatique d'un header dans votre langage de script (option) page php.
- l'intégration automatique d'un footer (option).
- Transfert automatique vers votre serveur via FTP des pages générées et de la CSS (option).
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.
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] .
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.4Autres : utilisez votre sytème de paquetages, vous pouvez également compiler Python sur votre système avec GCC
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!
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.
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
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 :
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/
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
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.
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
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" :-)
Si vous avez dézippé sur votre bureau ouvrez une console et tapez ceci :
cd Bureau\tournoi\gag gag.py --helpVous 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 = frGAG 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 enBien entendu vous pouvez aussi duppliquer le fichier gag.bat situé dans tournoi/ et ne modifier que la dernière ligne.
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.poVous 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
- 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.
GAG est distribué sous la licence GNU GPL : Le contenu de cette licence est disponible dans le fichier licence.txt
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.