Difference between revisions 10906141 and 10984384 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. # 2) Ajoute les clés de tris, prononciations vides, et certains liens vers les conjugaisons. (contracted; show full) else: try: PageBegin = page.get() except wikipedia.NoPage: return except wikipedia.IsRedirectPage: return except wikipedia.LockedPage: return else: print "NoPage"⏎ return PageTemp = PageBegin if PageTemp.find(u'{{formater') != -1 or PageTemp.find(u'{{supp') != -1: return # Traductions des modèles des autres Wiktionnaires for p in range(1,LimitTemplate): while PageTemp.find(Template[p]) != -1: PageTemp = PageTemp[0:PageTemp.find(Template[p])] + TemplateFR[p] + PageTemp[PageTemp.find(Template[p])+len(Template[p]):len(PageTemp)] # Ajout des {{voir}} if PageTemp.find(u'{{voir|') == -1 and PageTemp.find(u'{{voir/') == -1: (contracted; show full) # Nettoyage if PageTemp.find(u'{{voir}}\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}\n')] + PageTemp[PageTemp.find(u'{{voir}}\n')+len(u'{{voir}}\n'):len(PageTemp)] if PageTemp.find(u'{{voir}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}')] + PageTemp[PageTemp.find(u'{{voir}}')+len(u'{{voir}}'):len(PageTemp)] if (PageTemp.find(u'{{vérifier') != -1 and (PageTemp.find(u'{{vérifier') < PageTemp.find(u'{{=') and PageTemp.find(u'{{=') != -1) or PageTemp.find(u'{{vérifier') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1) or PageTemp.find(u'{{PàS') != -1: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'==')-1] PageTemp = PageTemp[PageTemp.find(u'==')-1:len(PageTemp)] # Clés de tri if PageTemp.find(u'{{clé de tri}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri}}')] + PageTemp[PageTemp.find(u'{{clé de tri}}')+len(u'{{clé de tri}}'):len(PageTemp)] if PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')] + PageTemp[PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}')+len(u'{{clé de tri|' + PageHS.lower() + u'}}'):len(PageTemp)] if PageTemp.find(u'{{clé de tri') == -1: ClePage = CleDeTri(PageHS) if ClePage != u'' and ClePage != PageHS: if PageTemp.find(u'[[Catégorie:') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Catégorie:'):len(PageTemp)] elif PageTemp.find(u'[[Category:') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[[Category:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Category:'):len(PageTemp)] else: # Avant interwikis if re.compile('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]').search(PageTemp): try: i1 = re.search('\[\[[a-z][^wsq]+:[^\[\]\n]+\]\]',PageTemp).start() PageTemp = PageTemp[:i1regex = ur'\[\[(.+?)(?:\]\]\n)' if re.compile(regex).search(PageTemp): try: PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{clé de tri|' + ClePage + u'}}\n\n' + PageTemp[i1:re.search(regex,PageTemp).end():len(PageTemp)] except: print u'pb regex interwiki' else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' else: PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri'):len(PageTemp)] ClePage = PageTemp2[PageTemp2.find(u'|')+1:PageTemp2.find(u'}}')] (contracted; show full) while PageTemp.find(u'{{-}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{-}}')] + PageTemp[PageTemp.find(u'{{-}}')+len(u'{{-}}'):len(PageTemp)] 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'\n{{colonnes|') != -1: PageTemp2 = PageTemp[0:PageTemp.find(u'\n{{colonnes|')] if PageTemp2.rfind(u'{{') != -1 and PageTemp2.rfind(u'{{') == PageTemp2.rfind(u'{{trad-début'): # modèles impriqués dans trad PageTemp2 = PageTemp[PageTemp.find(u'\n{{colonnes|')+len(u'\n{{colonnes|'):len(PageTemp)] if PageTemp2.find(u'\n}}\n') != -1: (contracted; show full) while PageTemp.find(u'{{Annexe|Couleurs en français}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{Annexe|Couleurs en français}}')] + u'{{Thésaurus|fr|couleur}}' + PageTemp[PageTemp.find(u'{{Annexe|Couleurs en français}}')+len(u'{{Annexe|Couleurs en français}}'):len(PageTemp)] ⏎ ⏎ PageTemp = PageEnd + PageTemp PageEnd = u'' # Classement des traductions while PageTemp.find(u'{{T|') != -1: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{T|')] PageTemp = PageTemp[PageTemp.find(u'{{T|'):len(PageTemp)] # Rangement de la ligne de la traduction par ordre alphabétique de la langue dans PageEnd (contracted; show full)' + PageTemp[PageTemp.find(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')+len(u'({{p}} : \'\'\'' + PageHS + u's\'\'\', {{f}} : \'\'\'' + PageHS + u'te]], {{fplur}} : \'\'\'' + PageHS + u'tes]])')+1:len(PageTemp)] ''' BAnagrammes beaucoup trop long ( > 1 h par page) # Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres) if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and PageTemp.find(u'{{=fr=}}') != -1: anagrammes = anagram(PageHS) ListeAnagrammes = u'' for anagramme in anagrammes: print anagramme pageAnagr = Page(site,anagramme) (contracted; show full) EstCodeLangue = "true" elif PageTemp.find(u'{{-car-') != -1: if PageTemp.find(u'{{-car-') < PageTemp.find("{{=") or PageTemp.find("{{=") == -1: codelangue = u'conv' elif position == PageTemp.find("{{="): codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("=}}")] EstCodeLangue = "true" elif position == PageTemp.find( "u'{{="'): PageTemp2 = PageTemp[position+3:len(PageTemp)] if PageTemp2.find("}}") < PageTemp2.find("|") or PageTemp2.find("|") == -1: if PageTemp.find("{{=") < PageTemp.find("=}}"): codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("=}}")] else: PageTemp2 = PageTemp[PageTemp.find(u'=}}')+3:len(PageTemp)] codelangue = PageTemp[PageTemp.find(u'{{=')+3:PageTemp.find(u'=}}')+3+PageTemp2.find(u'=}}')] else: codelangue = PageTemp[PageTemp.find("{{=")+3:PageTemp.find("{{=")+3+PageTemp2.find("=|")] position = PageTemp.find("}}") PageTemp2 = PageTemp[PageTemp.find(u'=}}')+3:len(PageTemp)] if len(PageHS) == 1 and (codelangue == u'zh' or codelangue == u'ja' or codelangue == u'ko-hanja' or codelangue == u'vi-chunho') and (PageTemp2.find(u'{{-') == -1 or (PageTemp2.find(u'{{-') > PageTemp2.find(u'{{=') and PageTemp2.find(u'{{=') != -1) or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-réf-') or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-pron-') or PageTemp2.find(u'{{-') == PageTemp2.find(u'{{-drv-')): PageTemp = PageTemp[0:PageTemp.find(u'==\n')+3] + u'{{-sinogramme-|' + codelangue + u'}}\n\'\'\'{{subst:PAGENAME}}\'\'\'\n\n' + PageTemp[PageTemp.find(u'==\n')+3:len(PageTemp)]elif position == PageTemp.find(u'{{langue|'): PageTemp2 = PageTemp[position+len(u'{{langue|'):len(PageTemp)] if PageTemp2.find("}}") < PageTemp2.find("|") or PageTemp2.find("|") == -1: if PageTemp.find(u'{{langue|') < PageTemp.find("}}"): codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find("}}")] else: PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')] else: codelangue = PageTemp[PageTemp.find(u'{{langue|')+len(u'{{langue|'):PageTemp.find(u'{{langue|')+len(u'{{langue|')+PageTemp2.find("}}")] position = PageTemp.find("}}") 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)] 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)] if PageTemp.find(" }}") < PageTemp.find("}}") and PageTemp.find(" }}") != -1 : # Détermination du caractère délimitant la fin du nom du modèle PageTemp = PageTemp[0:PageTemp.find(" }}")] + PageTemp[PageTemp.find(" }}")+1:len(PageTemp)] (contracted; show full) if PageTemp2.find(u'|') < PageTemp2.find(u'}}') and PageTemp2.find(u'|') != -1: if PageTemp2[0:PageTemp2.find(u'|')] == PageHS: PageTemp = PageTemp[0:position] + PageTemp[position+1+PageTemp2.find(u'|'):len(PageTemp)] else: if PageTemp2[0:PageTemp2.find(u'}}')] == PageHS: PageTemp = PageTemp[0:position] + PageTemp[position+1+PageTemp2.find(u'}}'):len(PageTemp)] #raw_input(PageEnd.encode(config.console_encoding, 'replace')[0:1000]) # Comparaison avec chaque modèle connu for p in range(1,limit5): if Modele[p] == PageTemp[0:position]: #print(Modele[p].encode(config.console_encoding, 'replace')) #raw_input(codelangue) # Modèles spéciaux (contracted; show full) if EstCodeLangue == "true": PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: if PageEnd.rfind(u'{{') != -1: PageEnd2 = PageEnd[0:PageEnd.rfind(u'{{')] if EstCodeLangue == "true" and PageTemp.find(u'{{') != PageTemp.find(u'{{pron|') and PageEnd2.rfind(u'{{') != PageEnd2.rfind(u'{{pron|'(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': (contracted; show full) if PageTemp != u"{{/Stop}}": pywikibot.output (u"\n*** \03{lightyellow}Arrêt d'urgence demandé\03{default} ***") exit(0) def sauvegarde(PageCourante, Contenu): ArretDUrgence() result = "ok" #print(Contenu.encode(config.console_encoding, 'replace')[0:4000]) #[len(Contenu)-2000:len(Contenu)]) # #result = raw_input("Sauvegarder ? (o/n)") if result != "n" and result != "no" and result != "non": try: PageCourante.put(Contenu, summary) except wikipedia.NoPage: return except wikipedia.IsRedirectPage: return except wikipedia.LockedPage: return except pywikibot.EditConflict: return except wikipedia.ServerError: return except wikipedia.BadTitle: return # Lancement TraitementLiens = crawlerLink(u'Modèle:trad-début',u'putréfaction') TraitementLiens = crawlerLink(u'Modèle:(',u'') TraitementLiens = crawlerLink(u'Modèle:-flex-nom-',u'') TraitementLiens = crawlerLink(u'Modèle:clé de tri',u'') '''⏎ TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Codes langue manquants',True,u'') TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Flexions à vérifier',True,u'') TraitementLiens = crawlerLink(u'Modèle:1ergroupe',u'') TraitementLiens = crawlerLink(u'Modèle:2egroupe',u'') TraitementLiens = crawlerLink(u'Modèle:3egroupe',u'') TraitementLiens = crawlerLink(u'Modèle:trad',u'') TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'') ''' TraitementLiens = crawlerLink(u'Modèle:région',u'') TraitementLiens = crawlerLink(u'Modèle:terme',u'') TraitementLiens = crawlerLink(u'Modèle:trad-début',u'alléger') TraitementLiens = crawlerLink(u'Modèle:(',u'') TraitementLiens = crawlerLink(u'Modèle:-flex-nom-',u'') TraitementLiens = crawlerLink(u'Modèle:clé de tri',u'') TraitementPage = modification(u'Utilisateur:JackBot/test') TraitementUtilisateur = crawlerUser(u'User:JackBot') TraitementFichier = crawlerFile('articles_listed.tx⏎ TraitementPage = modification(u'Utilisateur:JackBot/test') TraitementFichier = crawlerFile('articles_list.txt') TraitementUtilisateur = crawlerUser(u'User:JackBot') TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects',True) TraitementRecherche = crawlerSearch(u'chinois') TraitementUtilisateur = crawlerUser(u'Utilisateur:JackBot') 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=10984384.
![]() ![]() 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.
|