Difference between revisions 15131754 and 15148305 on frwiktionary[[Catégorie:JackBot|{{SUBPAGENAME}}]] <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) page = Page(site,PageHS.replace(u'’', u'\'')) if not page.exists(): if debogage == True: print u'Création d\'une redirection apostrophe' sauvegarde(page, u'#REDIRECT[[' + PageHS + ']]', u'Redirection pour apostrophe') page = Page(site,PageHS) if page.exists(): if page.namespace() !=0 and page.namespace() != 100 and page.namespace() != 14 and PageHS != .find(u'Utilisateur:JackBot/test':') == -1: print u'Page non traitée' return else: try: PageBegin = page.get() except wikipedia.NoPage: print "NoPage l 1113" return except wikipedia.LockedPage: print "Locked l 1116" return except wikipedia.IsRedirectPage: PageBegin = page.get(get_redirect=True) TxtTmp = u'<!--\n Redirection créée par le robot User:DaftBot.\n La création automatique de la page ciblée est prévue prochainement.\n-->' if PageBegin.find(TxtTmp) != -1: summary = u'[[Catégorie:Redirections à remplacer]]' PageBegin = PageBegin[0:PageBegin.find(TxtTmp)] + summary + PageBegin[PageBegin.find(TxtTmp)+len(TxtTmp):len(PageBegin)] sauvegarde(page, PageBegin, summary) else: print "IsRedirect l 1119" return else: print "NoPage l 1118" return PageTemp = PageBegin CleTri = CleDeTri.CleDeTri(PageHS) # if debogage == True: print u'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)] if page.namespace() == 0 or PageHS == .find(u'Utilisateur:JackBot/test'') != -1: while PageTemp.find(u'{{ ') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{ ')+2] + PageTemp[PageTemp.find(u'{{ ')+3:len(PageTemp)] if PageTemp.find(u'{{formater') != -1 or PageTemp.find(u'{{SI') != -1 or PageTemp.find(u'{{supp|') != -1 or PageTemp.find(u'{{supp}}') != -1 or PageTemp.find(u'{{supprimer|') != -1 or PageTemp.find(u'{{supprimer}}') != -1 or PageTemp.find(u'{{supprimer ') != -1 or PageTemp.find(u'-erreur-') != -1 or PageTemp.find(u'-faute-') != -1: print "Page en travaux : non traitée" return # if debogage == True: print u'Ajout des {{voir}}' if PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}')+len(u'{{voir|')] + PageHS[0:1].lower() + PageHS[1:len(PageHS)] + PageTemp[PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}')+len(u'{{voir|{{lc:{{PAGENAME}}}}'):len(PageTemp)] summary = summary + u', subst de {{lc:{{PAGENAME}}}}' if PageTemp.find(u'{{voir|{{ucfirst:{{PAGENAME}}}}}}') != -1: (contracted; show full) if PagesCleTotal.find(CleTri) == -1: PagesCleTotal = PagesCleTotal + u'|' + CleTri # exception ? and PageTemp.find(u'{{langue|eo}}') == -1 # Filtre des pages de la liste "à voir" PagesCleRestant = PagesCleTotal + u'|' PagesCleTotal = u'' PagesVoir = u'' while PagesCleRestant != u'':if debogage == True: print u' Recherche des clés...' while PagesCleRestant != u'': if debogageLent == True: print PagesCleRestant.encode(config.console_encoding, 'replace') HS = u'False' PageCourante = PagesCleRestant[0:PagesCleRestant.find(u'|')] PagesCleRestant = PagesCleRestant[PagesCleRestant.find(u'|')+1:len(PagesCleRestant)] PageCle = Page(site,PageCourante) try: PageTempCle = PageCle.get() except wikipedia.NoPage: HS = u'True' except wikipedia.IsRedirectPage: HS = u'True' if HS == u'False': if PagesCleTotal.find(PageCourante) == -1: PagesCleTotal = PagesCleTotal + u'|' + PageCourante if PageTempCle.find(u'{{voir|') != -1: PageTempCle2 = PageTempCle[PageTempCle.find(u'{{voir|')+len(u'{{voir|'):len(PageTempCle)] PagesVoir = PagesVoir + u'|' + PageTempCle2[0:PageTempCle2.find(u'}}')] elif PageTempCle.find(u'{{voir/') != -1: PageTempCle2 = PageTempCle[PageTempCle.find(u'{{voir/')+len(u'{{voir/'):len(PageTempCle)] PageTemp = u'{{voir/' + PageTempCle2[0:PageTempCle2.find(u'}}')+3] + PageTemp pageMod = Page(site,u'Modèle:voir/' + PageTempCle2[0:PageTempCle2.find(u'}}')]) try: PageTempModBegin = pageMod.get() except wikipedia.NoPage: print u'no page'⏎ break except wikipedia.IsRedirectPage: print "Redirect page" break except wikipedia.LockedPage: print "Locked/protected page" break PageTempMod = PageTempModBegin if PageTempMod.find(PageHS) == -1: PageTempMod = PageTempMod[0:PageTempMod.find(u'}}')] + u'|' + PageHS + PageTempMod[PageTempMod.find(u'}}'):len(PageTempMod)] if PageTempMod.find(PageVoir) == -1: PageTempMod = PageTempMod[0:PageTempMod.find(u'}}')] + u'|' + PageVoir + PageTempMod[PageTempMod.find(u'}}'):len(PageTempMod)] if PageTempMod != PageTempModBegin: sauvegarde(pageMod,PageTempMod, summary) PagesCleRestant = u'' break #if debogage == True: print u'PagesCleRestant vide' break if debogage == True: print u' Filtre des doublons...' if PagesVoir != u'': PagesVoir = PagesVoir + u'|' while PagesVoir.find(u'|') != -1: if PagesCleTotal.find(PagesVoir[0:PagesVoir.find(u'|')]) == -1: PagesCleTotal = PagesCleTotal + u'|' + PagesVoir[0:PagesVoir.find(u'|')] PagesVoir = PagesVoir[PagesVoir.find(u'|')+1:len(PagesVoir)] #raw_input(PagesCleTotal.encode(config.console_encoding, 'replace')) #if debogage == True: print u' Balayage de toutes les pages "à voir"...' if PagesCleTotal != u'': while PagesCleTotal[0:1] == u'|': PagesCleTotal = PagesCleTotal[1:len(PagesCleTotal)] if PagesCleTotal != PageHS: if debogage == True: print u' Différent de la page courante'⏎ PagesCleRestant = PagesCleTotal + u'|' while PagesCleRestant.find(u'|') != -1: HS = u'False' PageCourante = PagesCleRestant[0:PagesCleRestant.find(u'|')] if PageCourante == u'': ⏎ if debogage == True: print u'PageCourante vide'⏎ break PagesCleRestant = PagesCleRestant[PagesCleRestant.find(u'|')+1:len(PagesCleRestant)] PageCle = Page(site,PageCourante) try: PageTempCleBegin = PageCle.get() except wikipedia.NoPage: HS = u'True' except wikipedia.IsRedirectPage: (contracted; show full) PageTempCle = PageTempCle[0:PageTempCle.find(u'{{voir|')+len(u'{{voir|')] + PagesCleTotal[len(PageCourante):len(PagesCleTotal)] + PageTempCle[PageTempCle.find(u'{{voir|')+len(u'{{voir')+PageTempCle2.find(u'}}'):len(PageTempCle)] if PageTempCle != PageTempCleBegin: if PageCourante == PageHS: PageTemp = PageTempCle else: if debogage == True: print u'Première sauvegarde dédiée à {{voir}}'⏎ sauvegarde(PageCle,PageTempCle, summary) else: if PagesCleTotal.find(u'|' + PageCourante) != -1: PageTempCle = u'{{voir|' + PagesCleTotal[0:PagesCleTotal.find(u'|' + PageCourante)] + PagesCleTotal[PagesCleTotal.find(u'|' + PageCourante)+len(u'|' + PageCourante):len(PagesCleTotal)] + u'}}\n' + PageTempCle else: # Cas du premier PageTempCle = u'{{voir' + PagesCleTotal[len(PageCourante):len(PagesCleTotal)] + u'}}\n' + PageTempCle if PageCourante == PageHS: PageTemp = PageTempCle else: sauvegarde(PageCle,PageTempCle, summary) elif PageTemp.find(u'{{voir|') != -1: if debogage == True: print u' Identique à la page courante'⏎ PageTemp2 = PageTemp[PageTemp.find(u'{{voir|'):len(PageTemp)] if PageTemp2.find(u'|' + PageHS + u'|') != -1 and PageTemp2.find(u'|' + PageHS + u'|') < PageTemp2.find(u'}}'): PageTemp = PageTemp[0:PageTemp.find(u'{{voir|') + PageTemp2.find(u'|' + PageHS + u'|')] + PageTemp[PageTemp.find(u'{{voir|') + PageTemp2.find(u'|' + PageHS + u'|')+len(u'|' + PageHS):len(PageTemp)] if PageTemp2.find(u'|' + PageHS + u'}') != -1 and PageTemp2.find(u'|' + PageHS + u'}') < PageTemp2.find(u'}}'): PageTemp = PageTemp[0:PageTemp.find(u'{{voir|') + PageTemp2.find(u'|' + PageHS + u'}')] + PageTemp[PageTemp.find(u'{{voir|') + PageTemp2.find(u'|' + PageHS + u'}')+len(u'|' + PageHS):len(PageTemp)] if PageTemp.find(u'{{voir|') != -1 and PageTemp.find(u'{{voir/') != -1: PageTemp2 = PageTemp[PageTemp.find(u'{{voir|'):len(PageTemp)] PageTemp = PageTemp[0:PageTemp.find(u'{{voir|') + PageTemp2.find(u'}}')+2] + PageTemp[PageTemp.find(u'{{voir|') + PageTemp2.find(u'}}')+2:len(PageTemp)] # Nettoyage if debogage == True: print u' Nettoyage des {{voir}}...'⏎ 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)] PageTemp = HTMLUnicode.HTMLUnicode(PageTemp) (contracted; show full) if PageTemp.find(u'{{Latn') == -1 and PageTemp.find(u'{{Grek') == -1 and PageTemp.find(u'{{Cyrl') == -1 and PageTemp.find(u'{{Armn') == -1 and PageTemp.find(u'{{Geor') == -1 and PageTemp.find(u'{{Hebr') == -1 and PageTemp.find(u'{{Arab') == -1 and PageTemp.find(u'{{Syrc') == -1 and PageTemp.find(u'{{Thaa v') == -1 and PageTemp.find(u'{{Deva') == -1 and PageTemp.find(u'{{Hang') == -1 and PageTemp.find(u'{{Hira') == -1 and PageTemp.find(u'{{Kana') == -1 and PageTemp.find(u'{{Hrkt') == -1 and PageTemp.find(u'{{Hani') == -1 and PageTemp.find(u'{{Jpan') == -1 and PageTemp.find(u'{{Hans') == -1 and PageTemp.find(u'{{Hant') == -1 and PageTemp.find(u'{{zh-mot') == -1 and PageTemp.find(u'{{kohan') == -1 and PageTemp.find(u'{{ko-nom') == -1: and PageTemp.find(u'{{la-verb') == -1 and PageTemp.find(u'{{grc-verb') == -1 and PageTemp.find(u'{{polytonique') == -1: if debogage == True: print u'Ajout du mot vedette' PageTemp = re.sub(ur'([^d\-]+\-\|[a-z]+\}\}\n\{\{[^\n]*\n)\# *', ur"\1'''" + PageHS + ur"''' {{pron}}\n# ", PageTemp) while PageTemp.find(u'\n {') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n {')+1] + PageTemp[PageTemp.find(u'\n {')+2:len(PageTemp)] while re.compile('{{T\|.*\n\n\*[ ]*{{T\|').search(PageTemp): i1 = re.search(u'{{T\|.*\n\n\*[ ]*{{T\|',PageTemp).end() (contracted; show full) PageTemp = PageTemp.replace(u'{{-trad-}}\n{{trad-début}}\n{{trad-fin}}', u'') # trait gris PageTemp = PageTemp.replace(u'{|\n|}', u'') PageTemp = PageTemp.replace(u'{{auxiliaire être}}', u'{{note-auxiliaire|fr|être}}') while PageTemp.find(u'}}: //\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'}}: //\n')] + PageTemp[PageTemp.find(u'}}: //\n')+len(u'}}: //'):len(PageTemp)] ⏎ while PageTemp.find(u'num=1|num=') != -1: if debogage == True: print u'retrait d\'un double num' PageTemp = PageTemp[:PageTemp.find(u'num=1|num=')] + PageTemp[PageTemp.find(u'num=1|num=')+len(u'num=1|'):] while PageTemp.find(u'{{figuré}} {{métaphore|fr}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{figuré}} {{métaphore|fr}}')] + u'{{figuré|fr}}' + PageTemp[PageTemp.find(u'{{figuré}} {{métaphore|fr}}')+len(u'{{figuré}} {{métaphore|fr}}'):len(PageTemp)] while PageTemp.find(u'{{figuré|fr}} {{métaphore|fr}}') != -1: (contracted; show full) break except wikipedia.BadTitle: print "BadTitle l 1530 : " + langue1 break if PageTemp2.find(u'<noinclude>') != -1: langue = CleDeTri.CleDeTri(PageTemp2[0:PageTemp2.find(u'<noinclude>')]) langue2 = u'zzz' if PageEnd.rfind(u'\n') == -1 or PageTemp.find(u'\n') == -1: break⏎ TradCourante = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + PageTemp[0:PageTemp.find(u'\n')] TradSuivantes = u'' PageEnd = PageEnd[0:PageEnd.rfind(u'\n')] PageTemp = PageTemp[PageTemp.find(u'\n'):len(PageTemp)] (contracted; show full) if langue2 > langue: if debogageLent == True: langue2 + u' > ' + langue if PageEnd.rfind(u'\n') > PageEnd.rfind(u'trad-début'): TradSuivantes = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + TradSuivantes PageEnd = PageEnd[0:PageEnd.rfind(u'\n')] summary = summary + ', traduction ' + langue2 + u' > ' + langue el seif PageEnd.rfind(u'\n') != -1: # Cas de la première de la liste TradCourante = PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)] + TradCourante PageEnd = PageEnd[0:PageEnd.rfind(u'\n')] #print PageEnd[PageEnd.rfind(u'\n'):len(PageEnd)].encode(config.console_encoding, 'replace') else: break PageEnd = PageEnd + TradCourante + TradSuivantes (contracted; show full) codelangue = u'conv' EstCodeLangue = u'false' 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("=}}")] # RegexCodeLangue = ur'[a-b]+\-*[a-b]*' if codelangue.find(u'=') != -1: PageEnd = u'{{formater|Code langue inexistant : ' + codelangue + u'}}\n' + PageBegin summary = u'Page à formater manuellement' sauvegarde(page, PageEnd, summary) return⏎ EstCodeLangue = u'true' if codelangue == u'fr': # Nettoyage de la ponctuation en français if PageTemp.find(u'{{langue|') != -1: while PageTemp.find(u' ,') != -1 and PageTemp.find(u' ,') < PageTemp.find(u'{{langue|'): PageTemp = PageTemp[0:PageTemp.find(u' ,')] + PageTemp[PageTemp.find(u' ,')+1:len(PageTemp)] (contracted; show full) 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 if codelangue.find(u'=') != -1: PageEnd = u'{{formater|Code langue inexistant : ' + codelangue + u'}}\n' + PageBegin summary = u'Page à formater manuellement' sauvegarde(page, PageEnd, summary) return⏎ 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' (contracted; show full)TraitementUtilisateur = crawlerUser(u'Utilisateur:JackBot') TraitementRedirections = crawlerRedirects() TraitementTout = crawlerAll(u'') while 1: TraitementRC = crawlerRC() # python delete.py -lang:fr -family:wiktionary -file:articles_WTin.txt ''' </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=15148305.
![]() ![]() 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.
|