Utilisateur:Daahbot/Historique/complet

Novembre 2005 modifier

Date Action Nombre Commentaire
2005-11-19 "Catégorie:Jours de la semaine" -> "Catégorie:Jours de la semaine en français" 6
2005-11-19 "Lexique en français du calendrier" -> "Calendrier en français" 30
2005-11-19 "Catégorie:Nom commun" -> "Catégorie:Noms communs" 4
2005-11-19 "Catégorie:Langues" -> "Catégorie:Langues en français" 100
2005-11-19 "Catégorie:Lexique en bambara des animaux" -> "Catégorie:Animaux en bambara" 31
2005-11-19 "Catégorie:Lexique en bambara du calendrier" -> "Catégorie:Calendrier en bambara" 13
2005-11-20 "Catégorie:Lexique en bambara des aliments" -> "Catégorie:Aliments en bambara" 8
2005-11-20 "Catégorie:Lexique en bambara des couleurs" -> "Catégorie:Couleurs en bambara" 7
2005-11-20 "Catégorie:Grammaire en turc" -> "Catégorie:Grammaire turque" 3
2005-11-20 "Catégorie:Religions en français" -> "Catégorie:Lexique en français de la religion" 9
2005-11-20 "Catégorie:Gentilés français" -> "Catégorie:Gentilés en français" 47
2005-11-21 - 2005-11-29 "\{\{-(..)-\}\}" -> "{{=\1=}})" Tous les articles (23599) Pour distinguer les modèles de section de langue et aussi libérer les modèles à tirets, afin d'accueillir des langues dont les codes à trois chiffres entreraient en concurrence avec les autres modèles de sous-sections, il a été décidé de remplacer les modèles de langue (tous à deux lettres alors) du type {{-en-}} par {{=en=}}. D'abord testé avec les section de langue anglaise, puis généralisé à toutes les langues.
2005-11-26 Locutions -> Locutions nominales 406
2005-11-30 -Abréviation +Symbole 92
2005-12-04 Harmonisation des références 493

Janvier 2006 modifier

Correction des prononciations et conversion X-SAMPA modifier

Quelques corrections simples (e.g. apostrophes) en API et SAMPA et conversion SAMPA vers X-SAMPA.

  • 3283 articles

Février 2006 modifier

Correction des r français modifier

  • 5338 articles

Ébauche étymologies modifier

Ajout d'une section étymologie avec un bandeau d'ébauche.

  • 13882 articles

Import d'expression de Wikipédia modifier

Liste formatée.

  • 97 articles

Correction de prononciations modifier

  • Initiale : 9138 articles
  • Correction ligatures API : 358

Mars 2006 modifier

Formatage des articles Commission terminologie et néologie modifier

Créés automatiquement, ces articles n'étaient pas correctement formatés (certains ont d'ailleurs encore des erreurs).

  • 2927 articles.

Arrangement DAF8 modifier

Formatage des articles importés depuis le DAF8.

  • 24 039 articles

Avril 2006 modifier

Structure des articles modifier

Réarrangement de la structure des articles (ordre des sections notamment).

  • 139 297 articles

Mai 2006 modifier

Formulation étymologie modifier

Reformulation de l'étymologie de certains articles.

  • 916 articles

Juillet 2006 modifier

Tables d'accord modifier

Ajout d'un modèle de table d'accord le cas échéant.

  • 3201 articles

aout 2006 modifier

18 aout 2006 modifier

Déwikification des modèles de langues modifier

Suite à vote sur la Wikidémie (lien).

  • liste : Wiktionnaire:Liste des langues
  • script : replace.py ; regex : ("[[", "") et ("]]", "")
  • Résumé : « Déwikification des langues »
  • Problèmes relevés :
    1. quelques langues de la forme [[langue|nom de langue]] ; corrigées.

Numérotation des sections de type modifier

Avec {{{num}}} (au lieu du paramètre {{{1}}}). Précède les modifications des modèles {{-def-}}, voir (lien).

  • liste : dump du 6 aout 2006
  • script : replace.py ; regex : ("(\{\{-.+?-\|)([0-9]\}\})", "\1num=\2")
  • Résumé : « Numérotation avec paramètre "num=" »
  • Problèmes relevés :
    1. Le modèle {{-verb-pr-}} n'est pas déclaré : à discuter (réflexion sur les verbes pronominaux et autres) ;
    2. Section seule mais numérotée ; corrigé (ĝi).

Remplacement de modèles modifier

  1. 18 aout 2006 : {{-adjc-}} -> {{-adj-}} (modèle inutilisé et inutile)
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-adjc-}}", "{{-adj-}}")
  2. 18 aout 2006 : {{-dim-lex-}} -> {{dim-lex}} (les - sont réservés aux titres de section)
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-dim-lex-}}", "{{dim-lex}}")
  3. 18 aout 2006 : {{-sym-}} -> {{-symb-}} (symb est plus compréhensible et plus répandu)
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-sym-}}", "{{-symb-}}")
  4. 18 aout 2006 : {{-pré-}} -> {{-pref-}} (pref est plus compréhensible et plus répandu)
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-pré-}}", "{{-pref-}}")
  5. 18 aout 2006 : {{-prép-}} -> {{-prep-}} (prep est plus répandu, et plus simple à écrire)
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-prép-}}", "{{-prep-}}")
  6. 18 aout 2006 : {{-locution-|interjective}} -> {{-loc-interj-}}
    • liste : dump du 6 aout 2006
    • script : replace.py ; regex : ("\{\{-locution-\|(i|I)nterjective\}\}", "{{-loc-interj-}}")
  7. 18 aout 2006 : {{-loc-pron-}} -> {{-loc-pronom-}}
    • liste : dump du 6 aout 2006
    • script : replace.py ; ("{{-loc-pron-}}", "{{-loc-pronom-}}")

20 aout 2006 modifier

{{pron}} -> {{pron-audio}} (libération du modèle et unification du modèle pron-audio).

  • liste : dump du 6 aout 2006
  • script : replace.py ; ("{{pron|", "{{pron-audio|")

23 aout 2006 modifier

{{-adverbe-|...}} -> {{-adv-}} (précision mise sur la ligne de forme, ou au niveau des définitions).

  • liste : références à {{-adverbe-}}
  • script : replace.py ; regex : ("\{\{-adverbe-\|(.+?)\}\}\r\n'''(.+?)'''(.*?)", "{{-adv-}}\n'''\2'''\3 ''adverbe \1''")

24 aout 2006 modifier

Simplification du tableau des prononciations régionales.

  • liste : références à {{-tab-pron-}} (estimation : 9907 changements)
  • script : replace.py ; fix :
    'tab': {
        'regex' : True,
        'msg' : {
                'fr':u'Robot : Prononciations régionales dans des modèles simplifiés',
                },
        'replacements': [
            # Début et fin de tableau
            (u"\r\n\{\{-tab-pron-\}\}", r""),
            (u"(\{\{pron-audio\|(( |.)+?)\}\}\r\n\| ?\[( |.)*?\]\r\n\| ?\[?((.| )*?)\]?)\r\n\|\}", r"\1"),

            # Nettoyage avant
            (u"\{\{pron-audio\|(.+?)\|\}\}", r"{{pron-reg|\1}}"),
            (u"(\{\{pron-audio\|(.+?)\}\}\r\n\|) ?\?\r\n\| ?\?\r\n", r"\1 []\r\n| []\r\n"),
            (u"(\{\{pron-audio\|(.+?)\}\}\r\n\|) ?/(.*?)/\r\n\| ?/?(.*?)/?\r\n", r"\1 [\2]\r\n| [\3]\r\n"),

            # pron-audio
            (u"\{\{pron-audio\|(.+?)\|(.+?)\}\}\r\n\| ?\[\]\r\n\| ?\[\]", r"{{pron-reg|\1|audio=\2}}"),
            (u"\{\{pron-audio\|(.+?)\|(.+?)\}\}\r\n\| ?\[(.+?)\]\r\n\| ?\[.*?\]", r"{{pron-reg|\1|\3|audio=\2}}"),

            # pron sans audio
            (u"\{\{pron-audio\|(.+?)\}\}\r\n\| ?\[(.*?)\]\r\n\| ?\[?(.*?)\]?\r\n", r"{{pron-reg|\1|\2}}\r\n"),

            # Nettoyage : deux points, crédit superflu (déjà sur Commons), formulation
            (u"\{\{pron-reg\|(.+?) *?<!-- *?réalisé par .+? *?--> *?: *?\|", r"{{pron-reg|\1|"),
            (u"\{\{pron-reg\|(.+?) *?<!-- *?précisez svp la ville ou la régio ?n *?--> *?: *?\|", r"{{pron-reg|\1 ("+u"région ?)|"),
            
            (u"\{\{pron-reg\|(.+?) *?: *?\|", r"{{pron-reg|\1|"),
            (u"\{\{pron-reg\|Français standard \(Ouest de la France\)(.*?)\|", r"{{pron-reg|France (Ouest)|"),
            (u"\{\{pron-reg\|\?\|", r"{{pron-reg||"),
            ],
        },
  • Problèmes relevés :
    1. Incompatibilité des modèles de type term contenant le modèle {{term}} quand affiché dans le nouveau modèle --> ne pas mettre de modèles dedans ;
    2. Modèles à enlever car inadéquats : {{popu}} (et mettre sous {{term}}) - présents dans les descriptions --> remplacer par autre chose, mais prononciation populaire ne veut rien dire... ;
    3. Quelques présentations qui en font trop, de type « Canada (Montréal) - profond », ---> à mettre en titre= (par défaut : nom de l'article).
    4. Prononciations du vitenamien suivant un schéma inattendu (mais heureusement constant). Voir remplacement spécial ;
    5. Tombé sur des articles charcutés par PiedBot (et erreurs consécutives). Son maitre a corrigé les articles, et j'ai pu repasser normalement dessus.

Vietnamien modifier

Estimation : 6592 articles à corriger (soit 66% du total). Remplacement spécial à l'aide de replace.py -regex dans un fix :

(u"{{-tab-pron-}}\r\n\|-\r\n\|\r\n\|Hanoï \(Nord du Vietnam\)\r\n\| \[(.+?)\]\r\n\| \[.+?\]\r\n\|-\r\n\|-\r\n\|\r\n\|Ho Chi Minh-Ville \(Sud du Vietnam\)\r\n\| \[(.+?)\]\r\n\| \[.+?\]\r\n\|\}",
u"{{pron-reg|Nord du Vietnam (Hanoï)|"+r"\1"+u"}}\r\n{{pron-reg|Sud du Vietnam (Ho Chi Minh-Ville)|"+r"\2}}")
  • Pas de problèmes relevés pour le vietnamien.

26 aout 2006 modifier

Adjectifs au pluriel en -als modifier

Mon bot est auparavant passé sur les articles importés du DAF8 pour nettoyer et mettre en forme. Une erreur de regex (trop large) à donné des tableaux donnant le pluriel d'adjectifs en -als au lieu de -aux. Ce processus corrige ces articles.

  • Estimation : 160 articles
  • script : replace.py ; fix :
    'tabal': {
        'regex' : True,
        'msg' : {
                'fr':u'Robot : Correction pluriels en als',
                },
        'replacements': [
            (r"\{\{fr-accord-mixte\|\r\n ?ms=(.+?)al\r\n\| ?mp=\1als\r\n\| ?fs=\1ale\r\n\| ?fp=\1ales\r\n\| ?pms=(.+?)al\r\n\| ?pmp=\2al\r\n\| ?pfs=\r\n\| ?pfp=\r\n\}\}", r"{{fr-accord-al|\1|\2}}"),
            (r"\{\{fr-accord-mixte\|\r\n ?ms=(.+?)al\r\n\| ?mp=\1als\r\n\| ?fs=\1ale\r\n\| ?fp=\1ales\r\n\| ?pms=(.+?)al\r\n\| ?pmp=\2al\r\n\| ?pfs=\2al\r\n\| ?pfp=\2al\r\n\}\}", r"{{fr-accord-al|\1|\2}}"),
            ],
        },

Catégorisation automatique modifier

20 septembre 2006 et suivants modifier

Catégories automatiques modifier

Suite au vote et aux discussions sur l'ASCII, j'ai préparé un script spécial pour changer les articles afin qu'ils soient catégorisés automatiquement : catauto.py.

  • Articles concernés : tous (durée de changement importante).
    Dans un premier temps, seuls les articles en alphabets latin ou grec sont gérés au niveau de l'ASCII (l'alphabet cyrillique est à faire, et les autres systèmes d'écriture devraient avoir des règles spéciales).
    Les articles avec apostrophes et tirets sont évités, car la manière de les traiter n'a pas encore été décidée.

Problèmes rencontrés :

  1. Certaines catégories vides et inutiles parasitent la catégorisation automatique des articles (exemple : [[Catégorie:français]]). J'ai modifié le script pour qu'il les enlève (à partir de la lettre K), mais un bot devra passer pour enlever les autres.
  2. Les nums étaient mal pris en compte par les expressions rationnelles. Correction du script et relecture des logs pour vérification : 4 articles corrigés.
  3. Erreur dans l'expression rationnelle "Ascii nécessaire, sans langue, sans ASCII" (un "\|" d'oublié :P). Les titres de ce type là n'ont pas été modifiés par le bot. J'ai corrigé le script, et je repasserais sur les articles oubliés en utilisant le log.
  4. Erreur dans Listutiles/"types" : il manquait une virgule avant -prep-, ce qui fait que toutes les sections de préposition n'ont pas été modifiées. Une fois le parcours général terminé, je ferais de toute façon repasser le bot sur les mots sautés (cf ci-dessus).

