Aide:Comment mettre en ligne les résultats sportifs

Une nouvelle de Wikinews, la source d'informations que vous pouvez écrire.

Tout contributeur sur les projets mediawiki connaissent les affres du code wiki qui certes est bien plus simple que le htmp, mais qui peut s'avérer fastidieux pour ceux qui veulent publier des résultats sportifs. Il faut d'abord créer un tableau de résultat, avec les scores, les noms de clubs, leurs liens vers Wikipédia, le cas échéant. Et puis vient le classement général, encore plus fastidieux en répétant les noms de clubs en autant de ligne qu'il y a de formations engagées dans la compétition. Pour le championnat de France de football, il faut répéter cela 38 fois dans l'année. Pour peu que vous vous passionniez au championnat de ligue 2, votre calvaire se multiplie par 2.

Et encore, le football, c'est de la franche rigolade si on le compare avec le rugby à 15. Il faut tenir compte, en plus, du bonus défensif et du bonus offensif. Pour peu que vous fassiez vous-même le classement, ce que je recommande, vous verrez que retranscrire le tableau en code wiki, relève du parcours du combattant. Aussi, les développeurs ont conçu des modèles avec des parseurs qui simplifient la tâche d'une manière singnificative. Mais ce n'est pas suffisant pour un tableau de classement ou de résultats. Pour peu que vous contribuiez sur les projets catalans ou portugais, votre calvaire ne fait que commencer.

Aussi, ce tutoriel préconise l'utilisation des scripts du logiciel vim, qui s'avérera très utile. Cet éditeur de texte en ligne de commande, est l'un des plus puissant en la matière, et recèle des richesses inexploitées.

La création des modèle[modifier | modifier le wikicode]

Un bon wikinewsien sportif devra, à moins qu'il préfère les anti-dépresseurs, créer des modèles pour mettre en forme les résultats sportifs.

Le modèle club[modifier | modifier le wikicode]

Ce modèle permet de wikifier un nom de club en fonction du paramètre inséré. Prenons un cas extrême, le rugby à XV, car il recèle une grande partie des cas de figure.

Dans un premier temps, on crée le modèle {{Club Top 14}}. Celui-ci contient la liste de tous les clubs du Top 14, et les différents paramétrage. Ce modèle devra être « substé » pour une raison bien simple, la liste change en fin de saison. Omettre une telle exigence modifierait les pages des saisons précédentes. Pour plus de commodité, on peut éditer un bouton dans la barre Mediawiki ce qui est plus que conseillé.

Ainsi, si on veut parle du Stade toulousain, on écrira {{subst:Club Top 14|14|}}, le second paramètre servant de mise en forme. Voir le mode d'emploi du modèle. Cela donnera Stade Toulousain.

Si vous voulez suivre d'autres championnats, on créera autant de modèles.


Le modèle tableau de résultat[modifier | modifier le wikicode]

Cas général[modifier | modifier le wikicode]

Le deuxième modèle qui est indispensable, est le modèle qui concerne les résultats. Il devra se remplir simplement et surtout rapidement. L'aide des parseurs s'avère indispensable. Il peut être utilisé pour plusieurs championnat,les parseurs vont simplifier la saisie. Ainsi, au lieu de recopier le nom du club en appelant à chaque fois le modèle associé, les parseurs vont permettre de sélectionner le championnat, et le club en question sans avoir à saisir tout à la fois.

Prenons le Top 14. Bien que le modèle {{Résultat top 14}} présente jusqu'à 8 lignes, mais nous ne saisirons que les 7 premières, la huitième est réservée pour la Pro D2.


{{subst:Résultat top 14
|1= 
|2= 
|match1= |bo1=|off1=|def1=
|match1a=|bo1a=|off1a=|def1a=
|horaire1=
|sc1=
|sc1a=
|match2= |bo2=|off2=|def2=
|match2a= |bo2a=|off2a=|def2a=
|horaire2=
|sc2=
|sc2a=
|match3= |bo3=|off3=|def3=
|match3a= |bo3a=|off3a=|def3a=
|horaire3=
|sc3=
|sc3a=
|match4= |bo4=|off4=|def4=
|match4a= |bo4a=|off4a=|def4a=
|horaire4=
|sc4=
|sc4a=
|match5= |bo5=|off5=|def5=
|match5a= |bo5a=|off5a=|def5a=
|horaire5=
|sc5=
|sc5a=
|match6= |bo6=|off6=|def6=
|match6a= |bo6a=|off6a=|def6a=
|horaire6=
|sc6=
|sc6a=
|match7= |bo7=|off7=|def7=
|match7a= |bo7a=|off7a=|def7a=
|horaire7=
|sc7=
|sc7a=
|match8= |bo8=|off8=|def8=
|match8a= |bo8a=|off8a=|def8a=
|horaire8=
|sc8=
|sc8a=
<!--bye= L'équipe du Super 15 dispensée de rencontre-->
<!--bye3= Les trois équipes du Super 15 dispensées de rencontre-->
}}


L'astuce consiste à inscrire la journée dans le paramètre 1, et le code championnat dans le n° 2. Ainsi, il suffira de saisir uniquement le nombre associé au club, en y indiquant les différents points de bonus. le parseur appellera le modèle {{Club Top 14}}, si le code 1 est insérant dans le paramètre 2. Il appellera le {{Club Pro D2}} pour le code 2, le {{Club Premiership}} pour le code 3, le {{Club Ligue celtique}} pour le code 4 et le {{Club Super 15}} pour le code 5.

Exemple[modifier | modifier le wikicode]

Ainsi, prenons une journée fictive :

Code source[modifier | modifier le wikicode]
{{subst:Résultat top 14
|1= 5
|2= 8
|match1=1 |bo1=|off1=|def1=
|match1a=2|bo1a=|off1a=|def1a=
|horaire1=
|sc1=18
|sc1a=16
|match2=3 |bo2=|off2=|def2=y
|match2a=4 |bo2a=|off2a=|def2a=y
|horaire2=
|sc2=31
|sc2a=27
|match3=5 |bo3=|off3=|def3=y
|match3a=6 |bo3a=|off3a=|def3a=y
|horaire3=
|sc3=15
|sc3a=16
|match4=7 |bo4=y|off4=|def4=y
|match4a=8 |bo4a=|off4a=|def4a=y
|horaire4=
|sc4=41
|sc4a=12
|match5=9 |bo5=|off5=y|def5=y
|match5a=10 |bo5a=|off5a=y|def5a=y
|horaire5=
|sc5=
|sc5a=
|match6=11 |bo6=|off6=y|def6=y
|match6a=12 |bo6a=|off6a=y|def6a=y
|horaire6=
|sc6=21
|sc6a=3
|match7=13 |bo7=o|off7=y|def7=y
|match7a=14 |bo7a=|off7a=y|def7a=y
|horaire7=
|sc7=14
|sc7a=19
|match8= |bo8=|off8=|def8= <!--Inutile pour le Top 14-->
|match8a= |bo8a=|off8a=|def8a= <!--Inutile pour le Top 14-->
|horaire8= <!--Inutile pour le Top 14-->
|sc8= <!--Inutile pour le Top 14-->
|sc8a= <!--Inutile pour le Top 14-->
<!--bye= L'équipe du Super 15 dispensée de rencontre-->
<!--bye3= Les trois équipes du Super 15 dispensées de rencontre-->
}}
rendu[modifier | modifier le wikicode]
Résultats complets de la 8ème journée du Top 14
SU Agen 18 – 16 Aviron Bayonnais[1]
Biarritz Olympique 31 – 27 US Bordeaux Bègles[1]
CA Brive-Corrèze 16 – 16 Castres Olympique
Clermont Auvergne[2] 41 – 12 Lyon OL U
Montpellier HRC 16 – 31 USA Perpignan[2]
Racing Métro 92 21 – 3 Stade Français
Rugby club toulonnais[1][2] 14 – 19 Stade Toulousain


Notes

Le fait d'inscrire le code du club et le score permet de calculer le point du bonus défensif automatiquement. Pour le bonus offensif, il faut le mentionner (voir l'aide pour ce modèle).

La rédaction d'un tableau de résultat s'en trouve simplifiée à condition de maîtriser les outils wikis à la perfection.

Le classement général[modifier | modifier le wikicode]

Le classement général est plus délicat, il nécessite l'utilisation d'applications externe pour sa mise en forme. L'une des voies consiste à créer soi-même un classement sur tableur, sur Openoffice par exemple. Si le classement d'un championnat de football peut se faire rapidement, il est un tantinet plus compliqué pour le rugby. Déjà, l'addition des scores dans le goal average nécessite un peu de calcul mental, à ceci il faut inclure les différents points de bonus. Le tableau de résultat créé ci-dessous permettra de les repérer plus facilement. Prenons le classement général du Top 14 à l'issue de la neuvième journée de la saison 2011-2012. Voici ce que donne sur OpenOffice :

La difficulté est de l'inclure dans un tableau préformaté mais vide. C'est là que vim intervient.

Tableur sur LibreOffice[modifier | modifier le wikicode]

Capture d'écran

Voici ce que donne le tableau au sujet du classement général :

Une colonne retiendra notre attention, c'est celle intitulée code. Il s'agit du paramètre 1 du modèle {{Club Top 14}} qui servira à la mise en forme du classement général dans mediawiki.

La colonne Pén. concerne les pénalités en points de terrains, et match indique le classement préférentiel en cas d'égalité de points de terrain. Mais, pour le profane, cela n'a guère d'intérêt.

Tableau vide[modifier | modifier le wikicode]

