Difference between revisions 14672679 and 14708474 on frwiktionary[[Catégorie:JackBot]] <source lang=python> #!/usr/bin/env python # coding: utf-8 ''' Ce script formate les pages du Wiktionnaire, tous les jours après minuit depuis le Toolserver : 1) Retire certains doublons de modèles et d'espaces. 2) Ajoute les clés de tris, prononciations vides, et certains liens vers les conjugaisons. (contracted; show full)Modele[810] = u'planche à neige' Modele[811] = u'planche à roulettes' Modele[812] = u'volcanologie' Modele[813] = u'infographie' Modele[814] = u'football américain' Modele[815] = u'football canadien' Modele[816] = u'geog' # à remplacer ? ⏎ limit4 = 817 # ébauches Modele[817] = u'Modele[817] = u'scolaire' limit4 = 818 # ébauche-syn's Modele[818] = u'ébauche-étym-nom-scientifique' Modele[819] = u'ébauche-trans' Modele[820] = u'ébauche-déf' Modele[821] = u'ébauche-étym' Modele[822] = u'ébauche-pron' Modele[823] = u'ébauche' Modele[824] = u'ébauche-exe' Modele[825] = u'ébauche-pron' Modele[826] = u'ébauche-syn'⏎ ''' # non traités Modele[] = u'spécialement' Modele[] = u'T' Modele[] = u'région' Modele[] = u'régio' Modele[] = u'régional' ''' # Modèles régionaux, pb du nocat pour les prononciations limit5 = 8267 Modele[827] = u'Écosse' Modele[828] = u'Espagne' Modele[829] = u'États-Unis' Modele[830] = u'Europe' Modele[831] = u'France' Modele[832] = u'Franche-Comté' Modele[833] = u'Gascogne' (contracted; show full) while PageTemp.find(u'\n{{trad-milieu}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n{{trad-milieu}}')] + PageTemp[PageTemp.find(u'\n{{trad-milieu}}')+len(u'\n{{trad-milieu}}'):len(PageTemp)] while PageTemp.find(u'-ortho-alt-') != -1: PageTemp = PageTemp[0:PageTemp.find(u'-ortho-alt-')] + u'-var-ortho-' + PageTemp[PageTemp.find(u'-ortho-alt-')+len(u'-ortho-alt-'):len(PageTemp)] while PageTemp.find(u'|notat=1') != -1: PageTemp = PageTemp[0:PageTemp.find(u'|notat=1')] + u'|nocat=1' + PageTemp[PageTemp.find(u'|notat=1')+len(u'|notat=1'):len(PageTemp)]⏎ LimiteReg = 13 ModRegion = range(1, LimiteReg) ModRegion[1] = u'AU' ModRegion[2] = u'AR' ModRegion[3] = u'AT' ModRegion[4] = u'BE' ModRegion[5] = u'BR' (contracted; show full) #print(PageEnd.encode(config.console_encoding, 'replace')) #print(PageTemp.encode(config.console_encoding, 'replace')) PageTemp = PageEnd + PageTemp PageEnd = u''""" # Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres) if debogage == True: print u'Anagrammes' if debogage == False and socket.gethostname() != "willow" and socket.gethostname() != "yarrow" and socket.gethostname() != "nightshade" and PageHS != u'six' and PageTemp.find(u'-erreur-') == -1: if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and PageTemp.find(u'{{langue|fr}}') != -1 and len(PageHS) < 7: # sinon trop long ( > 1 h par page) #print socket.gethostname() anagrammes = anagram(PageHS) (contracted; show full) summary = summary + ', {{=' + codelangue + u'=}} -> {{langue|' + codelangue + u'}}' position = PageTemp.find("{{") elif position == PageTemp.find(u'{{langue|'): #print (PageEnd.encode(config.console_encoding, 'replace')[0:1000]) #raw_input (PageTemp[0:position].encode(config.console_encoding, 'replace')) PageTemp2 = PageTemp[position+len(u'{{langue|'): len(PageTemp)] if PageTemp2.find("}}") < PageTemp2.find("|") or PageTemp2.find("|") == -1: if PageTemp.find(u'{{langue|') < PageTemp.find("u'}}"'): if debogage == True: print u'Nouveau code langue simple'⏎ codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find("}}")] EstCodeLangue = u'true' else: PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] codelangueif debogage == True: print u'Nouveau code langue après fin de modèle(s) (imbriqués)' PageTemp2 = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'}}')+2+] codelangue = PageTemp2[:PageTemp2.find(u'}}')] EstCodeLangue = u'true' else: if debogage == True: print u'Nouveau code langue multi-paramètres'⏎ codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'{{langue|')+len(u'{{langue|')+PageTemp2.find("}}")] EstCodeLangue = u'true' position = PageTemp.find("{{") if debogage == True: print u'Nouveau code langue trouvé : ' + codelangue⏎ elif position == PageTemp.find(u'{{langue}}'): # Recherche d'un codelangue à préciser PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] PageTemp2 = PageTemp[PageTemp.find(u'{{')+2:len(PageTemp)] PageTemp2 = PageTemp[0:PageTemp.find(u'}}')] if PageTemp2.find("|") != -1: codelangue = PageTemp2[PageTemp2.find("|")+1:len(PageTemp2)] EstCodeLangue = u'true' PageTemp = PageTemp[0:PageTemp.find(u'{{langue}}')] + u'{{langue|' + codelangue + u'}}' + PageTemp[PageTemp.find(u'{{langue}}')+len(u'{{langue}}'):len(PageTemp)] position = PageTemp.find("{{") ⏎ ⏎ position = position + 2 PageEnd = PageEnd + PageTemp[0:position] # Transfert vers la page finale de l'article jusqu'au modèle en traitement exclu PageTemp = PageTemp[position:len(PageTemp)] # Modèles imbriqués (à sauter) while PageTemp.find(u'{{') < PageTemp.find(u'}}') and PageTemp.find(u'{{') != -1 and PageTemp.find(u'}}') != -1: if debogage == True: print u'Modèle inclu dans ' + PageTemp[0:PageTemp.find("}}")] PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] # ParamètresFin du nom du modèle if PageTemp.find("|") > PageTemp.find("}}"): position = PageTemp.find("}}") elif PageTemp.find("|") == -1: position = PageTemp.find("}}") else: position = PageTemp.find("|") (contracted; show full) #print (PageEnd.encode(config.console_encoding, 'replace')[0:1000]) #print (PageTemp[0:position].encode(config.console_encoding, 'replace')) # Comparaison avec chaque modèle connu dans Modele[p], pour identifier le traitement à effectuer for p in range(1,limit6): if Modele[p] == PageTemp[0:position]: if debogage == True: print (Modele[p].encode(config.console_encoding, 'replace')) ⏎ # Modèles imbriqués (à sauter) while PageTemp.find(u'{{') < PageTemp.find(u'}}') and PageTemp.find(u'{{') != -1 and PageTemp.find(u'}}') != -1: if debogage == True: print u'Modèle inclu dans ' print PageTemp[:PageTemp.find(u'}}')].encode(config.console_encoding, 'replace') PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] # Fin du nom du modèle if PageTemp.find("|") > PageTemp.find("}}"): position = PageTemp.find("}}") elif PageTemp.find("|") == -1: position = PageTemp.find("}}") else: position = PageTemp.find("|") if position == -1: if debogage == True: print u'Erreur ligne 2271 : modèle brisé' return⏎ ⏎ # Si on est dans un modèle spécial, le traiter, sinon par catégorie de génériques if not codelangue and (p < limit1 or p >= limit3) and Modele[p] != u'ébauche': # pb -nom-|fro}} # '''hazard''' {{pron||fro}} {{m}} # # {{variante de|hazart|fro}}.⏎ PageEnd = u'{{formater|Code langue manquant dans ' + Modele[p] + u' après le caractère ' + str(len(PageEnd)) + u'}}\n' + PageBegin summary = u'Page à formater manuellement' sauvegarde(page, PageEnd, summary) return if Modele[p] == u'term' or Modele[p] == u'terme' or Modele[p] == u'term_lien' or Modele[p] == u'régio' or Modele[p] == u'région': ModeleT = PageTemp[PageTemp.find("|")+1:PageTemp.find("}}")] for p2 in range(1,limit6): if Modele[p2] == ModeleT or Modele[p2] == ModeleT[0:1].lower() + ModeleT[1:len(ModeleT)]: if EstCodeLangue == "false": (contracted; show full) break else: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] break elif Modele[p] == u'pron-rég': #raw_input(PageTemp.encode(config.console_encoding, 'replace'))⏎ PageTemp2 = PageTemp[position+1:len(PageTemp)] ⏎ ⏎ # Saut des modèles régionnaux if PageTemp2.find("lang=") == -1 or PageTemp2.find("lang=") > PageTemp2.find("}}"): while PageTemp2.find(u'{{') < PageTemp2.find(u'}}') and PageTemp2.find(u'{{') != -1: PageTemp2 = PageTemp2[PageTemp2.find(u'}}')+2:] if PageTemp2.find("lang=") == -1 or PageTemp2.find("lang=") > PageTemp2.find("}}"): (contracted; show full) PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] break elif Modele[p] == u'-trad-': EstCodeLangue = u'false' trad = u'true' PageEnd = PageEnd + Modele[p] + u'}}' PageTemp = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] # Ajout de {{trad-début}} if PageTemp.find(u'{{') == PageTemp.find(u'{{T|'): PageTemp = u'\n{{trad-début}}' + PageTemp PageTemp2 = PageTemp[PageTemp.find(u'{{trad-début}}\n')+len(u'{{trad-début}}\n'):] while PageTemp2.find(u'{{T|') < PageTemp2.find(u'\n') and PageTemp2.find(u'{{T|') != -1: PageTemp2 = PageTemp2[PageTemp2.find(u'\n')+1:] PageTemp = PageTemp[:len(PageTemp)-len(PageTemp2)] + u'{{trad-fin}}\n' + PageTemp[len(PageTemp)-len(PageTemp2):]⏎ break elif Modele[p] == u'trad' or Modele[p] == u'trad+' or Modele[p] == u'trad-' or Modele[p] == u'trad--': # Lettres spéciales à remplacer dans les traductions vers certaines langues if debogage == True: print u'Test des traductions' PageTemp2 = PageTemp[position+1:len(PageTemp)] if PageTemp2[0:PageTemp2.find(u'|')] == u'ro' or PageTemp2[0:PageTemp2.find(u'|')] == u'mo': (contracted; show full) if TitreTemp != PageHS: TitreTemp = CleDeTri(TitreTemp) PageTemp = PageTemp[0:PageTemp.find(u'}}')] + u'|clé=' + TitreTemp + PageTemp[PageTemp.find(u'}}'):len(PageTemp)] PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] elif p < limit2: # Paragraphe sans code langue if debogage == True: print "limit2"⏎ EstCodeLangue = "false" trad = u'false' PageEnd = PageEnd + PageTemp[0:position] + "}}" elif p < limit25: # Paragraphe sans code langue contenant un texte if debogage == True: print "limit25"⏎ EstCodeLangue = "false" trad = u'false' if PageTemp.find(u'}}') > PageTemp.find(u'{{') and PageTemp.find(u'{{') != -1: PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2:len(PageTemp)] break else: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] elif p < limit3: if debogage == True: print "limit3"⏎ if debogage == True: print u'Modèle sans paramètre' PageEnd = PageEnd + PageTemp[0:position] + "}}" elif p < limit4: if debogage == True: print "limit4"⏎ if debogage == True: print u'Paragraphe potentiellement avec code langue' if EstCodeLangue == "true": if debogage == True: print u'avec' PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: if debogage == True: print u'sans' PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" elif p < limit5: if debogage == True: print "limit5"⏎ if debogage == True: print u'ébauche : catégorisée quel que soit EstCodeLangue' if codelangue: PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: if debogage == True: print u'Paragraphe régional : non catégorisé dans la prononciation' if PageEnd.rfind(u'{{') != -1: PageEnd2 = PageEnd[0:PageEnd.rfind(u'{{')] if EstCodeLangue == "true" and (PageEnd2.rfind(u'{{') != PageEnd2.rfind(u'{{pron|') or PageEnd.rfind(u'{{pron|') < PageEnd.rfind(u'\n') or PageEnd2.rfind(u'{{pron|') == -1) and ((PageTemp.find(u'{{') != PageTemp.find(u'{{pron|') or PageTemp.find(u'{{pron|') > PageTemp.find(u'\n')) or PageTemp.find(u'{{pron|') == -1): PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" if position == PageTemp.find("|"): position = PageTemp.find("}}") PageTemp = PageTemp[position+2:len(PageTemp)] ⏎ ⏎ ⏎ ⏎ elif (PageTemp[0:position] == u'-flex-verb-' or PageTemp[0:position] == u'-flex-verbe-') and codelangue == u'fr': if debogage == True: print u'Flexion de verbe' if PageTemp.find(u'fr-verbe-flexion') != -1: Infinitif = PageTemp[PageTemp.find(u'[[')+2:PageTemp.find(u']]')] if Infinitif == u'verbe': (contracted; show full) except pywikibot.EditConflict: return if PageTemp != u"{{/Stop}}": pywikibot.output (u"\n*** \03{lightyellow}Arrêt d'urgence demandé\03{default} ***") exit(0) def sauvegarde(PageCourante, Contenu, summary): result = "ok" #if debogage == True:⏎ print(Contenu[:len(Contenu)-2000:].encode(config.console_encoding, 'replace')) #[len(Contenu)-2000:len(Contenu)]) # #⏎ ⏎ result = raw_input("Sauvegarder ? (o/n) ") if result != "n" and result != "no" and result != "non": if PageCourante.title().find(u'Utilisateur:JackBot/') == -1: ArretDUrgence() if not summary: summary = u'[[Wiktionnaire:Structure des articles|Autoformatage]]' try: PageCourante.put(Contenu, summary) except wikipedia.NoPage: print "NoPage en sauvegarde" (contracted; show full) TraitementLiens = crawlerLink(u'Modèle:femin',u'') TraitementLiens = crawlerLink(u'Modèle:sing',u'') TraitementLiens = crawlerLink(u'Modèle:plur',u'') TraitementLiens = crawlerLink(u'Modèle:pluri',u'') TraitementLiens = crawlerLink(u'Modèle:=langue=',u'') TraitementLiens = crawlerLink(u'Modèle:trad-',u'') ''' ⏎ ⏎ # Modèles TraitementFile = crawlerFile('articles_list.txt') TraitementPage = modification(u'Utilisateur:JackBot/test') TraitementLiens = crawlerLink(u'Modèle:terme',u'') TraitementLiens = crawlerLink(u'Modèle:R:DAF8',u'') TraitementLiens = crawlerLink(u'Modèle:Import:DAF8',u'') TraitementLiensCategorie = crawlerCatLink(u'Modèles de code langue',u'') TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects',True) TraitementRecherche = crawlerSearch(u'clé de tri') TraitementUtilisateur = crawlerUser(u'Utilisateur:JackBot') TraitementRedirections = crawlerRedirects() TraitementTout = crawlerAll(u'') while 1: TraitementRC = crawlerRC() ''' </source> All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://fr.wiktionary.org/w/index.php?diff=prev&oldid=14708474.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|