Octobre 2006 modifier

  • 3 octobre : les alphabets latin et grecs sont faits (mis à part les problèmes sus-décrits). Les alphabets suivants n'auront pas d'ASCII pour le moment car ils ne sont pas pris en compte par mon bot.

Problèmes renconcontrés :

  1. Problèmes avec les caractères chinois. À voir...

Octobre 2006 modifier

31 octobre 2006 modifier

complétement -> complètement (orthographe)

  • liste : dump du 19 octobre 2006
  • script : replace.py ; ("complétement, complètement")

Novembre 2006 modifier

Sections prononciations modifier

Élimination des sections de prononciation vides (trop lourdes) et transformation des sections non vides en remplaçant les API et SAMPA par le modèle {{pron}}.

  • script : replace.py ; fix :
    'pron_sec' : {
        'exceptions' : [''],
        'regex' : True,
        'msg' : {
                'fr':u'Robot : Élimination des sections prononciations inutiles, remplacement API/SAMPA par {{pron}}',
                },
        'replacements': [
          # Complet vide +ébauche
            (u"\r?\n?\r\n\{\{-pron-\}\}\r\n\{\{ébauche-pron\|.+?\}\}\r\n\*? ?\{\{API\}\} ?: ?(//|/x{2,}/)\r\n\*? ?\{\{SAMPA\}\} ?: ?(//|/x{2,}/)", r""),
          # API vide +ébauche
            (u"\r?\n?\r\n\{\{-pron-\}\}\r\n\{\{ébauche-pron\|.+?\}\}\r\n\*? ?\{\{API\}\} ?: ?(//|/x{2,}/)", r""),
          # Complet plein +ébauche
            (u"(\r?\n?\r\n\{\{-pron-\}\}\r\n)\{\{ébauche-pron\|.+?\}\}\r\n\*? ?\{\{API\}\} ?: ?/(.+?)/\r\n\*? ?\{\{SAMPA\}\} ?: ?/.*?/", r"\1* {{pron|\2}}"),
          # API plein +ébauche
            (u"(\r?\n?\r\n\{\{-pron-\}\}\r\n)\{\{ébauche-pron\|.+?\}\}\r\n\*? ?\{\{API\}\} ?: ?/(.+?)/", r"\1* {{pron|\2}}"),

          # Complet vide -ébauche
            (u"\r?\n?\r\n\{\{-pron-\}\}\r\n\*? ?\{\{API\}\} ?: ?(//|/x{2,}/)\r\n\*? ?\{\{SAMPA\}\} ?: ?(//|/x{2,}/)", r""),
          # API vide -ébauche
            (u"\r?\n?\r\n\{\{-pron-\}\}\r\n\*? ?\{\{API\}\} ?: ?(//|/x{2,}/)", r""),
          # Complet plein -ébauche
            (u"(\r?\n?\r\n\{\{-pron-\}\}\r\n)\*? ?\{\{API\}\} ?: ?/(.+?)/\r\n\*? ?\{\{SAMPA\}\} ?: ?/.*?/", r"\1* {{pron|\2}}"),
          # API plein -ébauche
            (u"(\r?\n?\r\n\{\{-pron-\}\}\r\n)\*? ?\{\{API\}\} ?: ?/(.+?)/", r"\1* {{pron|\2}}"),

          # Vide +ébauche
            (u"(\r?\n?\r\n\{\{-pron-\}\}\r\n)\{\{ébauche-pron\|.+?\}\}\r\n", r"\r\n"),
            ],
        },