La deuxième étape consiste à utiliser un tableau vide de classement général. Les modèles préexistent, il faut appeler le modèle selon la syntaxe suivante {{subst:Classement top 14|je mets n'importe quoi}}. Le paramètre 1 doit comporter n'importe quel caractère. ce qui donne en code source :

{| border="1px" align="center" cellpadding="5px" cellspacing="0" 
|-align="center" bgcolor="#cccccc"
!colspan="11" width="70%" border="1px"| Classement général du top 14
|-
! Class.!! Club!! Pts!! J!! G!! N!! P!! B!! pp!! pc!! +-
|- style="background-color:#F0F0FF;"
| 1. 
|- style="background-color:#F0F0FF;"
| 2.
|- style="background-color:#FFF0E0;"
| 3.
|- style="background-color:#FFF0E0;"
| 4.
|- style="background-color:#FFF0E0;"
| 5.
|- style="background-color:#FFF0E0;"
| 6.
|- {{ligne grise}}
| 7.
|-
| 8.
|-{{ligne grise}}
| 9.
|-
| 10.
|-{{ligne grise}}
| 11.
|-
| 12.
|- style="background-color:#FFE0E0;"
| 13.
|- style="background-color:#FFE0E0;"
| 14.
|+ <div align="center" style="font-size:0.8em; color:#2233FF; padding:1em;">  Source : Wikinews</div>
|}

Pour une utilisation optimale de ce patron, je conseille vivement de le sauvegarder comme fichier texte sur le disque dur. Ainsi, on donnera le nom de « t14 ».

Utilisation de Vim[modifier | modifier le wikicode]

Les Commandes[modifier | modifier le wikicode]

Plage à copier sur LibreOffice.

Ceci est une solution parmi tant d'autres. Ouvrez une fenêtre vierge Vim, ou GVim. Il suffit d'inclure, en premier, le tableau vierge. Soit on le copie depuis Wikinews ou mieux, il est déjà sauvegarder sur votre disque dur. S'il se nomme « t14 », nous lanceront la commande suivante : :r [chemin]/t14 pour les utilisateurs de Linux. On supprimera la première ligne qui est vierge en s'y positionnant et en tapant dd. On se positionnera par la suite à la fin du fichier (G) et on créera une ligne vierge le cas échéant (o).

On copiera le tableau depuis LibreOffice et on le collera à la fin du fichier par la commande "+gP. On ne copiera qu'à partir de la colonne « code » jusqu'à la colonne « ±e ».

Voici ce que cela donne dans Vim :

Aperçu dans Vim

À l'aide d'un script vim, on insère la copie du classement dans le tableau vierge. Sélectionnez d'abord les 14 lignes en question (voir l'aide concernant vim.). Puis on lance la fonction de classement général par :

  • call Classement
  • Sélectionner la langue (1 : le français).
  • Sélectionner le championnat : Top 14
  • Sélectionner l'emplacement du premier au classement. Il s'agit soit de la ligne 7, soit de la ligne 8 dans vim.

Le formatage est terminé. Il s'agit de le recopier. On se positionnera en début de fichier par la commande gg. Ensuite on sélectionne le fichier ainsi mis en forme : VG"+y. On le colle dans la fenêtre Mediawiki.

Code source du script Vim[modifier | modifier le wikicode]

Pour les utilisateurs de Linux, on créera un fichier ~/.vim/plugin/nom_de_ficher.vim avec le code source suivant :

"********************************************
"Classements sportifs du Football et du Rugby
"********************************************

function Classement() range 
let langue = inputlist(['Choisissez le projet : ', '1. Français', '2. Catalan', '3. Portuguais'])
let rouge = {'1' : 'Rouge', '2' : 'Vermell', '3' : 'Vermelho'}
if str2nr(langue) <1
	return
elseif str2nr(langue) > 3
	return
endif 
if langue == 1
let choix  = inputlist(['Choisissez la compétition : ', '1. Club foot ligue 1', '2. Club foot ligue 2', '3. Club Top 14', '4. Club Pro D2', '5. Club du Super Rugby de l’hémisphère sud', '6. Club du Premiership d’Angleterre', '7. Club de la Ligue celtique', '8. Pays du Tournoi des VI Nations', '9. Pays du Tournoi des Quatre Nations', '10. Club foot Espagne', '11. Club H Cup'])
let sport = {'1' : 'Club Foot L1', '2' : 'Club Foot L2', '3' : 'Club Top 14', '4' : 'Club Pro D2', '5' : 'Club Super 15', '6' : 'Club Premiership', '7' : 'Club Ligue celtique', '8' : 'Pays 6 Nations', '9' : 'Pays Quatre Nations', '10' : 'Club Foot Espagne', '11' : 'Club H Cup'}
let finoption = 11
let drapeau = choix
elseif langue == 2
let choix  = inputlist(['Choisissez la compétition : ', '1. Club Top 14', '2. Club Pro D2', '3. Club du Super Rugby de l’hémisphère sud', '4. Club du Premiership d’Angleterre', '5. Club de la Ligue celtique', '6. Tournoi des 6 Nations', '7. Tournoi des Quatre Nations', '8. Club foot Espagne', '9. Club foot France L1', '10. Club foot France L2', '11. Club H Cup'])
let sport = {'1' : 'Club Top 14', '2' : 'Club Pro D2', '3' : 'Club Super 15', '4' : 'Club Premiership', '5' : 'Club Lliga cèltica', '6' : 'País Sis Nacions', '7' : 'País Quatre Nacions', '8' : 'Club Futbol Espanya', '9' : 'Club Futbol L1', '10' : 'Club Futbol L2', '11' : 'Club H Cup'}
let finoption = 11
let drapeau = choix + 2
elseif langue == 3
let choix  = inputlist(['Choisissez la compétition : ', '1. Club Top 14', '2. Club Pro D2', '3. Club du Super Rugby de l’hémisphère sud', '4. Club du Premiership d’Angleterre', '5. Club de la Ligue celtique', '6. Pays 6 Nations', '7. Tournoi Quatre Nations', '8. Championnat football Ligue 1', '9. Championnat football Ligue 2', '10. Championnat Espagne football', '11. Club H Cup'])
let sport = {'1' : 'Club Top 14', '2' : 'Club Pro D2', '3' : 'Club Super 15', '4' : 'Club Premiership', '5' : 'Club Celtic League', '6' : 'País Seis Nações', '7' : 'País Quatro Nações', '8' : 'Clube Futebol L1', '9' : 'Clube Futebol L2', '10' : 'Clube Futebol Espanha', '11' : 'Club H Cup'}
let finoption = 11
let drapeau = choix + 2
endif
if str2nr(choix) < 1 
return
elseif  str2nr(choix)> finoption
return
endif
if drapeau == 5
let param = 4
elseif drapeau == 8
let param = 4
elseif drapeau == 9
let param = 4
elseif drapeau == 7
let param = 4
else
let param = 1
endif
let lnum = a:firstline
while lnum <= a:lastline
let line = getline(lnum) 
let remp = substitute (line, '\(.*[0-9]\)','|\1',"ge")
let remp = substitute  (remp, '\t', '||',"ge")
let remp = substitute (remp, '\(-..[0-9^|]\)||','{{'.rouge[langue].'|\1}}||',"ge")
let remp = substitute (remp, '\(-.[0-9^|]\)||','{{'.rouge[langue].'|\1}}||',"ge")
let remp = substitute (remp, '\(-[0-9^|]\)||','{{'.rouge[langue].'|\1}}||',"ge")
let remp = substitute (remp, '||\(-.*[0-9]\)','||{{'.rouge[langue].'|\1}}',"ge")
if choix == 11
let remp = substitute (remp, '|\(\_[^|]*\)||\(\_[^|]*\)','|{{subst:'.sport[choix].'|\1|\2|4}}', "")
else
let remp = substitute (remp, '|\(\_[^|]*\)','|{{subst:'.sport[choix].'|\1|'.param.'}}', "")
endif
call setline (lnum, remp)
let lnum = lnum + 1
endwhile
let lnum = a:firstline
let lfin = a:lastline
let tab = input("Ligne du tableau : ")
while lnum <= lfin
let line = getline(lnum)
call append(tab, line)
let tab = tab + 3
let lnum = lnum +2
let lfin = lfin +1
endwhile
let dl = a:lastline + 1
let fl = 2 * a:lastline - a:firstline + 1
call SupLignes(dl , fl)
endfunction

"***************************************************"
"SUPPRESSION DES LIGNES POUR LES UTILITAIRES EN COURS
"***************************************************"

function SupLignes (dl, fl)
let lnum = a:dl
let lfin = a:fl
call setpos('.',[0, lnum , 1, lnum])
while lnum <= lfin
:delete
let lnum +=1
endwhile
endfunction

Internationalisation du code[modifier | modifier le wikicode]

Traduction des tableaux de résultats et de classement[modifier | modifier le wikicode]

Si vous voulez utiliser le code dans d'autres langues, il suffit d'adapter le tout grâce à un script vim. Prenez le classement du rugby en catalan et en portugais. Pour les résultats, on copiera le patron du modèle en question dans vim et on lancera la commande pour la traduction en catalan.

Exemple : :Call Tab_result_ca()

On traduira, par la suite du catalan en portugais : :Call Tab_result_pt()

code source à inclure dans Vim

" Remplacement des données

function Tab_result_ca()
:%s/Texte/Text/ge
:%s/Lundi à \(.*[0-9]\) h /Dilluns a les \1:/ge
:%s/Mardi à \(.*[0-9]\) h /Dimars a les \1:/ge
:%s/Mercredi à \(.*[0-9]\) h /Dimecres a les \1:/ge
:%s/Jeudi à \(.*[0-9]\) h /Dijous a les \1:/ge
:%s/Vendredi à \(.*[0-9]\) h /Divendres a les \1:/ge
:%s/Samedi à \(.*[0-9]\) h /Dissabte a les \1:/ge
:%s/Dimanche à \(.*[0-9]\) h /Diumenge a les \1:/ge
:%s/horaire/hora/ge
:%s/Résultat football/Resultat futbol/ge
:%s/Résultat/Resultat/ge
:%s/phase/fase/ge
:%s/Pays 6 Nations/País Sis Nacions/ge
:%s/Pays Quatre Nations/País Quatre Nacions/ge
:%s/ligue/lliga/ge
:%s/Ajourné/Ajornat/ge
call Pays_rugby_ca()
endfunction

function Tab_result_pt()
:%s/Text/Texto/ge
:%s/Dilluns a les/Segunda-feira ás/ge
:%s/Dimars a les/Terça-feira ás/ge
:%s/Dimecres a les/Quarta-feira ás/ge
:%s/Dijous a les/Quinta-feira ás/ge
:%s/Divendres a les/Sexta-feira ás/ge
:%s/Dissabte a les/Sábado ás/ge
:%s/Diumenge a les/Domingo ás/ge
:%s/Resultat futbol/Resultado futebol/ge
:%s/Resultat/Resultado/ge
:%s/País Sis Nacions/País Seis Nações/ge
:%s/País Quatre Nacions/País Quatro Nações/ge
:%s/lliga/ligue/ge
:%s/Ajornat/Adiada/ge
call Pays_rugby_pt()
endfunction

function Score_ca()
:%s/Pénalité/Càstig/ge
:%s/Essai/Assaig/ge
:%s/Carton jaune/Targeta groga/ge
:%s/Carton rouge/Targeta vermella/ge
:%s/but/gol/ge
:%s/Résultat-sport/Resultat-esport/ge
:%s/date/data/ge
:%s/équipe/equip/ge
:%s/résultat/resultat/ge
:%s/rapport/crònica/ge
:%s/stade/estadi/ge
:%s/affluence/assistència/ge
:%s/arbitre/àrbitre/ge
:%s/drapeau/bandera/ge
:%s/Groupe/Grup/ge
:%s/M\. /Sr. /ge
:%s/Coup de poing/Cop du puny/ge
:%s/Faute volontaire/Falta voluntària/ge
:%s/Obstruction/Obstrucció/ge
:%s/non joué/no jugat/ge
:%s/Club Foot/Club Futbol/ge
:%s/But/Gol/ge
:%s/largeur/amplada/ge
:%s/Stade/Estadi/ge
:%s/Titulaires/Titulars/ge
:%s/Remplaçants/Substituts/ge
:%s/[N|n]oir/Negre/ge
:%s/Liste clubs/Llista clubs/ge
:%s/Palmarès Foot/Palmarès futbol/ge
:%s/Ligue celtique/Lliga cèltica/ge
:%s/Prolongation/Pròrroga/ge
:%s/Ajourné/Ajornat/ge
:%s/1er/1/ge
call Pays_rugby_ca()
call Date_ca()
endfunction

function Score_pt()
:%s/Assaig/Ensaio/ge
:%s/Càstig/Penalidade/ge
:%s/Drop/Ressalto/ge
:%s/Targeta groga/Cartão amarelo/ge
:%s/Targeta vermella/Cartão vermelho/ge
:%s/Resultat-esport/Partida de Rugby/ge
:%s/bandera/bandeira/ge
:%s/resultat/resultado/ge
:%s/crònica/crónica/ge
:%s/estadi/estádio/ge
:%s/assistència/espectador/ge
:%s/àrbitre/árbitros/ge
:%s/Grup/Grupo/ge
:%s/{{Clr}}/{{Clear}}/ge
:%s/Cop du puny/Soco/ge
:%s/Falta voluntària/Falta voluntária/ge
:%s/Obstrucció/Obstrução/ge
:%s/no jugat/não jugada/ge
:%s/Club Futbol/Clube Futebol/ge
:%s/amplada/largura/ge
:%s/Estadi/Estádio/ge
:%s/Llista clubs/Lista clubes/ge
:%s/Palmarès futbol/Top futebol/ge
:%s/Lliga cèltica/Celtic League/ge
:%s/Pròrroga/Prorrogação/ge
:%s/Ajornat/Adiada/ge
call Pays_rugby_pt()
call Date_pt()
endfunction

function Pays_rugby_ca()
:%s/France/França/ge
:%s/Angleterre/Anglaterra/ge
:%s/Pays de Galles/Gal·les/ge
:%s/Écosse/Escòcia/ge
:%s/Italie/Itàlia/ge
:%s/Nouvelle-Zélande/Nova Zelanda/ge
:%s/Australie/Austràlia/ge
:%s/Afrique du Sud/Sud-àfrica/ge
:%s/Japon/Japó/ge
:%s/Irlande du Nord/Irlanda del Nord/ge
:%s/{{Irlande/{{Irlanda del Sud/ge
:%s/Argentine/Argentina/ge
:%s/Géorgie/Geòrgia/ge
:%s/Fidji/Fiji/ge
:%s/Irlande/Irlanda/ge
:%s/Canada/Canadà/ge
:%s/Espagne/Espanya/ge
:%s/bandera\([1-2]\)=França/bandera\1=France/ge
:%s/Uruguay/Uruguai/ge
:%s/bandera\([1-2]\)=Uruguai/bandera\1=Uruguay/ge
endfunction

function Pays_rugby_pt()
:%s/Anglaterra/Inglaterra/ge
:%s/Gal·les/País de Gales/ge
:%s/Escòcia/Escócia/ge
:%s/Itàlia/Itália/ge
:%s/Nova Zelanda/Nova Zelândia/ge
:%s/Austràlia/Austrália/ge
:%s/Sud-àfrica/África do Sul/ge
:%s/Japó/Japão/ge
:%s/Irlanda del Nord/Irlanda do Norte/ge
:%s/Irlanda del Sud/República da Irlanda/ge
:%s/Geòrgia/Geórgia/ge
:%s/Canadà/Canadá/ge
:%s/Espanya/Espanha/ge
endfunction

function Date_ca()
:%s/ janvier / de gener del /ge
:%s/ février / de febrer del /ge
:%s/ mars / de març del /ge
:%s/ avril / d'abril del /ge
:%s/ mai / de maig del /ge
:%s/ juin / de juny del /ge
:%s/ juillet / de juliol del /ge
:%s/ août / d'agost del /ge
:%s/ septembre / de setembre del /ge
:%s/ octobre / d'octubre del /ge
:%s/ novembre / de novembre del /ge
:%s/ décembre / de desembre del /ge
endfunction

function Date_pt()
:%s/de gener del/de janeiro de/ge
:%s/de febrer del/de fevereiro de/ge
:%s/de març del/de março de/ge
:%s/d'abril del/de abril de/ge
:%s/de maig del/de maio de/ge
:%s/de juny del/de junho de/ge
:%s/de juliol del/de julho de/ge
:%s/d'agost del/de agosto de/ge
:%s/de setembre del/de setembro de/ge
:%s/d'octubre del/de outubro de/ge
:%s/de novembre del/de novembro de/ge
:%s/de desembre del/de dezembre de/ge
endfunction

Les résultats sportifs[modifier | modifier le wikicode]

Présentation[modifier | modifier le wikicode]

Il s'agit des résultats par rencontre retranscrit dans le modèle {{Résultat-sport}}. Prenons un match international fictif de rugby à 15 :

15 septembre 2011
Nouvelle-Zélande Nouvelle-Zélande 33 – 16 Angleterre Angleterre Eden Park, Auckland
Affluence : 52 174 spectateurs
Arbitre : M. Romain Poite
Pénalité marquée après 3 minutes 3' Carter

Essai inscrit après 15 minutes 15' Nonu
Pénalité marquée après 16 minutes 16' (Transf.)
Pénalité marquée après 28 minutes 28' Carter
Drop inscrit après 34 minutes 34' Cruden
Essai inscrit après 48 minutes 48' Dagg
Pénalité marquée après 49 minutes 49' (Transf.)
Pénalité marquée après 68 minutes 68' Carter
Essai inscrit après 78 minutes 78' Thorn
Pénalité marquée après 79 minutes 79' (Transf.)

Pénalité marquée après 10 minutes 10' Wilkinson

Drop inscrit après 18 minutes 18' Wilkinson
Essai inscrit après 48 minutes 48' Tuilagi
Pénalité marquée après 49 minutes 49' (Transf.) Wilkinson
Pénalité marquée après 71 minutes 71' Wilkinson

Le code source est le suivant :

{{Résultat-sport
|date=15 septembre 2011
|équipe1=Nouvelle-Zélande
|drapeau1=New Zealand
|résultat=33 – 16
|équipe2=Angleterre
|drapeau2=England
|rapport=http://irb.com
|buts1={{Pénalité|3|}} Carter<br/>
{{Essai|15|}} Nonu<br/>
{{Pénalité|16|Transf.}} <br/>
{{Pénalité|28|}} Carter<br/>
{{Drop|34|}} Cruden<br/>
{{Essai|48|}} Dagg<br/>
{{Pénalité|49|Transf.}} <br/>
{{Pénalité|68|}} Carter<br/>
{{Essai|78|}} Thorn<br/>
{{Pénalité|79|Transf.}} <br/>
|buts2={{Pénalité|10|}} Wilkinson<br/>
{{Drop|18|}} Wilkinson<br/>
{{Essai|48|}} Tuilagi<br/>
{{Pénalité|49|Transf.}} Wilkinson<br/>
{{Pénalité|71|}} Wilkinson<br/>
|stade=Eden Park, Auckland
|affluence=52174
|arbitre=M. Romain Poite {{France|2}}
}}

Le calvaire commence quand il faut traduire cela en catalan et puis en portugais. Les scripts vim seront là pour simplifier la tâche.

Les scripts vim[modifier | modifier le wikicode]

La méthode la plus simple consiste donc à traduire du français vers le catalan, et du catalan vers le portugais. on ajoutera dans un fichier avec l'extension .vim comme par exemple ~/.vim/plugin/rugby.vim pour les utilisateurs de Linux. Voyez, le code vim ci-dessus.

Utilisation[modifier | modifier le wikicode]

Une fois le modèle {{Résultat-sport}} renseigné, on copie le code dans une fenêtre vim.

On lance la commande :call Score_ca(). On corrige les différentes erreurs liées à la traduction (France sera traduit par Français dans le paramètre drapeau[1 ou 2]. Cela donnera le code suivant pour le projet catalan :

{{Resultat-esport
|data=15 de setembre del 2011
|equip1=Nova Zelanda
|bandera1=New Zealand
|resultat=33 – 16
|equip2=Anglaterra
|bandera2=England
|crònica=http://irb.com
|gols1={{Càstig|3|}} Carter<br/>
{{Assaig|15|}} Nonu<br/>
{{Càstig|16|Transf.}} <br/>
{{Càstig|28|}} Carter<br/>
{{Drop|34|}} Cruden<br/>
{{Assaig|48|}} Dagg<br/>
{{Càstig|49|Transf.}} <br/>
{{Càstig|68|}} Carter<br/>
{{Assaig|78|}} Thorn<br/>
{{Càstig|79|Transf.}} <br/>
|gols2={{Càstig|10|}} Wilkinson<br/>
{{Drop|18|}} Wilkinson<br/>
{{Assaig|48|}} Tuilagi<br/>
{{Càstig|49|Transf.}} Wilkinson<br/>
{{Càstig|71|}} Wilkinson<br/>
|estadi=Eden Park, Auckland
|assistència=52174
|àrbitre=Sr. Romain Poite {{França|2}}
}}

Pour le projet portugais, on reprend le code en catalan ci-dessus et on lance :call Score_pt() et on corrige les éventuelles erreurs.

{{Partida de Rugby
|data=15 de setembro de 2011
|equip1=Nova Zelândia
|bandeira1=New Zealand
|resultado=33 – 16
|equip2=Inglaterra
|bandeira2=England
|crónica=http://irb.com
|gols1={{Penalidade|3|}} Carter<br/>
{{Ensaio|15|}} Nonu<br/>
{{Penalidade|16|Transf.}} <br/>
{{Penalidade|28|}} Carter<br/>
{{Ressalto|34|}} Cruden<br/>
{{Ensaio|48|}} Dagg<br/>
{{Penalidade|49|Transf.}} <br/>
{{Penalidade|68|}} Carter<br/>
{{Ensaio|78|}} Thorn<br/>
{{Penalidade|79|Transf.}} <br/>
|gols2={{Penalidade|10|}} Wilkinson<br/>
{{Ressalto|18|}} Wilkinson<br/>
{{Ensaio|48|}} Tuilagi<br/>
{{Penalidade|49|Transf.}} Wilkinson<br/>
{{Penalidade|71|}} Wilkinson<br/>
|estádio=Eden Park, Auckland
|espectador=52174
|árbitros=Sr. Romain Poite {{França|2}}
}}

Les codes ainsi convertis seront copiés dans les projets respectifs.

Création d'un Bot[modifier | modifier le wikicode]

Si voulez être un peu plus taquin, vous constaterez qu'initialiser les pages rugby des cinq championnats dans les trois langues, français, catalan et portugais, peut rebuter nombre de contributeurs. Aussi, j'ai écrit en Python un script permettant d'initialiser les pages de rugby dans les cinq championnats. Deux fichiers ont été créés. Ils tournent avec l'interface pywikibot. Il est fortement conseillé de demander le statut de Bot à votre script, ceci pourrait irriter plusieurs membres de la communauté à moins que cette dernière en décide autrement. Le nombre maximum de page à initialiser peut aller jusqu'à cinq par semaines sur les projets français, catalan et portugais. Dans ce programme, les liens interwiki ont été insérés pour permettre la création rapide des pages sur Wikidata. Une fois ces dernières initialisées, on pourra effacer lesdits liens dès la première actualisation des pages.

Fichier principal[modifier | modifier le wikicode]

Ainsi, le premier fichier s'appellera init_rugby.py.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#Création automatique des pages wikinews

import pywikibot
from pywikibot import pagegenerators, Bot, throttle
from pywikibot import config2 as config
#import editarticle
import webbrowser
import messages_bot_perso

class init_rugby():
	u'\033[1m======================================\nINITIALISATION DES PAGES RUGBY\n======================================\033[0m\n\n'
	
	def __init__(self):
		self.sitept = pywikibot.Site('pt', 'wikinews')
		self.sitefr = pywikibot.Site('fr', 'wikinews')
		self.siteca = pywikibot.Site('ca', 'wikinews')
		config.put_throttle = 1
#		throttle.setDelays()

		self.clubtop14= {1: u'SU Agen',
			2: u'US Bordeaux Bègles',
			3: u'CA Brive-Corrèze',
			4: u'Castres Olympique,',
			5: u'Clermont Auvergne',
			6: u'Stade rochelais',
			7: u'Lyon OL U',
			8: u'Montpellier HRC',
			9: u'US Oyonnax',
			10: u'Section Paloise',
			11: u'Racing Club de France',
			12: u'Stade Français',
			13: u'Rugby club toulonnais',
			14: u'Stade Toulousain'}
		self.clubprod2= {1: u'Soyaux Angoulême',
			2: u'Stade aurillacois',
                        3: u'Aviron Bayonnais',
			4: u'AS Béziers Hérault',
			5: u'Biarritz Olympique',
			6: u'U S Carcassonnaise',
			7: u'US Colomiers',
			8: u'US Dax Rugby',
                        9: u'FC Grenoble',
			10: u'RC Massy',
			11: 'Stade montois',
			12: u'US Montauban',
			13: u'RC Narbonne Méditerranée',
			14: u'USO Nevers',
			15: u'USA Perpignan',
			16: u'RC Vannetais'}
		self.clubpremier={1: u'Bath Rugby',
			2: u'Exeter Rugby',
			3: u'Gloucester RFC',
			4: u'Harlequins',
			5: u'Leicester Tigers',
			6: u'London Irish',
			7: u'London Wasps',
			8: u'Newcastle Falcons',
			9: u'Northampton Saints',
			10: u'Sale Sharks',
			11: u'Saracens',
			12: u'Worcester Warriors'}
		self.clublc={1: u'Benetton Rugby Trévise',
			2: u'Cardiff Blues',
			3: u'Toyota Cheetahs',
			4: u'Connacht Rugby',
			5: u'Edinburgh Rugby',
			6: u'Glasgow Warriors',
			7: u'Southern Kings',
			8: u'Llanelli Scarlets',
			9: u'Leinster Rugby',
			10: u'Munster Rugby',
			11: u'Newport Gwent Dragons',
			12: u'Ospreys',
			13: u'Ulster Rugby',
			14: u'Zebre'}
		self.clubs15={1:u'Jaguares',
                        2: u'Brumbies',
			3: u'Blues',
			4: u'Bulls',
			5: u'Chiefs',
			6: u'Crusaders',
			7: u'Highlanders',
			8: u'Hurricanes',
                        9: u'Sunwolves',
			10: u'Lions',
			11: u'Melbourne Rebels',
			12: u'Reds',
			13: u'Sharks',
			14: u'Stormers',
			15: u'Waratahs'}
		self.type_championnat = {1: u'Top 14', 2: u'Pro D2', 3: u'Premiership', 4: u'Ligue celtique', 5: u'Super Rugby'}
		self.journee_fr={ 1: u'première',
			2: u'deuxième',
			3: u'troisième',
			4: u'quatrième',
			5: u'cinquième',
			6: u'sixième',
			7: u'septième',
			8: u'huitième',
			9: u'neuvième',
			10: u'dixième',
			11: u'onzième',
			12: u'douzième',
			13: u'treizième',
			14: u'quatorzième',
			15: u'quinzième',
			16: u'seizième',
			17: u'dix-septième',
			18: u'dix-huitième',
			19: u'dix-neuvième',
			20: u'vingtième',
			21: u'vingt-et-unième',
			22: u'vingt-deuxième',
			23: u'vingt-troisième',
			24: u'vingt-quatrième',
			25: u'vingt-cinquième',
			26: u'vingt-sixième',
			27: u'vingt-septième',
			28: u'vingt-huitième',
			29: u'vingt-neuvième',
			30: u'trentième'}
		self.journee_ca={1:[u'primer', u'primera'],
			2:[u'segon', u'segona'],
			3:[u'tercer', u'tercera'],
			4:[u'quart', u'quarta'],
			5:[u'cinquè', u'cinquena'],
			6:[u'sisè', u'sisena'],
			7:[u'setè', u'setena'],
			8:[u'vuitè', u'vuitena'],
			9:[u'novè', u'novena'],
			10:[u'desè', u'desena'],
			11:[u'onzè', u'onzena'],
			12:[u'dotzè', u'dotzena'],
			13:[u'tretzè', u'tretzena'],
			14:[u'catorzè', u'catorzena'],
			15:[u'quinzè', u'quinzena'],
			16:[u'setzè', u'setzena'],
			17:[u'dissetè', u'dissetena'],
			18:[u'divuitè', u'divuitena'],
			19:[u'dinovè', u'dinovena'],
			20:[u'vintè', u'vintena'],
			21:[u'vint-i-unè', u'vint-i-unena'],
			22:[u'vint-i-dosè', u'vint-i-dosena'],
			23:[u'vint-i-tresè', u'vint-i-tresena'],
			24:[u'vint-i-quatrè', u'vint-i-quatrena'],
			25:[u'vint-i-cinquè', u'vint-i-cinquena'],
			26:[u'vint-i-sisè', u'vint-i-sisena'],
			27:[u'vint-i-setè', u'vint-i-setena'],
			28:[u'vint-i-vuitè', u'vint-i-vuitena'],
			29:[u'vint-i-novè', u'vint-i-novena'],
			30:[u'trentè', u'trentena']}
		self.journee_pt={1:[u'primeiro', u'primeira'],
			2:[u'segundo', u'segunda'],
			3:[u'terceiro', u'terceira'],
			4:[u'quarto', u'quarta'],
			5:[u'quinto', u'quinta'],
			6:[u'sexto', u'sexta'],
			7:[u'sétimo', u'sétima'],
			8:[u'oitavo', u'oitava'],
			9:[u'nono', u'nona']}
		self.journee_diz_pt={1:[u'décimo', u'décima'],
			2:[u'vigésimo', u'vigésima'],
			3:[u'trigésimo', u'trigésima']}
		self.rencontre={1:[0,0], 2:[0,0], 3:[0,0], 4:[0,0], 5:[0,0], 6:[0,0], 7:[0,0], 8:[0,0], 9:[0,0]}
		self.horaires={1:[0,0,0], 2:[0,0,0], 3:[0,0,0], 4:[0,0,0], 5:[0,0,0], 6:[0,0,0], 7:[0,0,0], 8:[0,0,0], 9:[0,0,0] }
		self.semaine={1:[u'Lundi', u'Dilluns', 'Segunda-feira'],
			2: [u'Mardi', u'Dimars', u'Terça-feira'],
			3: [u'Mercredi', u'Dimecres', u'Quarta-feira'],
			4: [u'Jeudi', u'Dijous', u'Quinta-feira'],
			5: [u'Vendredi', u'Divendres', u'Sexta-feira'],
			6: [u'Samedi', u'Dissabte', u'Sábado'],
			7: [u'Dimanche', u'Diumenge', u'Domingo']}
		self.resultat={1:u'Les résultats de la xxxx journée', 2:u'Els resultats del xxxx dia', 3: u'Os resultados da xxxx jornada'}

		self.liens_t14={ 1:[u'fr', u'http://www.lnr.fr/rugby-top-14/calendrier-resultats-rugby-top-14', self.resultat, u'Ligue nationale de rugby'], 2: [u'fr', u'http://www.rugbyrama.fr/rugby/top-14/calendar-result.shtml', self.resultat, u'Rugbyrama – Midi Olympique']}
		self.liens_pd2={ 1:[u'fr', u'http://www.lnr.fr/rugby-pro-d2/calendrier-resultats-rugby-pro-d2', self.resultat, u'Ligue nationale de rugby'], 2: [u'fr', u'http://www.rugbyrama.fr/rugby/pro-d2/calendar-result.shtml', self.resultat, u'Rugbyrama – Midi Olympique']}
		self.liens_pship={1:[u'en', u'http://www.premiershiprugby.com/aviva-premiership-rugby-league-table/', u'Table', u'Aviva Premiership'], 2:['en',u'http://www.premiershiprugby.com/aviva-premiership-rugby-results/', u'Fixtures and results',  u'Aviva Premiership']}
		self.liens_lc={1:[u'en', u'http://www.pro14rugby.org/results/', u'Fixtures and results', 'Guinness Pro14'], 2:[u'en', u'http://www.pro14rugby.org/championship-table/', u'Table', u'Guinness Pro14']}
		self.liens_s15={1: [u'en', u'http://www.superxv.com/fixtures/', u'Fixtures', 'Super XV'], 2:[u'en', u'http://www.superxv.com/results/', u'Results', u'Super XV']}
		self.liens = { 1: self.liens_t14 , 2: self.liens_pd2, 3: self.liens_pship, 4: self.liens_lc, 5: self.liens_s15 }
		 
	
				
	def init_page_rugby(self, journee, championat, bye=1):
		self.competition={1:[7, 14, self.clubtop14, u't14'], 2: [8, 16, self.clubprod2, u'pd2'], 3:[6, 12, self.clubpremier, u'pship'], 4:[7, 14, self.clublc, u'lc'], 5:[7, 15, self.clubs15, u's15']}
		annee = u'2017' #Année en cours
		saison = u'2017-2018' #saison en cours
		if bye==1 and championat==5: #Dans le cas d'un SUPER 15, il faut tenir compte du nombre d'équipes en BYE. Une rencontre en moins s'il y en a 3.
			self.competition[5][0]=7
		if bye==3 and championat==5: #Dans le cas d'un SUPER 15, il faut tenir compte du nombre d'équipes en BYE. Une rencontre en moins s'il y en a 3.
			self.competition[5][0]=6
#			self.equip_bye={1:u'1', 2: '2', 3:u'3'}


#Tableau indiquant le championnat en question 
		tableau=messages_bot_perso.messages_init()
		print u'\033[2J\033[H'
		tableau.init_cadre(50 ,7)
		texte_cadre= u'Championnat du '+  self.type_championnat[championnat]
		tableau.remplissage_cadre(texte_cadre, 32, 49, 1, 2, 3)	
		
		texte_cadre= self.journee_ca[journee][1] + u' jornada o el ' +  self.journee_ca[journee][0] + u' dia'
		tableau.remplissage_cadre(texte_cadre, 34, 49, 1, 4, 3)
		texte_cadre= self.journee_fr[journee] + u' journée'
		tableau.remplissage_cadre(texte_cadre, 34, 49, 1, 5, 3)
		
		#CALCUL DES ORDINAUX EN PORTUGAIS
		dizaine = (journee/10) % 10
		if dizaine ==0:
			ordre_jour_pt_m = texte_cadre= self.journee_pt[journee][0]
			ordre_jour_pt_f = texte_cadre= self.journee_pt[journee][1]
		elif dizaine * 10 ==journee:
			ordre_jour_pt_m = self.journee_diz_pt[dizaine][0]
			ordre_jour_pt_f = self.journee_diz_pt[dizaine][1]
		else:
			ordre_jour_pt_m = self.journee_diz_pt[dizaine][0] + u' ' + self.journee_pt[journee % 10][0]
			ordre_jour_pt_f = self.journee_diz_pt[dizaine][1] + u' ' + self.journee_pt[journee % 10][1]

		texte_cadre = ordre_jour_pt_m + u' dia ; ' + ordre_jour_pt_f + u' jornada'

		tableau.remplissage_cadre(texte_cadre, 34, 49, 1, 6, 3)
		texte_cadre = str(self.competition[championat][0]) + u' rencontres prévues.'
		tableau.remplissage_cadre(texte_cadre, 31, 49, 1, 7, 3)
		if championat in range (1,3):
			while 1:
				print '\033[12;0HLiens pour le %s : ' % self.type_championnat[championat], self.liens[championat][1][1]
				choix = raw_input('Le choix est-il correct ? ')
				if choix in ('o', 'O', 'Oui', 'oui', 'OUI'):
					tableau.efface_ligne(12, 1, 5, 165)
					break
				entree_lien= raw_input('Lien : ')
				self.liens[championat][1][1]=unicode(entree_lien.replace(' ', '_'), "utf8")
				tableau.efface_ligne(12, 1, 5, 165)
				
				print '\033[12;0H', self.liens[championat][1][1]
			page = str(5170 + journee)
			self.liens[championat][2][1]=self.liens[championat][2][1].replace('calendar-result','calendar-result_rnd'+page)
			titre_source_fr_1 = self.resultat[1].replace('xxxx', self.journee_fr[journee])
			titre_source_ca_1 = self.resultat[2].replace('xxxx', self.journee_ca[journee][0])
			titre_source_pt_1 = self.resultat[3].replace('xxxx',  ordre_jour_pt_f)
			titre_source_fr_2 = titre_source_fr_1
			titre_source_ca_2 = titre_source_ca_1
			titre_source_pt_2 = titre_source_pt_1
		else:
			titre_source_fr_1 = self.liens[championat][1][2]
			titre_source_fr_2= self.liens[championat][2][2]
			titre_source_ca_1 = self.liens[championat][1][2]
			titre_source_ca_2 = self.liens[championat][2][2]
			titre_source_pt_1 = self.liens[championat][1][2]
			titre_source_pt_2 = self.liens[championat][2][2]
	

#REMPLISSAGE DE LA GRILLE DE MATCH
		print u'\033[12;1H'
		match = 1
		tableau.init_cadre(80, self.competition[championat][0] , 1, 77)
		tableau.init_cadre(80, self.competition[championat][1] , 12 , 77)
		liste = 1
		while liste <= self.competition[championat][1]:
			if liste < 10:
				liste_club= str(liste) + u'.  ' + self.competition[championat][2][liste]
			else:
				liste_club= str(liste) + u'. ' + self.competition[championat][2][liste]
			tableau.remplissage_cadre(liste_club,31, 49, 1, liste + 12, 78)
			liste +=1

		while match <= self.competition[championat][0]:
			tableau.efface_ligne(12, 1, 2)
			print u'\033[12;0H\033[1mmatch n° %s\033[0m' % match
			print u'\033[13;0HÉquipe recevante'
			self.rencontre[match][0]= self.choix_equipe(championat, 14)
			equipe=self.rencontre[match][0]
			tableau.efface_ligne(17)
			print u'\033[18;0HÉquipe visiteuse'
			self.rencontre[match][1]= self.choix_equipe(championat, 19)
			tableau.efface_ligne(25)
			self.horaires[match]=self.horaire(22)
			print u'\033[25;0HLa rencontre se déroulera le %s à %s h %s' % (self.semaine[self.horaires[match][0]][0], self.horaires[match][1], self.horaires[match][2])
			print u'\033[%s;78Hmatch n° %s : %s v. %s =⇒ %s à %s h %s' % ( match +1, match, self.competition[championat][2][self.rencontre[match][0]], self.competition[championat][2][self.rencontre[match][1]], self.semaine[self.horaires[match][0]][0], self.horaires[match][1], self.horaires[match][2])
			match +=1

#CREATION D'UNE LIGNE BYE POUR LE CHAMPIONNAT DU SUPER 15
		if championnat == 5:
			boucle_bye =1
			equipe_bye=u''
			while boucle_bye <= bye:
				tableau.efface_ligne(12,1,10)
				print u'\033[12;1HÉquipe n° %s en bye : ' % boucle_bye
				equipe=str(self.choix_equipe(championat, 14))
				equipe_bye=equipe_bye + u'{{subst:Club Super 15|' + equipe + u'|3}}'
                                if boucle_bye<3:
                                    equipe_bye=equipe_bye + u', '
				tableau.remplissage_cadre(equipe_bye, 32, 49, 2, 31, 1)
				boucle_bye +=1	


#CREATION DE LA GRILLE DE MATCH AVEC LES MODELES ASSOCIÉS				
		match = 1
		while 1:
			tableau.efface_ligne(12, 1,18)
			choix = raw_input('\033[12;0HLa grille ci-contre est-elle-correcte ? (o/N) : ')
			if choix in ('o', 'O', 'Oui', 'oui', 'OUI'):
				break
			while 1:
				tableau.efface_ligne(12)
				choix = raw_input('\033[12;0HNuméro de match à corriger : ')
				match = int(choix)
				if match in range (0,  self.competition[championat][0] +1):
					break
				tableau.efface_ligne(12)
			tableau.efface_ligne(12)
			print u'\033[12;0H\033[1mmatch n° %s\033[0m' % match
			print u'\033[13;0HÉquipe recevante'
			self.rencontre[match][0]= self.choix_equipe(championat, 14)
			equipe=self.rencontre[match][0]
			tableau.efface_ligne(17)
			print u'\033[18;0HÉquipe visiteuse'
			self.rencontre[match][1]= self.choix_equipe(championat, 19)
			tableau.efface_ligne(25)
			self.horaires[match]=self.horaire(22)
			print u'\033[25;0HLa rencontre se déroulera le %s à %s h %s' % (self.semaine[self.horaires[match][0]][0], self.horaires[match][1], self.horaires[match][2])
			print u'\033[%s;78H' % (match +1) , 78 * u' '
			print u'\033[%s;78Hmatch n° %s : %s v. %s =⇒ %s à %s h %s' % ( match +1, match, self.competition[championat][2][self.rencontre[match][0]], self.competition[championat][2][self.rencontre[match][1]], self.semaine[self.horaires[match][0]][0], self.horaires[match][1], self.horaires[match][2])

		match=1
		grille_fr=u'{{subst:Résultat top 14\n|1=' + str(journee) + u'\n|2=' + str(championnat) + u'\n'
		grille_ca=u'{{subst:Resultat Top 14\n|1=' + str(journee) + u'\n|2=' + str(championnat) + u'\n'
		grille_pt=u'{{subst:Resultado Top 14\n|1=' + str(journee) + u'\n|2=' + str(championnat) + u'\n'

#WIKIFICATION DE LA GRILLE DE MATCH
		while match <= self.competition[championat][0]:
			heures = str(self.horaires[match][1])
			if  self.horaires[match][2] <10:
				minutes = u'0' + str(self.horaires[match][2])
			else:
				minutes = str(self.horaires[match][2])
			match1 = str(match)
			grille = u'|match' + match1 + u'=' + str(self.rencontre[match][0]) + u'|bo' + match1 + u'=|off' + match1 + u'=|def' + match1 + u'=\n'
			grille = grille + u'|match' + match1 + u'a=' + str(self.rencontre[match][1]) + u'|bo' + match1 + u'a=|off' + match1 + u'a=|def' + match1 + u'a=\n'
			resultat = u'|sc' + str(match) + u'=\n|sc' +str( match) + u'a=\n'

			grille_fr = grille_fr +grille + u'|horaire' + match1 + u'={{Texte|' + self.semaine[self.horaires[match][0]][0] + u' à ' +  heures + u' h ' +  minutes + u'|0.8|#000080}}\n' + resultat
			grille_ca = grille_ca + grille + u'|hora' + match1 + u'={{Text|' + self.semaine[self.horaires[match][0]][1] + u' a les ' +  heures + u'.' +  minutes + u' h|0.8|#000080}}\n'+ resultat
			grille_pt = grille_pt + grille + u'|hora' + match1 + u'={{Texto|' + self.semaine[self.horaires[match][0]][2] + u' ás ' +  heures + u':' +  minutes + u'|0.8|#000080}}\n' + resultat
			match +=1

		if championnat == 5 and bye==1:
			grille_fr=grille_fr + u'|bye=' + equipe_bye + u'\n}}'
			grille_ca=grille_ca + u'|bye=' + equipe_bye + u'\n}}'
			grille_pt=grille_pt + u'|bye=' + equipe_bye + u'\n}}'
		elif championat ==5 and bye==3:
			grille_fr=grille_fr + u'|bye3=' + equipe_bye + u'\n}}'
			grille_ca=grille_ca + u'|bye3=' + equipe_bye + u'\n}}'
			grille_pt=grille_pt + u'|bye3=' + equipe_bye + u'\n}}'

		else:
			grille_fr= grille_fr + u'}}'
			grille_ca= grille_ca + u'}}'
			grille_pt= grille_pt + u'}}'
		
#COMPOSITION DU TEXTE EN FONCTION DU CHAMPIONNAT
#EN-TÊTE DE LA PAGE DE GARDE
		
		if journee < 10:
			rang_journee = '0' + str(journee)
		else:
			rang_journee = str(journee)

		texte_fr=u'{{En cours}}\n{{Rugby à XV}}\n{{date|{{subst:#ifeq:{{subst:#time:j}}|1|1er|{{subst:#time:j}}}} {{subst:#time:F Y}}}}\n'
		texte_ca=u'{{Esdeveniments en curs}}\n{{Rugbi a 15}}\n{{Crèdit|{{subst:#time:j}} {{subst:#switch:{{subst:#time:m}}|#default=de {{subst:#time:F}}|04=d\'{{subst:#time:F}}|08=d\'{{subst:#time:F}}|10=d\'{{subst:#time:F}}}} del {{subst:#time:Y}}|'
		texte_pt= u'{{Última hora}}\n{{Rugby}}\n{{origem|data={{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}'

#TEXTES SPÉCIFIQUES À CHACUN DES CHAMPIONNAT. Concerne surtout les catégories, les noms de page ou encore les Interwikis. Le Corps du texte bien entendu.
		if championnat ==1: #TOP 14
			texte_fr= texte_fr + u'Le championnat de France de rugby à XV, Top 14, a disputé sa ' + self.journee_fr[journee] + u' journée.\n\n\n'
			texte_ca= texte_ca + u'lloc={{W|França}}}}\nAquest cap de setmana, s\'ha jugat la ' + self.journee_ca[journee][1]  + u' jornada del campionat de França de rugbi “[[w:Campionat de França de rugbi a 15|Top 14]]”.\n\n\n'
			texte_pt = texte_pt + u'|local=[[w:França|França]]}}O campeonato francês de Rugby, o [[w:Top 14|Top 14]], teve o seu '+ ordre_jour_pt_m  + u' dia, ocorrendo no dia {{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}.\n\n\n'
			categorie_fr = u'[[Catégorie:Rugby à XV]]\n[[Catégorie:Championnat de France de Rugby à XV]]\n[[Catégorie:Championnat de France ' + saison + u' de Rugby à XV|' + rang_journee + u']]\n[[Catégorie:Europe]]\n[[Catégorie:France]]\n[[Catégorie:Sport]]\n[[Catégorie:Résultats sportifs]]\n'
			categorie_ca = u'[[Categoria:Europa]]\n[[Categoria:França]]\n[[Categoria:Esports]]\n[[Categoria:Rugbi a 15]]\n[[Categoria:Campionat de França de rugbi a 15 '+ saison + u'|' + rang_journee + u']]\n'
			categorie_pt = u'[[Categoria:Europa]]\n[[Categoria:França]]\n[[Categoria:Desporto]]\n[[Categoria:Campeonato Francês de Rugby ' + saison + u'|' + rang_journee + u']]\n'
			titre_fr = u'Championnat de France de rugby ' + saison + u' : les résultats de la ' + self.journee_fr[journee] + u' journée'
			titre_ca = u'Campionat de França de rugbi ' + saison + u': els resultats de la ' +  self.journee_ca[journee][1]  + u' jornada'
			titre_pt = u'Campeonato Francês de Rugby ' + saison + u': resultados do ' + ordre_jour_pt_m + u' dia'

		elif championnat ==2: #PRO D2
			texte_fr= texte_fr + u'Le championnat de France de rugby à XV, Pro D2, a disputé sa ' + self.journee_fr[journee] + u' journée.\n\n\n'		
			texte_ca= texte_ca + u'lloc={{W|França}}}}\nAquest cap de setmana, s\'ha jugat la ' + self.journee_ca[journee][1]  + u' jornada del campionat de França de rugbi “[[w:Campionat de França de rugbi Pro D2|Pro D2]]”.\n\n\n'
			texte_pt = texte_pt + u'|local=[[w:França|França]]}}O campeonato francês de Rugby, o [[w:fr:Championnat de France de rugby Pro D2|Pro D2]], teve o seu '+ ordre_jour_pt_m  + u' dia, ocorrendo no dia {{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}.\n\n\n'
			categorie_fr = u'[[Catégorie:Rugby à XV]]\n[[Catégorie:Championnat de France de Rugby à XV]]\n[[Catégorie:Championnat de France ' + saison + u' Pro D2 de Rugby à XV|' + rang_journee + u']]\n[[Catégorie:Europe]]\n[[Catégorie:France]]\n[[Catégorie:Sport]]\n[[Catégorie:Résultats sportifs]]\n'
			categorie_ca = u'[[Categoria:Europa]]\n[[Categoria:França]]\n[[Categoria:Esports]]\n[[Categoria:Rugbi a 15]]\n[[Categoria:Campionat de França de rugbi a 15 Pro D2 ' + saison + u'|' + rang_journee + ']]\n'
			categorie_pt = u'[[Categoria:Europa]]\n[[Categoria:França]]\n[[Categoria:Desporto]]\n[[Categoria:Campeonato Francês de Rugby Pro D2 ' + saison + u'|' + rang_journee + u']]\n'
			titre_fr = u'Championnat de France de rugby Pro D2 ' + saison + u' : les résultats de la ' + self.journee_fr[journee] + u' journée'
			titre_ca = u'Campionat de França de rugbi Pro D2 ' + saison + u': els resultats de la ' +  self.journee_ca[journee][1]  + u' jornada'
			titre_pt = u'Campeonato Francês de Rugby Pro D2 ' + saison + u': resultados do ' + ordre_jour_pt_m + u' dia'

		elif championnat==3: #PREMIERSHIP D'ANGLETERRE
			texte_fr = texte_fr + u'Le championnat d\'Angleterre de rugby à XV, dit {{Citation|Aviva Premiership}}, a disputé sa ' + self.journee_fr[journee] + u' journée.\n\n\n'
			texte_ca = texte_ca + u'lloc={{W|Anglaterra}}}}\nAquest cap de setmana, s\'ha jugat la ' +  self.journee_ca[journee][1] + u' jornada del campionat d\'Anglaterra de rugbi “[[w:Campionat d\'Anglaterra de rugbi a 15|Aviva Premiership]]”.\n\n\n'
			texte_pt = texte_pt + u'|local=[[w:Inglaterra|Inglaterra]]}}O campeonato inglês de Rugby, o [[w:Guinness Premiership|Aviva Premiership]], teve o seu ' + ordre_jour_pt_m  + u' dia, ocorrendo no dia {{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}.\n\n\n'
			categorie_fr = u'[[Catégorie:Rugby à XV]]\n[[Catégorie:Championnat de Premiership de Rugby à XV]]\n[[Catégorie:Championnat de Premiership ' + saison + u' de Rugby à XV|' + rang_journee + u']]\n[[Catégorie:Angleterre]]\n[[Catégorie:Europe]]\n[[Catégorie:Sport]]\n[[Catégorie:Résultats sportifs]]\n'
			categorie_ca = u'[[Categoria:Europa]]\n[[Categoria:Anglaterra]]\n[[Categoria:Esports]]\n[[Categoria:Rugbi a 15]]\n[[Categoria:Campionat d\'Anglaterra de rugbi a 15 ' + saison + u'|' + rang_journee + u']]\n'
			categorie_pt = u'[[Categoria:Europa]]\n[[Categoria:Inglaterra]]\n[[Categoria:Desporto]]\n[[Categoria:Campeonato Inglês de Rugby ' + saison + '|' + rang_journee + u']]\n'
			titre_fr = u'Championnat d\'Angleterre du Premiership de rugby ' + saison + u' : les résultats de la ' + self.journee_fr[journee] + u' journée'
			titre_ca = u'Campionat d\'Anglaterra de rugbi ' + saison + u': els resultats de la ' + self.journee_ca[journee][1] + u' jornada'
			titre_pt = u'Campeonato Inglês de Rugby ' + saison + ': resultados do ' + ordre_jour_pt_m  + u' dia'

		elif championnat==4: #LIGUE CELTIQUE
			texte_fr = texte_fr + u'Le championnat de la Ligue celtique, dite {{Citation1|Guinness Pro14}}, a disputé sa '+  self.journee_fr[journee] + u' journée.\n\n\n'
			texte_ca = texte_ca + u'lloc=Lliga Cèltica}}\nAquest cap de setmana, s\'ha jugat la ' +  self.journee_ca[journee][1]  + u' jornada del campionat de la [[w:Lliga cèltica de rugbi|Lliga Cèltica de rugbi a 15]], la “Guinness Pro14”.\n\n\n'
			texte_pt = texte_pt + u'|local=[[w:Celtic League|Celtic League]]}}O campeonato da [[w:Celtic League|Celtic League]] de Rugby, o Guinness Pro14, teve o seu ' +  ordre_jour_pt_m  + u' dia, ocorrendo no dia {{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}.\n\n\n'
			categorie_fr = u'[[Catégorie:Rugby à XV]]\n[[Catégorie:Championnat de la Ligue celtique de Rugby à XV]]\n[[Catégorie:Championnat de la Ligue celtique ' + saison + u' de Rugby à XV|' + rang_journee + u']]\n[[Catégorie:Europe]]\n[[Catégorie:Sport]]\n[[Catégorie:Irlande]]\n[[Catégorie:Pays de Galles]]\n[[Catégorie:Écosse]]\n[[Catégorie:Italie]]\n[[Catégorie:Résultats sportifs]]\n'
			categorie_ca = u'[[Categoria:Europa]]\n[[Categoria:Escòcia]]\n[[Categoria:País de Gal·les]]\n[[Categoria:Irlanda del Nord]]\n[[Categoria:Irlanda del Sud]]\n[[Categoria:Itàlia]]\n[[Categoria:Esports]]\n[[Categoria:Rugbi a 15]]\n[[Categoria:Campionat de la Lliga cèltica de rugbi a 15 ' + saison + u'|' + rang_journee + u']]\n'
			categorie_pt = u'[[Categoria:Europa]]\n[[Categoria:Escócia]]\n[[Categoria:País de Gales]]\n[[Categoria:Irlanda do Norte]]\n[[Categoria:República da Irlanda]]\n[[Categoria:Itália]]\n[[Categoria:Desporto]]\n[[Categoria:Campeonato da Celtic League de Rugby ' + saison + u'|' + rang_journee + u']]\n'
			titre_fr = u'Championnat de Ligue celtique ' + saison + u' : les résultats de la ' + self.journee_fr[journee] + u' journée'
			titre_ca = u'Campionat de la Lliga cèltica de rugbi ' + saison + u': els resultats de la ' +  self.journee_ca[journee][1] + u' jornada'
			titre_pt = u'Campeonato da Celtic League de Rugby ' + saison + u': resultados do ' + ordre_jour_pt_m + u' dia'

		elif championnat==5: #SUPER 15
			saison = str(int(annee) + 1)
			annee = saison
			texte_fr = texte_fr + u'Le championnat de rugby des franchises de l\'hémisphère sud, dit {{W|Super Rugby}}, a disputé sa ' +  self.journee_fr[journee] + u' journée.\n\n\n'
			texte_ca = texte_ca + u'lloc=Hemisferi sud}}\nAquest cap de setmana, s\'ha jugat la ' +  self.journee_ca[journee][1] + u' jornada del campionat dels clubs de rugbi a 15 més importants de l\'hemisferi sud, el {{W|Super Rugby|Super Rugby}} de la temporada ' + saison + u'.\n\n\n'
			texte_pt = texte_pt + u'|local=[[w:Hemisfério sul|Hemisfério sul]]}}O maior campeonato de rugby do hemisfério sul, [[w:Super 14|Super Rugby]], teve o seu ' +  ordre_jour_pt_m  + u' dia ocorrendo no dia {{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}.\n\n\n'
			categorie_fr = u'[[Catégorie:Rugby à XV]]\n[[Catégorie:Championnat du Super Rugby]]\n[[Catégorie:Championnat du Super Rugby ' + saison + u'|' + rang_journee + u']]\n[[Catégorie:Afrique]]\n[[Catégorie:Océanie]]\n[[Catégorie:Afrique du Sud]]\n[[Catégorie:Amérique du Sud]]\n[[Catégorie:Asie]]\n[[Catégorie:Australie]]\n[[Catégorie:Nouvelle-Zélande]]\n[[Catégorie:Japon]]\n[[Catégorie:Argentine]]\n[[Catégorie:Sport]]\n[[Catégorie:Résultats sportifs]]\n'
			categorie_ca = u'[[Categoria:Rugbi a 15]]\n[[Categoria:Campionat del Super Rugby ' + saison + u'|' + rang_journee +u']]\n[[Categoria:Àfrica]]\n[[Categoria:Oceania]]\n[[Categoria:Amèrica del Sud]]\n[[Categoria:Àsia]]\n[[Categoria:Argentina]]\n[[Categoria:Japó]]\n[[Categoria:Sud-àfrica]]\n[[Categoria:Austràlia]]\n[[Categoria:Nova Zelanda]]\n[[Categoria:Esports]]\n'
			categorie_pt = u'[[Categoria:Oceania]]\n[[Categoria:África]]\n[[Categoria:Ásia]]\n[[Categoria:América do Sul]]\n[[Categoria:Argentina]]\n[[Categoria:Japão]]\n[[Categoria:Nova Zelândia]]\n[[Categoria:Austrália]]\n[[Categoria:África do Sul]]\n[[Categoria:Desporto]]\n[[Categoria:Campeonato do Super Rugby ' + saison + u'|' + rang_journee + u']]\n'
			titre_fr = u'Championnat du Super Rugby ' + saison + u' : les résultats de la ' + self.journee_fr[journee] + u' journée'
			titre_ca = u'Campionat del Super Rugby ' + saison + u': els resultats de la ' + self.journee_ca[journee][1] + u' jornada'
			titre_pt = u'Campeonato do Super Rugby ' + saison + u': resultados do ' + ordre_jour_pt_m + u' dia'

#ON AJOUTE LA GRILLE A LA SUITE DE L'ARTICLE			
		texte_fr = texte_fr + u'<!--' +  grille_fr + u'-->\n' + grille_fr + u'\n\n{{Notes}}\n\n{{subst:Dynastie sport\n|journée=' + str(journee) + u'\n|compétition=' + self.competition[championat][3] + u'\n|saison=' + annee + u'\n|phase finale=\n|phase=\n|suivant=\n|précédent=\n}}\n\n== Sources ==\n'
		texte_ca = texte_ca + u'<!--' +  grille_ca + u'-->\n' + grille_ca + u'\n\n{{Notes}}\n{{Desenvolupament}}\n== Fonts ==\n<!--{{Publicat}}-->\n'

		texte_pt = texte_pt + u'<!--' +  grille_pt + u'-->\n' +  grille_pt + u'\n\n{{Notas}}\n\n{{opine}}\n{{notícia_em_desenvolvimento}}\n== Fontes ==\n'

#CREATION DES DEUX SOURCES DE CHAQUE PROJET
		sources_fr= u'* {{source|langue=' + self.liens[championat][1][0] + u'\n|url=' + self.liens[championat][1][1] + u'\n|titre='+ titre_source_fr_1 + u'\n|auteur=\n|publication=' + self.liens[championat][1][3] + u'\n|date={{subst:#ifeq:{{subst:#time:j}}|1|1er|{{subst:#time:j}}}} {{subst:#time:F Y}}\n}}\n'
		sources_ca= u'* {{ca_font|llengua=' +  self.liens[championat][1][0] + u'\n|url=' + self.liens[championat][1][1] + u'\n|títol=' + titre_source_ca_1  + u'\n|autor=\n|publicació=' + self.liens[championat][1][3] + u'\n|data={{subst:#time:j}} {{subst:#switch:{{subst:#time:m}}|#default=de {{subst:#time:F}}|04|08|10=d\'{{subst:#time:F}}}} del {{subst:#time:Y}}\n}}\n'
		sources_pt= u'*{{fonte\n|idioma=' + self.liens[championat][1][0] + u'\n|url=' + self.liens[championat][1][1] + u'\n|título=' + titre_source_pt_1  + u'\n|autor=\n|pub=' + self.liens[championat][1][3] + u'\n|data={{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}\n}}\n'
		sources_fr= sources_fr + u'* {{source|langue=' + self.liens[championat][2][0] + u'\n|url=' + self.liens[championat][2][1] + u'\n|titre='+ titre_source_fr_2 + u'\n|auteur=\n|publication=' + self.liens[championat][2][3] + u'\n|date={{subst:#ifeq:{{subst:#time:j}}|1|1er|{{subst:#time:j}}}} {{subst:#time:F Y}}\n}}\n\n'
		sources_ca= sources_ca + u'* {{ca_font|llengua=' +  self.liens[championat][2][0] + u'\n|url=' + self.liens[championat][2][1] + u'\n|títol=' + titre_source_ca_2  + u'\n|autor=\n|publicació=' + self.liens[championat][2][3] + u'\n|data={{subst:#time:j}} {{subst:#switch:{{subst:#time:m}}|#default=de {{subst:#time:F}}|04|08|10=d\'{{subst:#time:F}}}} del {{subst:#time:Y}}\n}}\n\n'
		sources_pt= sources_pt + u'*{{fonte\n|idioma=' + self.liens[championat][2][0] + u'\n|url=' + self.liens[championat][2][1] + u'\n|título=' + titre_source_pt_2  + u'\n|autor=\n|pub=' + self.liens[championat][2][3] + u'\n|data={{subst:#time:j}} de {{subst:lc:{{subst:#time:F}}}} de {{subst:#time:Y}}\n}}\n\n'

		texte_fr=texte_fr + sources_fr + u'{{page rugby}}\n{{Développement}}\n\n<!--{{Publication|jour={{subst:#time:j}}|mois={{subst:#time:F}}|année={{subst:#time:Y}}|brève=non}}-->\n' + categorie_fr + u'\n[[ca:' + titre_ca + u']]\n[[pt:' + titre_pt + u']]'
		texte_ca=texte_ca + sources_ca + u'{{Portal rugbi}}\n' + categorie_ca + u'\n[[fr:' + titre_fr + u']]\n[[pt:' + titre_pt + u']]'
		texte_pt=texte_pt + sources_pt + u'<!--{{Mídias sociais}}-->\n' + categorie_pt + u'\n[[ca:' + titre_ca + u']]\n[[fr:' + titre_fr + u']]\n'

		tableau.imprim_page('fr', titre_fr, texte_fr)
		tableau.imprim_page('ca', titre_ca, texte_ca)
		tableau.imprim_page('pt', titre_pt, texte_pt)

#LIGNES DE TEST DU ROBOT
		titre = 'User:GrondinBot/Test'
#		page_fr=pywikibot.Page(self.sitefr, titre)
#		page_ca=pywikibot.Page(self.siteca, titre)
#		page_pt=pywikibot.Page(self.sitept, titre)


#LIGNES D'ÉCRITURE SUR LES PROJETS
		page_fr=pywikibot.Page(self.sitefr, titre_fr)
		page_ca=pywikibot.Page(self.siteca, titre_ca)
		page_pt=pywikibot.Page(self.sitept, titre_pt)

                page_fr.text= texte_fr
                page_ca.text= texte_ca
                page_pt.text= texte_pt

		page_fr.save(u'Nouvelle page de rugby')
		page_ca.save(u'Nova pàgina de rugbi')
		page_pt.save(u'Nova página do rugby')



	def choix_equipe(self, championat, ligne=1):
		eff = messages_bot_perso.messages_init()
		
		while 1:
			try:
				eff.efface_ligne(ligne,1, 4)
				print u'\033[%s;0H' % ligne
				choix= input('n° club : ')
				eff.efface_ligne(30)
				print u'\033[%s;0H' % (ligne +1)
				if choix in range(1, self.competition[championat][1] +1):
					print u'Club sélectionné : %s' % self.competition[championat][2][choix]
					verif = raw_input('Est-ce bien la bonne équipe ? (o/N) : ')
					if verif in ('o', 'O', 'Oui', 'OUI', 'oui'):
						return choix
				else:
					print u'\033[30;0H\033[31;1mErreur dans le choix de l’équipe\033[0m'
			except:
				print u'\033[30;0H\033[31;1mIl faut sélectionner un nombre entre 1 et %s\033[0m' % self.competition[championat][1]
	def horaire(self, ligne=1):
		eff = messages_bot_perso.messages_init()
		while 1:
			eff.efface_ligne(ligne,1, 8)
			print u'\033[%s;0H' % ligne
			jour = raw_input('choix du jour (1 à 7) correspondant au lundi au dimanche : ')
			try:
				rang=int(jour)
				eff.efface_ligne(30)
				if rang in range (1, 8):
					eff.efface_ligne(ligne +7,1)
					print u'choix du jour %s, %s et %s' % (self.semaine[rang][0],self.semaine[rang][1],self.semaine[rang][2])
					break
				else:
					print u'\033[30;0H\033[31;1mLe chiffre doit être compris entre 1 et 7\033[0m'
					
			except:
				eff.efface_ligne(30)
				print u'\033[30;0H\033[31;1mErreur dans le choix du jour\033[0m'
		while 1:
			eff.efface_ligne(ligne +2,1, 4)
			print u'\033[%s;0H' % (ligne+2) 
			choix = raw_input('Heure : ')
			try:
				heure = int(choix)
				eff.efface_ligne(30)
				if heure in range (0, 24):
					break
				else:
					print u'\033[30;0H\033[31;1mL’heure doit être comprise entre 0 et 24.\033[0m'
			except:
				eff.efface_ligne(30)
				print u'\033[30;0H\033[31;1mCaractères invalides.\033[0m'
				
				
		while 1:
			eff.efface_ligne(ligne +4, 1, 2)
			print u'\033[%s;20H' % (ligne +3), 30 * u' '
			try:
				choix = raw_input('\033[%s;20HMinute : ' % (ligne+3))
				minute = int(choix)
				eff.efface_ligne(30)
				if minute in range (0,60):
					break
				else:
					print u'\033[30;0H\033[31;1mLes minutes doivent être comprises entre 0 et 60.\033[0m'
			except:
				eff.efface_ligne(30)
				print u'\033[30;0H\033[31;1mCaractères invalides.\033[0m'
		return rang, heure, minute
			

			


if __name__ == '__main__':
	print u'\033[2J\033[H'
	en_tete=messages_bot_perso.messages_init()
	en_tete.init_cadre(55, 12, 1, 1, 33, 44)
	en_tete.remplissage_cadre(u'CHAMPIONNATS DE RUGBY À XV', 33, 44, 1,2,2)
	en_tete.remplissage_cadre(u'1. Top 14', 33, 44, 1, 4, 2)
	en_tete.remplissage_cadre(u'2. Pro D2', 33, 44, 1, 5, 2)
	en_tete.remplissage_cadre(u'3. Premieship d’Angleterre', 33, 44, 1, 6, 2)
	en_tete.remplissage_cadre(u'4. Ligue Celtique', 33, 44, 1, 7, 2)
	en_tete.remplissage_cadre(u'5. Super Rugby', 33, 44, 1, 8, 2)
	blanc = 53 * u' '

	while 1:
		try:
			championnat = input('\033[10;2H\033[33;44;1mSélectionner le championnat : ')
			en_tete.remplissage_cadre(blanc, 33, 44,1, 11, 2)
			if championnat in range (1,6):
				journee=input('\033[11;2H\033[33;44;1mJournée : ')
				en_tete.remplissage_cadre(blanc , 33, 44,1, 12, 2)
				if journee in range(1,31):
					break
				else:
					en_tete.remplissage_cadre(u'Choix journée invalide', 31, 44, 1, 12, 2)
					en_tete.remplissage_cadre(blanc, 33, 44, 1, 11, 2)
			else:
				en_tete.remplissage_cadre(u'Nombre invalide', 31, 44, 1, 11, 2)
				en_tete.remplissage_cadre( blanc, 33, 44, 1, 10, 2)

		except:
			en_tete.remplissage_cadre(u'Il faut que ce soit un chiffre compris entre 1 et 5', 31, 44,1, 11, 2)
			en_tete.remplissage_cadre( blanc, 33, 44,1, 10, 2)
	bye = 1
	if championnat == 5:
            while 1:
		en_tete.remplissage_cadre(blanc, 33, 44, 1, 10, 3)
		choix = raw_input('\033[10;2H\033[33;44;1m3 équipes en « Bye » (o/N) ? ')
		if choix in  ('o', 'O', 'oui', 'Oui', 'OUI'):
                     bye=3
                     break
                else:
                    bye=1
                    break
                        
                        

jour=init_rugby()
print jour.__doc__
jour.init_page_rugby(journee, championnat, bye)

Fichier secondaire[modifier | modifier le wikicode]

Pour que init_rugby.py puisse tourner, il lui manque un petit fichier de messages qui peut servir pour divers autres scripts : messages_bot_perso.py. Il sert aussi à initialiser les catégories et les archives de date sur une dizaine de projet Wikinews.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pywikibot
from pywikibot import pagegenerators, config, bot
#import editarticle
import webbrowser

class messages_init():

	def imprim_page (self, projet, titre, text):
		if projet == 'fr':
			self.color = '34'
		else:
			self.color = '39'
		print u'\033[0;%s;1m' % self.color
		print u'==================================\n'
		print u'\033[22m* [[:%s]]' % titre
		print u'\n................................\n'
		print u'\033[1mTexte inséré :\033[22m\n%s\n' % text
		print u'\033[1m==================================\033[0m\n'
	
	def imprim_page_mois (self, titremois, textemois):
		print u'\033[0;39;1m=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=\033[0m\n'
		print u'La page mère \033[31;1m%s\033[0m n’existe pas.' % titremois
		print u'Création de la page : \033[1;31m%s\033[2;34m\n' % titremois
	 	print u'\033[1m----------------------------------------\033[0m\n'
		print textemois
		print u'\n\033[1m=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=\033[0m\n'

	def page_fr_non(self, titrefr):
		print '\033[0;32m=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=\n'
		print u'\033[34;41;1mLa page du projet francophone : \033[37;41;1m%s\033[34;41;1m n’existe pas !\033[0m\n' % titrefr
		print '\033[0;32m=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=\n\033[0m'

	def page_mere_oui(self,titremois):
		print u'\033[39;1mo=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o\033[0m\n'
		print u'\033[34;43;2mLa page mère \033[31;43;2m%s\033[34;43;2m existe !\033[0m' % titremois
		print u'\n\033[39;1mo=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o\033[0m\n'

	
	def choix_date(self):
		while 1:
			try:
				rangmois = input("Entrez le numéro d’ordre du mois : ")
				if (rangmois >= 1) & (rangmois <= 12):
					break
				else:
					print u'\033[1m' + u'Là, vous déconnez ferme !\033[0m'
			except:
				print u'\033[1m' + u'Chiffre invalide\033[0m'
				
		while 1:
			try:
				init_annee = input("\nEntrez l’année : ")
				if (init_annee >= 2009) & (init_annee <= 2038):
					break
				else:
					print u'\033[1m' + u'Vous n’êtes pas sérieux !\033[0m'
			except:
				print u'\033[1m' + u'Chiffre invalide\033[0m'
		return rangmois, init_annee
	
	def choix_quantieme(self, fin):
		print u'Mois de %s jours.' % fin
		while 1:
			try:
				quant= input("Entrez le quantième du mois : ")
				if quant in range(1,fin +1):
					break
				else:
					print u'\033[1m' + u'Vous n’êtes pas sérieux !\033[0m'
			except:
				print u'\033[1m' + u'Chiffre invalide\033[0m'
		return quant		
	
	def duree_mois(self, quantmois):
		choix= raw_input(u"Voulez-vous initialiser le mois entier  (o/N) : ")
		if choix in ('o', 'O'):
			quant=1
			fin_boucle= quantmois
			return quant, fin_boucle
		else:
			while 1:
				debut = raw_input('jour de début : ')
				if (int(debut) < 1) or (int(debut) > quantmois):
					print u'Le jour doit être compris entre 1 et %s.' % quantmois
				else:
					quant = int(debut)
					fin = raw_input('jour de fin : ')
					if (int(fin) < quant) or (int(fin) > quantmois):
						print u'la fin doit être comprise entre %s et %s' % (quant, quantmois)
					else:
						fin_boucle = int(fin)
						return quant, fin_boucle

	
	def init_cadre(self, longueur=30, largeur= 5, x=1, y=1, couleur=39, fond=49):
		print u'\033[%s;%sH\033[%s;%s;1m' % (x, y, couleur, fond), longueur * u'='
		lignes=1
		while lignes <= largeur:
			print u"\033[%s;%sH|" % (x + lignes, y) , (longueur -2) * u' ', u'|'
			lignes +=1
		print u'\033[%s;%sH' % (x + lignes, y), longueur * u'=' , u'\033[0m'
		
	def remplissage_cadre(self, texte, couleur=39, fond=49, contraste=0, x=1, y=1):
		print u'\033[%s;%sH\033[%s;%s;%sm%s\033[0m' % (x, y, couleur, fond, contraste, texte)

	def efface_ligne(self, ligne=0 , colonne=1, nombre=1, longueur=75):
		boucle =1
		while boucle <= nombre:
			print u'\033[%s;0H' % ligne , longueur * u' ' 
			ligne +=1
			boucle +=1
		
		

class fichiers():
		
	def liens(self, titre):
		titre = u'* [[:' + titre + u']]\n'
		print u'\033[1;30m%s\33[0m' % titre
		fliens = open('liens', 'a')
		fliens.write(titre.encode('utf-8'))
		fliens.close()
		return


	def init_log(self):
		print u'\033[1m'
		log = raw_input(u'Voulez-vous initialiser les fichiers log ?\nEntrez votre choix (o/N)\033[0m :')
		if log in ('O', 'o', 'oui', 'Oui', 'OUI'):
			fichier= open('liens', 'w')
			fichier.close()
			fichier= open('ecriture.log', 'w')
			fichier.close()
			fichier= open('ecriture_fr.log', 'w')
			fichier.close()
			print '\033[31;40;1mLes fichiers ont été réinitialisés et vidés de leur contenu\033[0m'
		
	def ecriture(self, lang, titre, text, titrefr='', textfr=''):
		impress = messages_init()
		ligne = u'\033[1m===========================================\033[0m\n'
		texte = ligne + u'Écriture dans : \033[49;31;1m[[' + lang + u':' + titre + u']]\033[0m\n------------------------------------\n'
		texte = texte + text + u'\n' + ligne
		fliens = open('ecriture.log', 'a')
		fliens.write(texte.encode('utf-8'))
		fliens.close()
		del fliens
		if (titrefr != '') & (textfr!= ''):
			texte = ligne + u'Écriture dans : \033[49;31;1m[[fr:' + titrefr + u']]\033[0m\n------------------------------------\n'
			texte = texte + textfr + u'\n' + ligne
			fliens = open('ecriture_fr.log', 'a')
			fliens.write(texte.encode('utf-8'))
			fliens.close()
			del fliens

class jour_semaine():
	
	def __init__(self):			
		self.quantmois = {1 : 31, 2 : 28, 3 : 31, 4 : 30, 5 : 31, 6 : 30, 7: 31, 8 : 31, 9 : 30, 10 : 31, 11: 30, 12 : 31}
	
	def calcul_jour(self, mois, annee):
	
	# DETERMINATON DU JOUR DE LA SEMAINE EN FONCTION DE L'ANNÉE.
		jour_a = int(annee - 2009) /4 + (annee + 3) % 7
	
	# ANNEE BISSECTILE OU NON
		if annee % 4 == 0:
			self.quantmois[2] = 29
	
		# Calcul du jour de la semaine
		cum = 1
		cumul = 0
		while cum < mois:
			cumul = cumul + self.quantmois[cum]
			cum += 1
		semaine = (cumul  + jour_a ) % 7
		print u'jour n° %s' % semaine
		return semaine
		




if __name__ == "__main__":
	jour = [u'Lundi', u'Mardi', u'Mercredi', u'Jeudi', u'Vendredi', u'Samedi',  u'Dimanche']
	jourja = [u'Dimanche', u'Lundi', u'Mardi', u'Mercredi', u'Jeudi', u'Vendredi', u'Samedi']
	moisfr  = {1 : u'janvier', 2 : u'février', 3 : u'mars', 4 : u'avril', 5 : u'mai', 6 : u'juin', 7 : u'juillet', 8 : u'août', 9 : u'septembre', 10 : u'octobre', 11 : u'novembre', 12 : u'décembre'}
	imp = messages_init()
	imp.imprim_page_mois( u'LA FRANCE MENACÉE', u'Voici le texte.')
	imp.page_mere_oui(u'ZagNut')
	annee = 2011
	mois = 2
	journee=jour_semaine()
	semaine= journee.calcul_jour(mois, annee)
	print u'note : %s %s commence un %s.' % (moisfr[mois], annee, jour[semaine])
	semaine = (semaine + 1) % 7
	print u'note : %s %s commence un %s.' % (moisfr[mois], annee, jourja[semaine])
	rangmois, init_annee= imp.choix_date()
	print u'vous avez choisi %s %s.' % (moisfr[rangmois], init_annee)