Aller au contenu

Utilisateur:Daahbot/Historique/2013

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Février 2013

[modifier le wikicode]

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

Anciens modèles de prononciation 1

[modifier le wikicode]

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 le wikicode]

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

Catégorie et id dans term

[modifier le wikicode]

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 le wikicode]

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|"),
        ]
}

Modèle T fait 

[modifier le wikicode]

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

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 fait

[modifier le wikicode]

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 le wikicode]

Modèles désuets de code langue

[modifier le wikicode]

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 le wikicode]

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 le wikicode]

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.