Avancement : alphabet latin fini.

  • Problèmes rencontrés :
    1. ligne oubliée pour "Vide +ébauche"
    2. Plusieurs prononciations par ligne (mélangé ou pas entre API et SAMPA, bref c'est le bordel)
      • Repérage de ce genre d'articles en parcourant le dump et correction manuelle (effectuée, mais certains peuvent subsister).
  • Formats particuliers :
    1. Hébreu, type מסע (import Piedot).
  • 164459 articles

Janvier 2007 modifier

Références modifier

Suite à la création des modèles {{ref}} et {{REF}} (voir Wiktionnaire:Wikidémie/janvier 2007#Références), il faudrait rajouter une puce devant tous les modèles de références {{réf}} et {{R:...}} dans les articles.

  • liste : ref:Modèle:{{réf}}, Dump du 4 décembre 2006. Puis chaque modèle l'un après l'autre depuis la liste des modèles.
  • script : replace.py ; fix :
    'references' : {
        'regex' : True,
        'msg' : {
                'fr':u'Robot : format des références',
                },
        'replacements': [
            (u"\n(\{\{réf\|.+?\}\})", r"\n* \1"),
            (u"\n(\{\{R:.+?\}\})", r"\n* \1"),
            (u"\{\{réf\|Littré(\|| )1863\}\}", r"{{R:Littr"+u"é"+"}}"),
            (u"\{\{réf\|Larousse du XX<sup>e</sup> siècle\|1926\}\}", r"{{R:LarousseXXe}}"),
            ],
        },
  • Note : J'en profite pour mettre les références aux Littré avec {{R:Littré}}, idem pour le Larousse du XXe siècle.
  • Note 2 : J'ai mis dans tous les modèles de référence le modèle de base {{réf}} afin que la modification de la puce se répercute partout facilement.
  • Problèmes rencontrés : déconnexions trop fréquentes : le bot doit reprendre du début. Je change donc de la liste complète (dump) à la liste des modèles en les faisant un à un (moins automatique mais plus fiable).

Marquage des articles importés du DAF8 (avorté) modifier

La méthode utilisée n'étant pas efficace (utilisation d'expressions rationnelles), je n'ai pas effectué les changements en attendant de développer quelque chose de plus simple : voir à février 2006 pour la suite.

Février 2007 modifier

Marquage des articles importés du DAF8 (reprise) modifier

Après discussions sur la Wikidémie sur la nécessité de marquer les articles dont tout ou partie proviennent du DAF8 : Discussion et Mise en place du bot. La marque ajoutée est {{Import:DAF8}}, sous les références des articles concernés.

  • liste : ref:Modèle:{{R:DAF8}} remplacé par une liste générée à partir du dump, plus facile à gérer (notamment en cas de déconnexion intempestive où on n'a pas besoin de tout reprendre du début)
  • script : version adaptée de replace.py avec le passage suivant qui correspond aux changements faits sur le texte (def DoReplacement) :
		new_text = "" 
		r = False 
		rfait = False
		fr = False ;
		# On cherche si la page possède bien une référence R:DAF8, et si elle n'a pas déjà de marque d'import:DAF8
		if re.search("\{\{R:DAF8\}\}", original_text) and not re.search("\{\{Import:DAF8\}\}", original_text):
			lignes = original_text.split('\r\n')
			for l in lignes:
				# On détecte la section des références
				if l == u"{{=fr=}}":
					fr = True ;
				if l == u"{{-réf-}}" and fr:
					r = True
					new_text += l+"\r\n"
				# Si on est dans la section des références...
				elif r == True and rfait == False and fr:
					# ...si on trouve un élément de référence on continue
					if re.search("^\* ", l):
						new_text += l+"\r\n"
					# sinon on est arrivé à la fin de la section et on ajoute la marque d'import
					else:
						new_text += l+'\r\n{{Import:DAF8}}\r\n\r\n'
						r = False
						rfait = True
				else:
						new_text += l+"\r\n"
			# On vérifie que la marque a bien été apposée ;
			# sinon c'est que la section de référence était en fin de page
			# et n'avait donc pas de ligne supplémentaire
			# On ajoute donc la marque à la fin
			if not rfait:
				new_text += '\r\n{{Import:DAF8}}\r\n\r\n'
		# Sinon aucun changement à effectuer
		else:
			new_text = original_text
		# FIN...
		return new_text
  • problèmes rencontrés :
    1. accord : il y a plusieurs section de références, et le robot a donc créé deux modèle import:DAF8... J'ai donc changé
      elif r == True:
      en
      elif r == True and rfait == False:
      pour ne faire le changement qu'une seule fois : la première, qui est censée être le français.
    2. Dans l'éventualité où des sections non françaises se trouveraient avant (caractères et conventions internationales dans le standard), j'ai ajouté une condition (fr) qui vérifie qu'on est bien dans une section française (on n'est jamais trop prudent).
    3. Problème plus général (bug de pywikipedia) : quand dans le fichier file: utilisé il y a des articles dont le nom correspond à un code de langue, alors le code de langue est changé en ce nom-là et le titre d'article oublié, ce qui casse complètement la suite. Résolution : Pagegenerator.py:TextfilePageGenerator:ligne 204 : if parts[i] in fam.langs and len(parts) > 1: (ajout de la seconde condition).
  • Terminé. Pas d'autre problèmes rencontrés.

Mars 2007 modifier

Catégorisation automatique modifier

À partir du 8 mars. Nouveau passage :

  • règles supplémentaires utilisées :
    • tirets = espaces
    • apostrophe supprimée
  • Script utilisé : catauto.py mis à jour.
  • Données utilisées : voir Liste ascii.
  • Liste : Passage sur tous les articles

Problèmes rencontrés :

  1. Certains modèles de langue portent des paramètres, ce qui ne devrait pas être le cas ({{=ln=}} notamment) : Ce paramètre pose problème pour mon script qui utilise la partie droite =}} de ces modèles pour reconnaitre les langues, ce qui fait que le robot charcute finalement l'article.
    Solution apportée : élimination des paramètres dans les modèles de langue avant traitement par le robot.
  2. Erreur dans la solution proposée précédemment (erreur d'expression rationnelle).
    Solution apportée : script corrigé, et articles mal traités corrigés.
  3. En examinant le log, j'ai trouvés des articles qui posaient problème pour mon script : ces articles possèdent plusieurs sections de langue pour une même langue (ce qui ne devrait pas être le cas). Le script n'en reconnaissant qu'une (table de hachage) réécrit la seconde dans la première.
    Solution apportée : correction des articles repérés dans le log, puis repérage et correction des articles dans ce cas (dans le dernier dump).

Alphabet latin terminé.

Avril 2007 modifier

Netoyage des catégories DAF1932 modifier

Les catégories Catégorie:Noms communs en français etc. sont "polluées" par les pages non fusionnées du DAF8. Mon bot passe sur l'ensemble de ces pages pour leur enlever toute catégorisation.

  • liste : pages liées au modèle {{DAF1932}}
  • script : replace.py avec le fix suivant :
	'nocatdaf' : {
		'regex' : True,
		'msg' : {
				'fr':u'Robot : Suppression des catégories des pages du DAF8 non fusionnées',
				},
		'replacements': [
			(u"\n\[\[Catégorie:.+? en français.*?\]\]", r""),
			(u"\n\[\[Catégorie:français.*?\]\]", r""),
			],
		},
  • Commentaire : j'ai ajouté un petit truc aux modèles de titre pour qu'ils ne catégorisent automatiquement que les articles qui sont dans l'espace principal (non Wiktionnaire, Utilisateur, Discuter, etc.). Même chose pour le modèle {{=fr=}}.

Novembre 2007 modifier

Élimination des sections vides modifier

Certains articles comportent des sections vides (par exemple on a {{-adj-|fr}} suivi de {{-nom-|fr}}). Le bot élimine ces sections vides.

  • liste : pages du type "{{-type-}}\r\n\r?\n?{{-type-}}"
  • nombre : un peu plus de 50
  • script : replace.py : s%\{\{-.+?-.*?\}\}\r\n(\r\n\{\{-)%\1%
  • commentaire : « sections vides ôtées »
  • Commentaires :
    1. une partie était du type {{--}} {{-pron-}} ; j'ai dû réverté les modifs.
    2. une partie était du type {{-adj-}} {{-nom-}} avec les informations d'adjectif et de nom mélangés ensuite. Il faut les reprendre un à un (ne respecte pas le format normal).
    3. Il n'y a en fait pas d'erreurs de sections oubliées, plutôt des non-respects du format, ce qui est plus compliqué à corrigé (à la main).

Correction des o fermés/ouverts modifier

Pas mal de mots ont une prononciation erronée, à cause d'un o fermé ou ouvert. En particulier, ils se répercutent dans les flexions. Un bot facilitera le changement (qui est mineur).

  • liste : pages liées à des verbes en ô/au notés Erreur sur la langue ! au lieu de Erreur sur la langue !.
  • script : replace.py : s/ɔ/o/ (suivi)
    1. correction (collision avec Erreur sur la langue !) : ajout de s/õ/ɔ̃/ à la suite
  • commentaire : « o fermé »
  • Remarques :
    1. Effectués : frôler, enrôler, chauler, gauler, miauler, piauler, épauler, tauler

Nettoyage de modèles et formatage modifier

Quelques modèles très courants sont à transformer, dont -etym-. Comme je risque de passer sur tout le Wiktionnaire, j'en profite pour ajouter d'autres corrections.

  • liste : mots contenant -etym- (entre autres)
  • script : replace.py, avec le code fix suivant :
	'mod': {
		'regex': True,
		'msg': {
			'fr': u'Bot: nettoyage modèles et format',
		},
		'replacements': [
			# Espaces doubles ou en bout de lignes
			(u' +', ' '),
			(u' +\r', u'\r'),
			
			# R:DAF8 + Import:DAF8 = Import:DAF8 suffit
			(u'\r\n\*? ?\{\{R:DAF8\}\}[\r\n]+?(\{\{Import:DAF8\}\})', u'\r\n'+r'\1'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?\r\n.+?\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?\r\n.+?\r\n.+?\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?\r\n.+?\r\n.+?\r\n.+?\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			(u'\r\n\*? ?\{\{R:DAF8\}\}(\r\n.+?\r\n.+?\r\n.+?\r\n.+?\r\n.+?\r\n.+?)[\r\n]+?(\{\{Import:DAF8\}\})', r'\1'+u'\r\n'+r'\2'),
			
			# Dico Rivarol
			(u'\* Dictionnaire classique de la langue française - A\.C\. de Rivarol - 1827\.', u'* {{R:Rivarol}}'),
			
			# API -> pron ou éliminé si vide (toujours mieux que de laisser)
			(u'(\{\{-pron-\}\}\r\n)\* \{_{API\}\} : /(.+?)/\r\n\* \{\{SAMPA\}\} : /.+?/', r'\1* {{pron|\1}}'),
			(u'\r\n\{\{-pron-\}\}\r\n\{\{ébauche-pron\|.+\}\}\r\n\* \{\{API\}\} : //\r\n\* \{\{SAMPA\}\} : //\r\n\r\n', ''),
			# pron-rég accent
			(u'[\r\n]*\*? ?\{\{pron-r[eé]g\|',	u'\r\n* {{pron-rég|'),
			
			# Espacement des sections (avant et/ou après)
			(u'(\{\{voir\|.+?\}\})[\r\n]*',	r'\1'+u'\r\n\r\n'),
			(u'[\r\n]*\{\{-[eé]tym-\}\}',	u'\r\n\r\n{{-étym-}}'),
			(u'[\r\n]*(\{\{[eé]bauche\|)',	u'\r\n{{ébauche|'),
			(u'[\r\n]*(\{\{clé de tri)',	u'\r\n\r\n\r\n'+r'\1'),
			(u'[\r\n]*\r\n(\{\{-.+?-)',	u'\r\n\r\n'+r'\1'),
			(u'[\r\n]*\r\n(\{\{=.+?=)',	u'\r\n\r\n'+r'\1'),
			
			# Espacements des tableaux des modèles ( - )
			(u'(\{\{\(\}\})[\r\n]+',	r'\1'+u'\r\n'),
			(u'[\r\n]+(\{\{\-\}\})[\r\n]+',	u'\r\n'+r'\1'+u'\r\n'),
			(u'[\r\n]+(\{\{\)\}\})',	u'\r\n'+r'\1'),
			
			# Espaces des listes (pas exhaustif je pense)
			(u'\n(#|\*|#:|\*\*|\#\*|\#:*) *(\[\[|\{\{|[a-zA-Z])', u'\n'+r'\1 \2'),
			# Pas de déterminant sur la ligne de forme svp
			(u'\n([Ll]es?|[Ll]a|[dD]er|[dD]ie|[dD]as) ?(\'\'\'.+?\'\'\')', u'\n'+r'\2'),
			# Mot vedette en gras svp, non en lien
			(u'(\n)\[\[(.+?)\]\](.*?\r\n#)', r"\1'''\2'''\3"),
			# Pas de : en fin de ligne de forme svp
			(u'(\n\'\'\'.+?\'\'\'.*?) ?:?(\r\n#)', r"\1\2"),
			
			# pron sur la ligne de forme en remplacement de //
			# (plusieurs fois au cas où)
			(u'(\n\'\'\'.+?\'\'\'.+?)/(.+?)/(.*?\r\n#)', r'\1{{pron|\2}}\3'),
			(u'(\n\'\'\'.+?\'\'\'.+?)/(.+?)/(.*?\r\n#)', r'\1{{pron|\2}}\3'),
			(u'(\n\'\'\'.+?\'\'\'.+?)/(.+?)/(.*?\r\n#)', r'\1{{pron|\2}}\3'),
			(u'(\n\'\'\'.+?\'\'\'.+?)/(.+?)/(.*?\r\n#)', r'\1{{pron|\2}}\3'),
			# pron avec un truc vide => {{pron|}}
			(u'\{\{pron\|(\.\.\.|\?|\-| )\}\}', r'{{pron|}}'),
			
			# Images
			# (à faire au cas par cas?)
			#(u'\[\[[iI]mage:(.+?)\|([^\|\r\n\}]+?)\]\]', r'[[Image:\1|thumb|\2\]\]'),
			
			# Lien ucf (majuscule en premier) avec lien vers section française
			(u'# ?\[\[(.+?)#Français\|(.+?)\]\]', r'# {{ucf|\1}}'),
			
			# Lien annexe avec modèle
			(u'\* \[\[Annexe:(.+?)\|'+r'\1\]\]', r'* {{Annexe|\1}}'),
			(u'\* \[\[Annexe:(.+?)\|(.+?)\]\]', r'* {{Annexe|\1|\2}}'),
			
			# Accord : accent
			(u'\{\{fr-accord-r[ée]g\|', u'{{fr-rég|'),
			(u'\{\{fr-reg\|',	u'{{fr-rég|'),
			
			# Types de mots : accent
			(u'\{\{-adj-dem-',	u'{{-adj-dém-'),
			(u'\{\{-adj-indef-',	u'{{-adj-indéf-'),
			(u'\{\{-art-def-\}\}',	u'{{-art-déf-'),
			(u'\{\{-art-indef-',	u'{{-art-indéf-'),
			(u'\{\{-def-',		u'{{-déf-'),
			(u'\{\{-flex-prep-',	u'{{-flex-prép-'),
			(u'\{\{-loc-prep-',	u'{{-loc-prép-'),
			(u'\{\{-pronom-dem-',	u'{{-pronom-dém-'),
			
			# Niveau3 : accents
			#(u'\{\{-mero-',		u'{{-méro-'),
			#(u'\{\{-pref-',		u'{{-préf-'),
			(u'\{\{-prep-',		u'{{-prép-'),
			
			# Terminologie : correction code et accent
			# Complets (namespace=0 en tout cas)
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{chi\}\}',		r'\1'+u'{{chim}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{des\}\}',		r'\1'+u'{{dés}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{ecolo\}\}',		r'\1'+u'{{écol}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{econ\}\}',		r'\1'+u'{{écon}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{electro\}\}',		r'\1'+u'{{électro}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{erot\}\}',		r'\1'+u'{{érot}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{femin\}\}',		r'\1'+u'{{fémin}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{genet\}\}',		r'\1'+u'{{génét}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{geog\}\}',		r'\1'+u'{{géog}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{geol\}\}',		r'\1'+u'{{géol}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{geom\}\}',		r'\1'+u'{{géom}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{geoph\}\}',		r'\1'+u'{{géoph}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{herald\}\}',		r'\1'+u'{{hérald}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{med\}\}',		r'\1'+u'{{méde}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{metaph\}\}',		r'\1'+u'{{métaph}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{meton\}\}',		r'\1'+u'{{méton}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{neo\}\}',		r'\1'+u'{{néol}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{pec\}\}',		r'\1'+u'{{pêch}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{pedo\}\}',		r'\1'+u'{{pédo}}'),
			##(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{pej\}\}',		r'\1'+u'{{péj}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{poes\}\}',		r'\1'+u'{{poés}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{poet\}\}',		r'\1'+u'{{poét}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{pre\}\}',		r'\1'+u'{{pré}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{pres\}\}',		r'\1'+u'{{prés}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{refl\}\}',		r'\1'+u'{{réfl}}'),
			#(u'(#.+?|\* ?\[\[.+?\]\] ?|\{\{.+?\}\},? ?)\{\{theol\}\}',		r'\1'+u'{{théol}}'),
			
			# Lien création d'article
			(u'\{\{cree\}\}',	u'{{créer}}'),
			(u'\{\{cree\|',		u'{{créer|'),
			
			# WP, Wikilivre, etc. : puce
			(u'\n(\{\{(WP|)\}\})', u'\n* '+r'\1'),
			
			# Forme de l'étymologie :
			# majuscule au moins pour de/le
			(u'(\{\{-étym-\}\}\r\n):? ?d([ue])', r'\1: D\2'),
			(u'(\{\{-étym-\}\}\r\n):? ?l([ea])', r'\1: L\2'),
			# langue hors modèles
			(u'(\{\{-étym-\}\}\r\n):? ?(.+?)\{\{la\}\}', r'\1: \2latin'),
			(u'(\{\{-étym-\}\}\r\n):? ?(.+?)\{\{grc\}\}', r'\1: \2grec ancien'),
			(u'(\{\{-étym-\}\}\r\n):? ?(.+?)\{\{fr\}\}', r'\1: \2fran'+u'çais'),
			(u'(\{\{-étym-\}\}\r\n):? ?(.+?)\{\{en\}\}', r'\1: \2anglais'),
			(u'(\{\{-étym-\}\}\r\n):? ?(.+?)\{\{de\}\}', r'\1: \2allemand'),
		],
	},
    • Attention : changements dans replace.py pour ne pas changer les pages s'il n'y a que des sauts de page à insérer ou ajouter (ligne 303):
		new_short = re.sub('[\r\n]+', '', new_text) ;
		old_short = re.sub('[\r\n]+', '', original_text) ;
                if new_text == original_text or new_short == old_short:
  • avancement :
  1. entrainement, tests ;
  2. terminologies finis (namespace=0 en tout cas) ;
  3. -méro-, -préf-, -prép- faits.

Novembre 2008 modifier

Substitution des modèles {ucf} et {lien} (repris plus tard) modifier

Voir suite en décembre.

Ajout du code de langue dans les titres   modifier

Pour faire des liens complets du type [[mot#fr|mot]], il faut ajouter le paramètre "code=" à tous les modèles de langue.

  • liste : pages utilisant le modèle =langue=, sauf celles contenant déjà le paramètre "code=".
  • script : replace.py -> user-fixes.py
	'replacements': [
	(u"\[\[catégorie:", u"[[Catégorie:"),
	(r"(\{\{=langue=\|[^\|^\}]+)(\}\})(\r\n<includeonly>\[\["+u"Catégorie"+r":.+\]\]</includeonly>)(<noinclude>\r\n[.\r\n]*\n\[\["+u"Catégorie:Modèles de code langue"+r"\|)([a-z]+)(\]\])", r"\1|code=\5\2\4\5\6"),
	(r"(\{\{=langue=\|[^\|^\}]+\|portail=oui)(\}\})(\r\n<includeonly>\[\["+u"Catégorie"+r":.+\]\]</includeonly>)(<noinclude>\r\n[.\r\n]*\n\[\["+u"Catégorie:Modèles de code langue"+r"\|)([a-z]+)(\]\])", r"\1|code=\5\2\4\5\6"),
	(r"(\{\{=langue=\|\[\[[^\|^\}]+\|[^\|^\}]+\]\])(\}\})(\r\n<includeonly>\[\["+u"Catégorie"+r":.+\]\]</includeonly>)(<noinclude>\r\n[.\r\n]*\n\[\["+u"Catégorie:Modèles de code langue"+r"\|)([a-z]+)(\]\])", r"\1|code=\5\2\4\5\6"),
	(r"(\{\{=langue=\|[^\|^\}]+\|[^\|^\}]+)(\}\})(\r\n<includeonly>\[\["+u"Catégorie"+r":.+\]\]</includeonly>)(<noinclude>\r\n[.\r\n]*\n\[\["+u"Catégorie:Modèles de code langue"+r"\|)([a-z]+)(\]\])", r"\1|code=\5\2\4\5\6"),
	],

Décembre 2008 modifier

Unification de {modl}   modifier

D'après la décision prise sur la page de gestion des modèles.

  • liste : pages utilisant {M}, {mod} et {Mod}.
  • script : replace.py : \{\{(M|mod|Mod)\|{{modl|
  • Terminé : les modèles M et Mod ont été supprimés et le modèle mod transformé en page de la langue mobilien. - Dakdada (discuter) 7 décembre 2008 à 16:27 (UTC)

Renommage des modèles grecs importés (suspendu) modifier

Les modèles de Catégorie:Modèles en grec ont été importés sans être traduits.

Correction des prononciations API modifier

Des erreurs courantes :

  • g au lieu de ɡ
  • ' au lieu de ˈ
  • : au lieu de ː
  • liste : dernier dump
  • script : replace.py, user-fixes.py :
fixes['pronAPI'] = {
	'regex': True,
	'msg': {
		'fr':u'Correction des prononciations API',
	},
	'replacements': [
	(r"(\{\{)(pron|fr-ind|fr-"+u"rég"+r")(\|[^\}]*)g([^\}]*\}\})", r"\1\2\3"+u"ɡ"+r"\4"),
	(r"(\{\{)(pron|fr-ind|fr-"+u"rég"+r")(\|[^\}]*)'([^\}]*\}\})", r"\1\2\3"+u"ˈ"+r"\4"),
	(r"(\{\{)(pron|fr-ind|fr-"+u"rég"+r")(\|[^\}]*):([^\}]*\}\})", r"\1\2\3"+u"ː"+r"\4"),
	],
}
  • En préparation

Ajout de puces à WP et pron-rég   modifier

Les modèles {{WP}} et {{pron-rég}} ne devraient pas contenir de puce (celles-ci doivent écrites directement dans les articles). Aussi pris en compte : {{pron}} (en début de ligne dans les sections {{-pron-}} et les références commençant par R: (exemple : {{R:DAF8}}).

  • liste : dernier dump
  • script : replace.py, user-fixes.py :
fixes['puces'] = {
	'regex': True,
	'msg': {
		'fr':u'Correction des puces de WP, pron, pron-rég et des références',
	},
	'replacements': [
	(r"\n(\{\{WP\}\})", r"\n* \1"),
	(r"\n(\{\{WP\|.*\}\})", r"\n* \1"),
	(r"\n(\{\{pron-" + u"rég" + r")", r"\n* \1"),
	(r"\n(\{\{pron\|)", r"\n* \1"),
	(r"\n(\{\{R:.+\}\})", r"\n* \1"),
	],
}
  • Terminé pour l'espace de nommage principal du moins (ailleurs, le format est différent)
  • Conséquence : élimination des puces incluses dans ces modèles

Substitution des modèles {ucf} et {lien}, suite   modifier

Reprise de novembre.

  • Remplacement automatique de ces modèles par des liens qui précis du type coin. Utilisation des modèles substituables {{s-ucf}} et {{s-lien}}, respectivement.
  • Liste : références vers {{ucf}} et {{lien}} (~55 700 articles concernés)
  • script : replace.py -> user-fixes.py :
fixes['ucf'] = {
	'regex': True,
	'msg': {
		'fr':u'Robot: substitution automatique des liens ucf, lien',
	},
	'replacements': [
	(r'\[\[ucf\|[^\]]+?\]\]', r'{{ucf|\1}}'),
	(r'\{\{(lien|ucf)\|2=(.+?)\}\}', r"[[{{subst:PAGENAME}}#\2|{{subst:PAGENAME}}]]"),
	(r'\{\{(lien|ucf)([\|\}])', r"{{subst:s-\1\2"),
	(r'\[\[#Français\|(.+?)\]\]', r'[[{{subst:PAGENAME}}#fr|\1]]'),
	],
}
  • Note : quelques erreurs de liens avec des liens normaux vers [[ucf|mot]]
  • Erreur : le modèle {{s-ucf}} fait de mauvaises substitutions Correction du modèle
    • Repasser sur 918 articles (listés via le dump)
    • script : replace.py regex : (r'\[\[(.+?)#fr\|([^A-Z].*?)\]\]', r'[[\1]]')
    • Corrigé  
  • Terminé pour l'espace de nom principal
  • Le remplacement dans les autres espaces ne peut pas se faire aussi systématiquement

Remplacement de {ext} par {par ext}   modifier

Suite à discussion sur la Wikidémie : code langue de l'extremaduran occupé par {par extension}. Nouveau nom : {{par ext}}.

  • Liste : références à [[modl|ext}} ;
  • Script : replace.py
    python replace.py -regex -ref:Modèle:ext "\{\{ext\}\}" "{{par ext}}"

Janvier 2009 modifier

Sections de langues modifiables   modifier

(Commencé fin décembre) Suite à Wiktionnaire:Gestion des modèles/Sections modifiables.

  • Liste : tous les articles
  • Script : replace.py -> user-fixes.py :
fixes['langues'] = {
	'regex': True,
	'msg': {
		'fr':u'Robot : sections de langues rendues modifiables',
	},
	'replacements': [
		(r"(\{\{=.+?=\}\})(\r)", r"== \1 ==\2"),
		(r"(\{\{-car-\}\})(\r)", r"== \1 ==\2"),
		(r"(\{\{=.+?=\|.+?\}\})(\r)", r"== \1 ==\2"),
		(r"(\{\{-car-\|.+?\}\})(\r)", r"== \1 ==\2"),
	],
}
  • Terminé. Reste à faire une seconde passe rapide pour corriger les articles modifiés pendant la transition.

Substitution de {eo-flex}   modifier

Modèle {{eo-flex}} à substituer : impossible à modifier, cryptique pour tout contributeur et inutilisable s'il y a des homographes ou une quelconque information à ajouter.

  • Liste : articles utilisant Modèle:eo-flex
  • Script : replace.py -> user-fixes.py :
fixes['eo-flex'] = {
	'regex': True,
	'msg': {
		'fr':u'Robot : substitution du modèle eo-flex',
	},
	'replacements': [
		# Nom
		(r"\{\{eo-flex\|([^\|]+)\|ojn\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-nom-|eo}}\n'''\1ojn''' {{pron|\2}}\n# ''Accusatif pluriel de'' [[\1o#eo|\1o]]."),
		(r"\{\{eo-flex\|([^\|]+)\|oj\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-nom-|eo}}\n'''\1oj''' {{pron|\2}}\n# ''Nominatif pluriel de'' [[\1o#eo|\1o]]."),
		(r"\{\{eo-flex\|([^\|]+)\|on\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-nom-|eo}}\n'''\1on''' {{pron|\2}}\n# ''Accusatif singulier de'' [[\1o#eo|\1o]]."),
		# Adjectif
		(r"\{\{eo-flex\|([^\|]+)\|ajn\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-adj-|eo}}\n'''\1ajn''' {{pron|\2}}\n# ''Accusatif pluriel de'' [[\1a#eo|\1a]]."),
		(r"\{\{eo-flex\|([^\|]+)\|aj\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-adj-|eo}}\n'''\1aj''' {{pron|\2}}\n# ''Nominatif pluriel de'' [[\1a#eo|\1a]]."),
		(r"\{\{eo-flex\|([^\|]+)\|an\|?([^\|\}]*)\}\}", r"== {{=eo=}} ==\n{{-flex-adj-|eo}}\n'''\1an''' {{pron|\2}}\n# ''Accusatif singulier de'' [[\1a#eo|\1a]]."),
	],
}
  • Erreur de script : \1o#ea au lieu de \1a#eo (articles corrigés)

Février 2009 modifier

Renommage de petits modèles modifier

  • Modèles concernés :
    1. Codes langue potentiels :
    2. Harmonisation :
    3. {{wp}} -> {{WP}}
  • Scripts : replace.py
  • En préparation

O ouvert   modifier

Corriger les articles en français terminés par un o ouvert : ils devraient tous être fermés.

  • Remplacement avec replace.py : (u"ɔ([\}\|/\]])", r"o\1")
  • Résumé automatique : « Robot: o toujours fermé en fin de mot en français »
  • Confirmation manuelle
  • Fait pour la majorité des pages détectées (~1500)

Mars 2009 modifier

Ajout de puces à R:fon   modifier

Ajout de puces devant le modèle (et pas dans le modèle) du modèle {{R:fon}}.

Avril 2009 modifier

Correction du modèle pron   modifier

Suppression du second argument en X-SAMPA désormais obsolète (remplacé par le code langue).

  • Liste : d'après le dernier dump (31 mars 2009)
  • Script : replace.py, fix:
		# Protection paramètre de langue en conflit avec X-SAMPA (en espérant que ce sont bien des codes langue...)
		(r"\{\{pron\|([^\}\|=]*)\|([a-z]{2,3})\}\}", r"{{__pron__|\1|\2}}"),
		
		# Prononciation en deuxième paramètre (erreur ?)
		(r"\{\{pron\|\|([^\}\|=]+)\}\}", r"{{pron|\1}}"),
		
		# Résidu X-SAMPA
		(r"\{\{pron\|([^\}\|=]+)\|([^\}\|=]+)\}\}", r"{{pron|\1}}"),
		
		# Déprotection
		(r"\{\{__pron__", r"{{pron"),
  • Résumé : Correction de syntaxe du modèle Code langue manquant !
  • Manuel, terminé : 208 pages modifiées + quelques autres corrigées manuellement

Ajout de noms de familles russes   modifier

Import d'après le Wiktionary russophone de noms de familles russes et leurs déclinaisons.

  • Liste adaptée par Chrisaix
  • Script : pagefromfile.py
  • Résumé : Import depuis ru.wiktionary.org, adapté par Chrisaix
  • Terminé : 73 635 + 77 712 = 151 347 articles importés
  • Liste des contributions

Ajout de flexions d'ajectifs tchèques   modifier

Création à partir des articles d'adjectifs tchèques du Wiktionnaire.

  • Liste préparé par Chrisaix
  • Script : pagefromfile.py
  • Résumé : Création à partir de l'article de base, préparé par Chrisaix

Juillet 2009 modifier

Ajout d'adjectifs ukrainiens   modifier

  • Liste préparé par Chrisaix
  • Script : pagefromfile.py
  • Résumé : Création automatique d'article préparé par Chrisaix
  • Terminé : 12 278 articles importés

Substitution des modèles {{en-compar}} et {{en-superl}}   modifier

Remplacés par substitution par {{comparatif de}} et {{superlatif de}}, en sortant le numéro de liste du modèle.

  • Liste : références à {{en-compar}} et {{en-superl}}
  • Script : replace.py
  • Résumé (auto) : « Robot : Remplacement de texte automatisé (-{{en-compar| +{{subst:en-compar|) » et « Robot : Remplacement de texte automatisé (-{{en-superl| +{{subst:en-superl|) »
  • Restreint à l'espace principal
  • exemple : acer
  • Terminé

Août 2009 modifier

Extraction de points finaux hors des modèles   modifier

Les modèles {{variante de}}, {{variante ortho de}}, {{comparatif de}}, {{superlatif de}} avaient un point final inclus qu'il faut sortir pour laisser le choix au rédacteur.

  • Liste obtenue automatiquement depuis le dernier dump du 10 août 2009.
  • Script : replace.py -namespace:0 "(\{\{)(variante de|variante ortho de|comparatif de|superlatif de)(\|[^=\}\r\n]+?\}\})([^\.,;])" "\1\2\3.\4"
  • Résumé : « Bot : point final hors du modèle »
  • Note : évitement des modèles utilisant le paramètre point=0 (paramètre à enlever plus tard)
  • Terminé : ~1288 remplacements
  • Corrigé 7 articles contenant point=0

Déplacement des documentations de modèles   modifier

Renommage des pages /Aide en /Documentation.

  • Liste obtenue à partir du dump
  • Script : movepages.py
  • 571 pages d'aide en /Aide
  • Terminé : 371 pages déjà renommées, 3 renommées et supprimées, soit 197 pages déplacées par Daahbot
  • Note : reste à remplacer les liens depuis les modèles

Septembre 2009 modifier

Élimination des cadres de type Wikipédia   modifier

Élimination des cadres de type {{Wikipédia}}, placés en dehors de sections de langue en haut à droite des pages, suite à discussion sur la Wikidémie. Dans un premier temps, seuls les cadres présents dans une même page que des liens WP sont éliminés, car superflus.

  • Liste : pages contenant à la fois le modèle Wikipédia (cadre) et le modèle WP (lien adapté)
  • Script : replace.py "\{\{Wikip.dia.*\}\}\r\n" ""
  • Fait à l'aide du dernier dump, mais de nouveaux cadres ont pu être ajoutés depuis. Il faut nettoyer le reste à la main : Spécial:Pages_liées/Modèle:Wikipédia.

Sections de langues modifiables encore   modifier

Certaines pages n'ont pas la nouvelle forme de section de langue modifiable (519 pages détectées dans le dump du 10 septembre 2009). Il y a de nouvelles pages créées après la création du dump, mais elles sont en minorité ; la plupart des pages sont très anciennes, comme pointé par Chrisaix. Je suppose que ceux-là sont des résidus du passage du bot sur toutes les pages, le taux d'erreur étant alors de ~5.10-4 (attribuable à des erreurs de connexion, etc.).

  • Liste : pages avec {{=.+=}} sans == de part et d'autre
  • Script : replace.py
  • 519 pages

Séparation des erreurs orthographiques et typographiques   modifier

La catégorie Catégorie:Erreurs d’orthographe en français mélange vraies erreurs (maline) et erreurs typographiques (coeur). Le bot parcourt donc tous les articles et remplace le modèle {{-erreur-}} par {{-var-typo-}} (temporaire). Comme la différence n'est pas simple, chaque modification est confirmée à la main.

  • Liste : référence au modèle {{-erreur-}}
  • Script : replace.py : "\{\{-erreur-" "{{-var-typo-" -namespace:0
  • Près de 600 pages

Sections de langues modifiables pour import DAF8   modifier

Les sections de langue =fr= n'ont pas été rendues modifiables dans les articles restant à importer du DAF8.

Format des exemples et citations   modifier

Ajout de puces aux exemples et application du modèle {{source}} aux citations.

  • Exemple : [1]
  • Liste : toutes les pages avec des exemples (71740 dans le dernier dump)
  • Script : replace.py -fix
fixes['expuces'] = {
	'regex' : True,
	'msg' : {
		'_default':u"Bot : mise en forme des exemples et citations",
	},
	'replacements': [
		(u"\n#: ?''", u"\n#* ''"),
                (u"\n#:\* ?''", u"\n#* ''"),
                (u"\n#:: ''", u"\n#*: ''"),
		(r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(" + u"[—–-]" + r" *|- *)(\(?<small> *\(?|\(|\(?<ref> *\(?) *(.+?)[,\.;:]? *(\)? *</small> *\)?|\)|\)? *</ref> *\)?)\.? *(\r)", r"\1\2'' {{source|\5}}\7"),
                (r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(\(? *<small> *\(?|\(? *<ref> *\(?) *(.+?)[,\.;:]? *(\)? *</small> *\)?|\)? *</ref> *\)?)\.? *(\r)", r"\1\2'' {{source|\4}}\6"),
#                (r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(\() *(.+?)[,\.;:]? *(\))\.? *(\r)", r"\1\2'' {{source|\4}}\6"),
                (r"(<small>|<ref>) *(\{\{source\|.+\}\}) *(</small>|</ref>)", r"\2"),
		(u"'' *[—–-] *\{\{source\|", u"'' {{source|"),
		(u"\{\{source\|[—–-]?"+r" *(.+?),? *\}\} *(\r)", r"{{source|\1}}\2"),
		(u"(?i)\(Joseph Morsel.+2007\)", u"{{source|Joseph Morsel avec la collaboration de Christine Ducourtieux, ''L’Histoire (du Moyen Âge) est un sport de combat…'', 2007}}"),
	]
}
  • Cas difficiles :
    • Différencier les sources des notes d'exemples : du, de
    • Citations entre parenthèses et incluant des parenthèses : médiéval
    • Exemples ne commençant pas par des italiques : Y, coréen, etc. il faudra les répertorier une fois tous les autres modifiés.
  • Les parenthèses ambigües (sans indication qu'il s'agit d'une source) ignorées, seront remplacées ultérieurement.
  • Fini, mais :
    • Il reste des lignes d'exemples non transformées car ne commençant pas par '' (typiquement avec {{ébauche-exe}}) ;
    • Il reste à lister les groupes entre parenthèses pour faire la part des sources et des notes.
    • Vérifier qu'il n'y a pas d'autres cas (vérification dans le prochain dump).

Décembre 2009 modifier

Format des exemples et citations (suite)   modifier

Il reste des exemples sans puce, à cause de leur mise en forme erronée (pas de , modèle en début, etc.) ou pas reconnu.

  • Liste : reste de pages avec des lignes commençant par #: ou #::
fixes['expuces'] = {
	'regex' : True,
	'msg' : {
		'_default':u"Bot : mise en forme des exemples et citations",
	},
	'replacements': [
		(u"\n#: ?''", u"\n#* ''"),
                (u"\n#:\* ?''", u"\n#* ''"),
                (u"\n#:: ?''", u"\n#*: ''"),
		(r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(" + u"[—–-]" + r" *|- *)(\(?<small> *\(?|\(|\(?<ref> *\(?) *(.+?)[,\.;:]? *(\)? *</small> *\)?|\)|\)? *</ref> *\)?)\.? *(\r)", r"\1\2'' {{source|\5}}\7"),
                (r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(\(? *<small> *\(?|\(? *<ref> *\(?) *(.+?)[,\.;:]? *(\)? *</small> *\)?|\)? *</ref> *\)?)\.? *(\r)", r"\1\2'' {{source|\4}}\6"),
#                (r"(\n#\*+ ?''.+)''([\.!\?;:]?) *(\() *(.+?)[,\.;:]? *(\))\.? *(\r)", r"\1\2'' {{source|\4}}\6"),
                (r"(<small>|<ref>) *(\{\{source\|.+\}\}) *(</small>|</ref>)", r"\2"),
		(u"'' *[—–-] *\{\{source\|", u"'' {{source|"),
		(u"\{\{source\|[—–-]?"+r" *(.+?),? *\}\} *(\r)", r"{{source|\1}}\2"),
		(u"(?i)\(Joseph Morsel.+2007\)", u"{{source|Joseph Morsel avec la collaboration de Christine Ducourtieux, ''L’Histoire (du Moyen Âge) est un sport de combat…'', 2007}}"),
                (u"\n#:: ?([A-z\{\(\[<])", r"\n#*: \1"),
                (u"\n#:: ", u"\n#*: "),
                (u"\n#: ?([A-z\{\(\[<])", r"\n#* \1"),
                (u"\n#: ", u"\n#* "),
	]
}
  • Enlève également les tirets devant les sources des citations.
  • Terminé.

Remplacements simples modifier

Projet : quelques résidus à remplacer.

Depuis Vers
&mdash;
… *.

Septembre 2010 modifier

Modèle régio -> région   modifier

Remplacement du modèle régio par le synonyme région.

  • liste : références à {{régio}}
  • script : replace.py -namespace:0 -regex "\{\{régio([\|\}])" "{{région\1" -ref:Template:régio
  • Terminé

Juin 2011 modifier

Modèle supprimer -> "supprimer ?"   modifier

Remplacement du modèle supprimer par "supprimer ?", pour le rendre synonyme de {{Supprimer}} qui n’est pas un bandeau.

  • liste : références à {{supprimer}}
  • script : template.py supprimer "supprimer ?"
  • Terminé

Annexe:Organisation d'une cellule animale eucaryote / français -> lien thésaurus   modifier

Renommage de l’annexe vers une page de thésaurus : mise à jour des liens.

  • liste : référence vers le lien à remplacer (10 pages)
  • script : python replace.py "*Organisation d'une cellule animale eucaryote en annexe." "* Le thésaurus Cellule vivante en français  " -summary:"Bot : lien Thésaurus harmonisé" -ref:"Annexe:Organisation d'une cellule animale eucaryote / français"
  • Terminé

Août 2012 modifier

  Nouveau modèle unique de sections de langue modifier

Remplacement des modèles de langue du type {{=fr=}} par le modèle {{langue}}. Cf Wiktionnaire:Prise de décision/Simplifier le Modèle:=xxx=.

  • liste : toutes les pages
  • script : python replace.py -fix:languesec -namespace:0 -start:!
fixes['languesec'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : remplacement du modèle de section de langue (cf [[Wiktionnaire:Prise de décision/Simplifier le Modèle:=xxx=]])",
        },
        'replacements': [
                ("== *\{\{-car-\}\} *==", u"== {{caractère}} =="),
                ("== *\{\{=([^=]+)=\}\} *==", r"== {{langue|\1}} =="),
        ]
}
  • Fonctionnement sur le Toolserver
  • Note : j'ai protégé le modèle (oublié de le faire avant de lancer la migration)
  • Saut de маркираха à Ա pour cause de conflit avec JackBot (d · c · b) qui formate les modèles en bulgare. Je retournerai au cyrillique à la fin, avant la finalisation.
    • Arrivé à la fin : remplacement des pages restantes (omises ou ajoutées entretemps) en prenant le modèle =langue= comme référence.
  • Terminé. Il reste quelques occurrences en dehors de l'espace principal (vérifier les pages d'aide à la création).

  Remplacement du modèle caractère par le modèle casse modifier

Afin de libérer {{caractère}} (cf ci-dessus), et accessoirement donner un nom plus descriptif au modèle : remplacement de {{caractère}} par {{casse}}.

  • préalable : renommage de {{caractère}} vers {{casse}}.
  • liste : pages incluant {{caractère}}
  • script :
  • 1783 pages modifiées

Février 2013 modifier

Préparation de la migration de mon bot depuis le Toolserver vers les Labs ([2]).

Anciens modèles de prononciation 1 modifier

Il reste beaucoup d'articles utilisant l'ancienne présentation des prononciations : // sans modèle. JackBot est passé sur pas mal de ces articles, mais a oublié par endroit d'enlever l'ancienne prononciation.

  • Listes : pages détectées dans le fichier xml du 2013-02-20
  • Regex : \{\{pron\|(.+?)\|(.+?)\}\} /\1/ --> {{pron|\1|\2}}
  • Changements manuels assistés
  • 30 pages repêchées... j'en espérait plus (il y près de 4600 anciennes prononciations restantes)
  • Réécrire le script pour remplacer directement les /[^/]+/ dans les articles

Anciens modèles de prononciation 2 modifier

Suite : afin de remplacer tous les /xxx/, j'ai écrit un fix :

fixes['pronold'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : modèle de prononciation: /xxx/ -> {{pron|xxx|lang}}",
        },
        'replacements': [
                # First MARK LANGUE
                (u"==( *)\{\{langue\|(.+)\}\}( *)== *", u"§§§" + r"\1\2\3" + u"§§§"),

                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),
                (u"(§§§ *)([^ §]+)( *§§§[^§]+?) \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r"\1\2\3 {{pron|\4|\2}}"),

                (u" \/([^\/\r\n\{=<> ][^\/\r\n\{=<>]*)\/", r" {{pron|\1}}"),

                # RESTORE LANGUE
                (u"§§§( *)(.+?)( *)§§§", r"==\1{{langue|\2}}\3=="),

                # Fix for old API SAMPA duo 
                (u"[:\*]+ *\{\{(API|IPA)\}\} *:? *(\{\{pron\|.+\}\}) *[\r\n]+\* *\{\{SAMPA\}\} *: *\{\{pron\|[^\}]+\}\} *([\r\n]*)", r"* \2\3"),
                # Fix for broken conversion
                (u"[:\*]+ *\{\{pron\|\|[^\}]+?\}\} *:? *(\{\{pron\|[^\}]+\}\}) *[\r\n]+\* *\{\{SAMPA\}\} *: *\{\{pron\|[^\}]+\}\} *([\r\n]*)", r"* \1\2"),
                # Same without SAMPA
                (u"[:\*]+ *(\{\{pron\|\|[^\}]+?\}\}|\[\[API\]\]|\[\[IPA\]\]|API|IPA) *:? *(\{\{pron\|[^\}]+\}\}) *", r"* \2"),
        ],
        'exceptions': {
            'text-contains': [
                u'\{\{R:AHD\}\}',
                u'http://',
                u'/…/\)',
            ],
        }
}
  • Fix utilisé avec replace.py -fix:pronold
  • Dans le regex ci-dessus j'ai bricolé pour récupérer le code langue et éviter de ne prendre que le premier code langue pour tout l'article. J'ai aussi dû répété la même ligne au cas où il y aurait plusieurs prononciations nécessitant une conversion (pas possible autrement). Enfin, j'ai raouté une ligne pour voir les // qui ne pourraient pas récupérer leur code langue.
  • Changements manuels assistés (pas automatique)
  • Il y a ~4600 pages à changer, donc ça va prendre du temps de tout vérifier à l'œil, mais ce sera plus rapide que de tout remplacer à la main, et c'est mieux que de tout remplacer aveuglément par bot.
  • Suspendu : quelques centaines de pages modifiées, mais il y a un vrai problème de mise en forme notamment des pages de caractères chinois qui ont encore les {{API}} et {{SAMPA}} (voire {{IPA}} !). Pour corser les choses, JackBot est passé sur ces pages mais ne les a pas changé comme il aurait fallut, donc il faudra attendre que ces pages soient corrigées avant de reprendre les corrections manuelles.
  • Reprise : ajout de 3 nouvelles lignes pour corriger les erreurs

Juin 2013 modifier

Catégorie et id dans term modifier

Inclusion des catégories et id dans le modèle term.

fixes['term'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : catégorisation et id paramètres de term",
        },
        'replacements': [
                # Sans catfin
                (u"<span id=\"?([^\">]+)\"?>\{\{terme?\|(.+)\}\}</span><includeonly>\{\{#if:\{\{\{nocat\|\}\}\}\{\{NAMESPACE\}\}\|\|\r?\n?\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\[\[Catégorie:(Lexique|.+) \{\{#if:\{\{\{1\|\}\}\}\|en +(\{\{\{\{\{1\|\}\}\}\}\}|\{\{nom langue\| ?\{\{\{1\|?f?r?\}\}\} ?\}\}) *(.*)\|sans langue précisée\}\}\]\] *\}\} *\}\}</includeonly>", r"{{term|\2|\n|id=\1\n|lang={{{1|}}}\n|cat=\3\n|nocat={{{nocat|}}}\n}}"),
                # Avec catfin
                (u"<span id=\"?([^\">]+)\"?>\{\{terme?\|(.+)\}\}</span><includeonly>\{\{#if:\{\{\{nocat\|\}\}\}\{\{NAMESPACE\}\}\|\|\r?\n?\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\[\[Catégorie:(Lexique|.+) \{\{#if:\{\{\{1\|\}\}\}\|en +(\{\{\{\{\{1\|\}\}\}\}\}|\{\{nom langue\| ?\{\{\{1\|f?r?\}\}\} ?\}\}) *(.*)\|.*sans langue précisée\}\}\]\] *\}\} *\}\}</includeonly>", r"{{term|\2|\n|id=\1\n|lang={{{1|}}}\n|cat=\3\n|catfin=\5\n|nocat={{{nocat|}}}\n}}"),
        ]
}

Registre et le reste modifier

Même chose avec {{registre}}.

  • Liste : inclusions du modèle
  • Beaucoup trop hétérogène... il est grand temps de réécrire tout ça
fixes['registre'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : catégorisation et id paramètres de {{registre}}",
        },
        'replacements': [
                # Avec nom langue
                (u"\{\{registre\|(.+)\|(.)\}\}<includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|<span id=\"(.+?)\"></span>\[\[Catégorie:(.+?) +\{\{#if:\{\{\{1\|\}\}\} \| ?en \{\{nom langue\| ?\{\{\{1\|\}\}\} ?\}\} ?\| ?sans langue précisée ?\}\}\]\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\1\n|2=\2\n|id=\3\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"),
                # Sans nom langue
                (u"\{\{registre\|(.+)\|(.)\}\}<includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|<span id=\"(.+?)\"></span>\[\[Catégorie:(.+?) +\{\{#if:\{\{\{1\|\}\}\} \| ?en \{\{ ?\{\{\{1\|\}\}\} ?\}\} ?\| ?sans langue précisée ?\}\}\]\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\1\n|2=\2\n|id=\3\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"),

{{registre|Vieilli|V}}<includeonly>{{#if: {{{nocat|}}}||{{#ifeq:{{{1|}}}|nocat||<span id="vieilli"></span>{{#ifeq:{{NAMESPACE}}||[[Catégorie:Termes vieillis {{#if:{{{1|}}}|en {{{{{1|}}}}}|sans langue précisée}}]]}} }} }}</includeonly>

                # Sans nom langue, id avant
                (u"<span id=\"(.+?)\">\{\{registre\|(.+)\|(.)\}\}</span><includeonly>\{\{#ifeq:\{\{NAMESPACE\}\}\|\|\{\{#if:\{\{\{nocat\|\}\}\}\|\|\{\{#ifeq:\{\{\{1\|\}\}\}\|nocat\|\|\[\[Catégorie:(.+?) +\{\{#if:\{\{\{1\|\}\}\} \| ?en \{\{ ?\{\{\{1\|\}\}\} ?\}\} ?\| ?sans langue précisée ?\}\}\]\]\}\} ?\}\} ?\}\}</includeonly>", r"{{registre\n|1=\2\n|2=\3\n|id=\1\n|lang={{{1|}}}\n|cat=\4\n|nocat={{{nocat|}}}\n}}"),

                # Meilleure catégorie
                (u"\[\[Catégorie:Modèles de contexte\|", r"[[Catégorie:Modèles de registre|"),
        ]
}

Août 2013 modifier

Modèle T    modifier

Certaines pages utilisent encore les modèles de langue nus pour les traductions à la place de T (essentiellement parce qu'elles n'ont aucun contenu). D'autres utilisent ces modèles pour autre chose comme les -drv-int-, mais c'est un autre modèle qu'il faudra utiliser.

  • Liste : références à {{en}}
  • Script : replace.py -fix:tradt
fixes['tradt'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : Traductions sans modèle {{T}}",
        },
        'replacements': [
                # Protection des trad- et trad--
                (u"\{\{trad--", r"{{tradMOINSMOINS"),
                (u"\{\{trad-", r"{{tradMINUS"),

                # Cas où la traduction est juste [[traduction]]...
                (u"\* \{\{en\}\} ?: \[\[traduction\]\]", r"* {{T|en}} :"),

                # Ligne répétée de nombreuses fois
                (u"(\{\{-trad-\}\}[^\-]+)\* ?\{\{([^\|\}]+)\}\} :", r"\1* {{T|\2}} :"),
                (u"(\{\{-trad-\}\}[^\-]+)\* ?\{\{([^\|\}]+)\}\} :", r"\1* {{T|\2}} :"),

                # Déprotection
                (u"\{\{tradMINUS", r"{{trad-"),
                (u"\{\{tradMOINSMOINS", r"{{trad--"),
        ]
}
  • NB : le remplacement est répliqué pour modifier les lignes s'il y en a plusieurs.
  • Fait :
    • 587 pages changées via en
    • 44 pages via de
    • 30 pages via io
    • Il en reste, à faire quand il n'y aura plus qu'eux

Modèle L   modifier

Pour les sections {{-drv-int-}}, {{-faux-amis-}} et {{-noms-vern-}}, on a aussi des listes de langue mais sans catégorisation particulière. Pour ceux-ci il existe le modèle {{L}} qui a le même rôle que {{L}} dans les traductions.

fixes['langl'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : Modèles de langue en liste remplacés par le modèle {{L}}",
        },
        'replacements': [
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*[Ff]rançais\s*:", r"\1* {{L|fr}} :"),
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*[Aa]nglais\s*:", r"\1* {{L|en}} :"),
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*[Aa]llemand\s*:", r"\1* {{L|de}} :"),
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*[Ii]talien\s*:", r"\1* {{L|it}} :"),
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*[Ee]spagnol\s*:", r"\1* {{L|es}} :"),
                # Ligne répétée de nombreuses fois
                (u"(\{\{-(drv-int|noms-vern|n-vern|dial)-\}\}[^\-]+)\*\s*\{\{([^\|\}]+)\}\}\s*:", r"\1* {{L|\3}} :"),
        ],
}
  • NB : le remplacement est répliqué pour modifier les lignes s'il y en a plusieurs.
  • NB2 : il y a un modèle catégorisant {{F}} pour les faux-amis. J'exclus ce cas pour le moment.
  • NB3 : sachant que {{-noms-vern-}} est utilisé bizarrement, je ne vais pas parcourir les pages qui en contiennent pour le moment.
  • 5748 pages modifiées.
  • Reste quelques pages avec le nom de la langue en toutes lettres (!) à répertorier et remplacer plus tard.

Modèle tmef   modifier

Le modèle {{M|tmef}} est inutilement abrégé : autant le remplacer par le nom complet et compréhensible : {{M|titre mis en forme}}.

  • Liste : références à {{M|tmef}}.
  • Script : python pwb.py replace.py -ref:Template:tmef -log "{{tmef|" "{{titre mis en forme" -summary:"Bot : Modèle tmef remplacé par le nom complet titre mis en forme"
  • NB : utilisation de la version à jour (git), car j'ai eu un bug avec la vielle version svn non mise à jour (qui ne marchera peut-être plus ?). La nouvelle version s'utilise avec "pwb.py".
  • 30 pages modifiées.

Décembre 2013 modifier

Modèles désuets de code langue modifier

Il faudrait changer les modèles de Catégorie:Modèles de base de code langue vers Catégorie:Modèles désuets de code langue, en ajoutant une catégorie spéciale pour les repérer (Catégorie:Utilisations de modèles désuets de code langue) (màj : les modèles étant utilisés dans des liens, on ne peut pas catégoriser ainsi) et un bandeau {{modèle désuet de code langue}}.

fixes['old_lang_code'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : nom de langue avec {{nom langue}} + bandeau et catégorie de modèle obsolètes",
        },
        'replacements': [
                (u"^.+<noinclude>\[\[Catégorie:Modèles de base de code langue\|.+\]\]</noinclude>", u"{{nom langue|{{subst:PAGENAME}}}}<noinclude>{{modèle désuet de code langue}}</noinclude>"),
        ],
}
  • Commentaires : la majorité des pages sont sous le format décrit. Certaines autres sont écrites différemment (écrites et modifiées à la main). Je relancerais une version du script qui réécrit toute l’entrée, avec vérification manuelle systématique pour être sûr de ne pas effacer quelque chose d'important.
    • Certaines pages dans ce cas ont des interwikis (ajoutés à la main). Ceux-ci ne servent pas à grand-chose.
  • Certaines pages de code langue sont protégées, ce qui m’oblige à arrêter le bot, déprotéger la page et relancer le bot.
  • Fini (4496 changements) : il reste quelques pages à nettoyer à la main, soit parce qu’elles ont des infos à garder quelque part, soit parce que ce ne sont pas des codes de langue (à mettre ailleurs).

Modèles désuets de section de langue modifier

Il faudrait changer les modèles de Catégorie:Modèles de code langue (trompeuse) vers Catégorie:Modèles désuets de section de langue, en ajoutant une catégorie spéciale pour les repérer (Catégorie:Utilisations de modèles désuets de section de langue) et un bandeau {{modèle désuet de section de langue}}.

fixes['old_lang_section'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : utilisation des noms de langue depuis le module:langues/data + catégorie de modèle obsolètes",
        },
        'replacements': [
                (u"[\r\n.]*\{\{=langue=\|.*code=(.+?)[\}\|][\r\n.]*", r"{{langue|\1}}<includeonly>" + u"[[Catégorie:Utilisations de modèles désuets de section de langue|" + r"\1]]</includeonly><noinclude>\n{{" + u"modèle désuet de section de langue|" + r"\1}}</noinclude>"),
                (u"[\r\n.]*\{\{=langue=\|1=\{\{(.+?)\|type=Nom\}\}\}\}[\r\n.]*", r"{{langue|\1}}<includeonly>" + u"[[Catégorie:Utilisations de modèles désuets de section de langue|" + r"\1]]</includeonly><noinclude>\n{{" + u"modèle désuet de section de langue|" + r"\1}}</noinclude>"),
        ],
}
  • Fini : 2214 modèles changés. Il en reste une poignée avec un format moins standard, à trier à la main.

Nouveau modèle de section modifier

Préparation pour la conversion des modèles de section tels que proposé dans WT:Prise de décision/Rendre toutes les sections modifiables.

  • Liste : Toutes les pages de l’espace principal, estimé à plus de deux millions de pages
    • Cela va prendre au moins 2 mois.
    • Si on met plusieurs bots, ceux-ci pourront passer sur des parties différentes.
  • Script : replace.py -fix:sections_S
fixes['sections_S'] = {
	'regex' : True,
	'msg' : {
		'_default':u"Bot : nouveau modèle {{S}} remplaçant toutes les sections sauf les sections de langue (voir [[WT:Prise de décision/Rendre toutes les sections modifiables]])",
	},
	'replacements': [
		# Sections normales
		# À FAIRE
		
		# Sections de types de mots (le reste)
		(u"\{\{-(.+)-.+\}\}", r"=== {{S|\1}} ==="),

		# Remplacement des abréviations des types de mot
		(u"\{\{S\|(prov)\|", u"{{S|proverbe|"),
		(u"\{\{S\|(symb)\|", u"{{S|symbole|"),
		(u"\{\{S\|(adverbe int|adv int)\|", u"{{S|adverbe interrogatif|"),
		(u"\{\{S\|(préf|pref)\|", u"{{S|préfixe|"),
		(u"\{\{S\|(adjectif pos|adj pos|adj possessif)\|", u"{{S|adjectif possessif|"),
		(u"\{\{S\|(circon|circonf)\|", u"{{S|circonfixe|"),
		(u"\{\{S\|(sino|sinog)\|", u"{{S|sinogramme|"),
		(u"\{\{S\|(onoma|onom)\|", u"{{S|onomatopée|"),
		(u"\{\{S\|(faute d'orthographe|faute d’orthographe|faute)\|", u"{{S|erreur|"),
		(u"\{\{S\|(art indéfini|article indéf|art indéf)\|", u"{{S|article indéfini|"),
		(u"\{\{S\|(numér|num)\|", u"{{S|numéral|"),
		(u"\{\{S\|(nom science|nom sciences|nom scient)\|", u"{{S|nom scientifique|"),
		(u"\{\{S\|(class|classif)\|", u"{{S|classificateur|"),
		(u"\{\{S\|(interj)\|", u"{{S|interjection|"),
		(u"\{\{S\|(verb pr|verbe pr|verbe pronom)\|", u"{{S|verbe pronominal|"),
		(u"\{\{S\|(var typo|variante par contrainte typographique|variante typo)\|", u"{{S|variante typographique|"),
		(u"\{\{S\|(adjectif qualificatif|adj)\|", u"{{S|adjectif|"),
		(u"\{\{S\|(art défini|article déf|art déf)\|", u"{{S|article défini|"),
		(u"\{\{S\|(suf|suff)\|", u"{{S|suffixe|"),
		(u"\{\{S\|(loc-phr)\|", u"{{S|locution phrase|"),
		(u"\{\{S\|(loc)\|", u"{{S|locution|"),
		(u"\{\{S\|(pronom réfl|pronom réfléchi|pronom pers)\|", u"{{S|pronom personnel|"),
		(u"\{\{S\|(pronom rel)\|", u"{{S|pronom relatif|"),
		(u"\{\{S\|(post|postpos)\|", u"{{S|postposition|"),
		(u"\{\{S\|(pronom int|pronom inter)\|", u"{{S|pronom interrogatif|"),
		(u"\{\{S\|(quantif)\|", u"{{S|quantifieur|"),
		(u"\{\{S\|(rad)\|", u"{{S|radical|"),
		(u"\{\{S\|(part)\|", u"{{S|particule|"),
		(u"\{\{S\|(part num|part numérale|particule num)\|", u"{{S|particule numérale|"),
		(u"\{\{S\|(art part|art partitif|article part)\|", u"{{S|article partitif|"),
		(u"\{\{S\|(inf)\|", u"{{S|infixe|"),
		(u"\{\{S\|(conj)\|", u"{{S|conjonction|"),
		(u"\{\{S\|(nom fam)\|", u"{{S|nom de famille|"),
		(u"\{\{S\|(interf)\|", u"{{S|interfixe|"),
		(u"\{\{S\|(adverbe rel|adv rel)\|", u"{{S|adverbe relatif|"),
		(u"\{\{S\|(pronom dém)\|", u"{{S|pronom démonstratif|"),
		(u"\{\{S\|(adv pron|adv pr|adverbe pr|adv pronom)\|", u"{{S|adverbe pronominal|"),
		(u"\{\{S\|(adjectif dém|adj dém|adj démonstratif)\|", u"{{S|adjectif démonstratif|"),
		(u"\{\{S\|(verb)\|", u"{{S|verbe|"),
		(u"\{\{S\|(adj num|adj numéral|adjectif num)\|", u"{{S|adjectif numéral|"),
		(u"\{\{S\|(adj indéfini|adj indéf|adjectif indéf)\|", u"{{S|adjectif indéfini|"),
		(u"\{\{S\|(nom pr)\|", u"{{S|nom propre|"),
		(u"\{\{S\|(substantif|nom commun)\|", u"{{S|nom|"),
		(u"\{\{S\|(pronom pos)\|", u"{{S|pronom possessif|"),
		(u"\{\{S\|(pronom indéf)\|", u"{{S|pronom indéfini|"),
		(u"\{\{S\|(adj exclamatif|adj excl|adjectif excl)\|", u"{{S|adjectif exclamatif|"),
		(u"\{\{S\|(prép)\|", u"{{S|préposition|"),
		(u"\{\{S\|(aff)\|", u"{{S|affixe|"),
		(u"\{\{S\|(verb aux|aux|verbe auxiliaire|verbe aux)\|", u"{{S|auxiliaire|"),
		(u"\{\{S\|(conj coord|conjonction coord)\|", u"{{S|conjonction de coordination|"),
		(u"\{\{S\|(adj interrogatif|adj int|adjectif int)\|", u"{{S|adjectif interrogatif|"),
		(u"\{\{S\|(dét)\|", u"{{S|déterminant|"),
		(u"\{\{S\|(adv)\|", u"{{S|adverbe|"),
		(u"\{\{S\|(art)\|", u"{{S|article|"),
	],
}
  • Ceci n’est qu’un travail préparatoire.

Nouveau modèle de section modifier

Préparation pour la conversion des modèles de section tels que proposé dans WT:Prise de décision/Rendre toutes les sections modifiables. Voir planification Utilisateur:Darkdadaah/Planification/Migration modèle S.

  • Liste : Toutes les pages de l’espace principal, estimé à près de deux millions cinq cent mille pages
  • Script : replace.py -fix:sections_S -namespace:0 -start:! -log
  • La liste des remplacements est créée semi-automatiquement par Discussion module:section/analyse/test.

Code modifier

  • Note : le bot vérifie l’espacement entre les sections, mais dans les cas où seules les lignes sont modifiées, le bot ne fait pas de modification. Modification spéciale de replace.py :
461                 # Don't make changes if only cosmetic changes occurred (e.g. deleted or added empty lines)
462                 original_text_blank = re.sub(r'[ \s\r\n]+', '', original_text)
463                 new_text_blank = re.sub(r'[ \s\r\n]+', '', new_text)
464                 #pywikibot.output(original_text_blank)
465                 #pywikibot.output(new_text_blank)
466                 
467                 if new_text_blank == original_text_blank:
468                         pywikibot.output(u'No changes were necessary (only cosmetic) in %s'
469                                         % page.title(asLink=True))
470                         break

Jalons modifier

  • 2014-01-11 : Bot lancé. — Dakdada 11 janvier 2014 à 18:11 (UTC)
  • 2014-01-11 : Début A-Z
  • 2014-01-16 : Début a-z
  • 2014-01-21 : 500 000 articles (20%)
    • Vitesse de pointe : 55600 articles par jour
    • Estimation de fin : fin février à début mars 2014.
  • 2014-01-21 : 500 000 articles (20%)
  • 2014-01-30 : 1 000 000 d’articles (40%)
  • 2014-02-04 : interruption du bot en attendant une décision sur les locutions
  • 2014-02-05 : re-lancement du bot en excluant les pages de locution (contenant "{{-loc")
  • 2014-02-09 : 50% (1 mois)
  • 2014-02-10 : interruption pour mise à jour du code. Relance avec paramètre supplémentaire pour sauter les articles contenant une espace (à partir de patin).
  • 2014-02-13 - 2012-02-18 : verbes en re- (~200k articles)
  • 2014-03-03 : fin de l'alphabet latin
  • 2014-03-06 :
    • Correction du script qui ne sautait pas les articles pour les modifications "cosmétiques" avec l'option "-always"
    • Alphabet grec : Α à ϻ   (déjà fait majoritairement par JackBot)
    • Alphabet cyrillique : Ё à ԥ   (déjà fait majoritairement par JackBot)
      • Dont les 150 000 noms de familles russes (dont flexions)
  • 2014-03-08 :
  • 2014-03-08 : La passe générale est en fait terminée, puisque JackBot est déjà passé en partie sur les alphabets autres que latin. Il reste environ 15 000 pages utilisant un modèle {{-déf-}}, dont ~7000 en français, 3000 en anglais, etc.
  • Je vais maintenant passer le script sur les articles utilisant le modèle -déf- (fait aussi par JackBot)  
  • Il reste encore :
  • 100% estimé : courant mars 2014

Finition modifier

Tous les anciens modèles sont maintenant dans la catégorie Catégorie:Wiktionnaire:Utilisation d'anciens modèles de section.

Quelques remplacements :

fixes['sect_normales'] = {
        'regex' : True,
        'msg' : {
                '_default':u"Bot : Modèles de section -> sections normales",
        },   
         'replacements': [
                 (u" *\{\{\s*-n(otes?)-\s*\}\} *", r"==== N\1 ===="),
                 (u" *\{\{\s*-(réf|ref|références|references)-\s*\}\} *", u"=== Références ==="),
                 (u" *\{\{\s*-voir-\s*\}\} *", r"=== Voir aussi ==="),
        ],   
}
    • Liste 1 : -ref:-note- -namespace:14 (catégories)  
    • Liste 2 : -ref:-réf- -namespace:14 (catégories)  
    • Liste 3 : -ref:-voir- -namespace:14 (catégories)  
    • Liste 4 : -cat:Le saviez-vous (modèles)
    • Liste 5 : -cat:Projet de la semaine (modèles)
    • Liste 6 : -cat:Modèles des jours de la semaine
  • Modèle:catégorie rime est utilisé dans des centaines de catégories de rimes (vides) et contenait {{-voir-}}. Catégories à supprimer ?

Bot de ménage modifier

  • Je fais tourner le bot régulièrement depuis le tools labs depuis mars 2014, en utilisant le script de remplacement sections_S (voir plus haut).
  • Script relancé le 21 août 2014 après correction de la catégorie surveillée (renommée en Catégorie:Wiktionnaire:Utilisation d’anciens modèles de section en juin). — Dakdada 21 août 2014 à 20:36 (UTC)
  • Fréquence changée de 6h à 3h, puisque le nombre de lignes récupérables via l'api est de 500 maximum (6h est trop juste). — Dakdada 23 août 2014 à 13:15 (UTC)