Difference between revisions 14747086 and 14772918 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) # 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)] # Encodage d'un fichier ASCII while PageHS.find(u' ') != -1: PageHS = PageHS[0:PageHS.find(u' ')] + u' ' + PageHS[PageHS.find(u' ')+len(u' '):len(PageHS)] while PageHS.find(u'à') != -1: PageHS = PageHS[0:PageHS.find(u'à')] + u'à' + PageHS[PageHS.find(u'à')+len(u'à'):len(PageHS)] while PageHS.find(u'â') != -1: PageHS = PageHS[0:PageHS.find(u'â')] + u'â' + PageHS[PageHS.find(u'â')+len(u'â'):len(PageHS)] while PageHS.find(u'ä') != -1: PageHS = PageHS[0:PageHS.find(u'ä')] + u'ä' + PageHS[PageHS.find(u'ä')+len(u'ä'):len(PageHS)] while PageHS.find(u'é') != -1: PageHS = PageHS[0:PageHS.find(u'é')] + u'é' + PageHS[PageHS.find(u'é')+len(u'é'):len(PageHS)] while PageHS.find(u'è') != -1: PageHS = PageHS[0:PageHS.find(u'è')] + u'è' + PageHS[PageHS.find(u'è')+len(u'è'):len(PageHS)] while PageHS.find(u'ê') != -1: PageHS = PageHS[0:PageHS.find(u'ê')] + u'ê' + PageHS[PageHS.find(u'ê')+len(u'ê'):len(PageHS)] while PageHS.find(u'ë') != -1: PageHS = PageHS[0:PageHS.find(u'ë')] + u'ë' + PageHS[PageHS.find(u'ë')+len(u'ë'):len(PageHS)] while PageHS.find(u'î') != -1: PageHS = PageHS[0:PageHS.find(u'î')] + u'î' + PageHS[PageHS.find(u'î')+len(u'î'):len(PageHS)] while PageHS.find(u'ï') != -1: PageHS = PageHS[0:PageHS.find(u'ï')] + u'ï' + PageHS[PageHS.find(u'ï')+len(u'ï'):len(PageHS)] while PageHS.find(u'ô') != -1: PageHS = PageHS[0:PageHS.find(u'ô')] + u'ô' + PageHS[PageHS.find(u'ô')+len(u'ô'):len(PageHS)] while PageHS.find(u'ö') != -1: PageHS = PageHS[0:PageHS.find(u'ö')] + u'ö' + PageHS[PageHS.find(u'ö')+len(u'ö'):len(PageHS)] while PageHS.find(u'ù') != -1: PageHS = PageHS[0:PageHS.find(u'ù')] + u'ù' + PageHS[PageHS.find(u'ù')+len(u'ù'):len(PageHS)] while PageHS.find(u'û') != -1: PageHS = PageHS[0:PageHS.find(u'û')] + u'û' + PageHS[PageHS.find(u'û')+len(u'û'):len(PageHS)] while PageHS.find(u'ü') != -1: PageHS = PageHS[0:PageHS.find(u'ü')] + u'ü' + PageHS[PageHS.find(u'ü')+len(u'ü'):len(PageHS)] while PageHS.find(u'ç') != -1: PageHS = PageHS[0:PageHS.find(u'ç')] + u'ç' + PageHS[PageHS.find(u'ç')+len(u'ç'):len(PageHS)] while PageHS.find(u'ʼ') != -1: PageHS = PageHS[0:PageHS.find(u'ʼ')] + u'ʼ' + PageHS[PageHS.find(u'ʼ')+len(u'ʼ'):len(PageHS)] while PageHS.find(u'ñ') != -1: PageHS = PageHS[0:PageHS.find(u'ñ')] + u'ñ' + PageHS[PageHS.find(u'ñ')+len(u'ñ'):len(PageHS)] while PageHS.find(u'ó') != -1: PageHS = PageHS[0:PageHS.find(u'ó')] + u'ó' + PageHS[PageHS.find(u'ó')+len(u'ó'):len(PageHS)] while PageHS.find(u'í') != -1: PageHS = PageHS[0:PageHS.find(u'í')] + u'í' + PageHS[PageHS.find(u'í')+len(u'í'):len(PageHS)] while PageHS.find(u'á') != -1: PageHS = PageHS[0:PageHS.find(u'á')] + u'á' + PageHS[PageHS.find(u'á')+len(u'á'):len(PageHS)] while PageHS.find(u'ú') != -1: PageHS = PageHS[0:PageHS.find(u'ú')] + u'ú' + PageHS[PageHS.find(u'ú')+len(u'ú'):len(PageHS)] ⏎ PageHS = PageHS.replace(u' ', u' ') PageHS = PageHS.replace(u'à', u'à') PageHS = PageHS.replace(u'â', u'â') PageHS = PageHS.replace(u'ä', u'ä') PageHS = PageHS.replace(u'é', u'é') PageHS = PageHS.replace(u'è', u'è') PageHS = PageHS.replace(u'ê', u'ê') PageHS = PageHS.replace(u'ë', u'ë') PageHS = PageHS.replace(u'ë', u'ë') PageHS = PageHS.replace(u'̱', u'e̱') PageHS = PageHS.replace(u'î', u'î') PageHS = PageHS.replace(u'ï', u'ï') PageHS = PageHS.replace(u'ô', u'ô') PageHS = PageHS.replace(u'ö', u'ö') PageHS = PageHS.replace(u'ù', u'ù') PageHS = PageHS.replace(u'û', u'û') PageHS = PageHS.replace(u'ü', u'ü') PageHS = PageHS.replace(u'ç', u'ç') PageHS = PageHS.replace(u'ʼ', u'\'') PageHS = PageHS.replace(u'ñ', u'ñ') PageHS = PageHS.replace(u'ó', u'ó') PageHS = PageHS.replace(u'í', u'í') PageHS = PageHS.replace(u'á', u'á') PageHS = PageHS.replace(u'ú', u'ú') PageHS = PageHS.replace(u'#', u'#') # Simplification des pages PageTemp = PageTemp.replace(u'}} [[', u'}} [[') PageTemp = PageTemp.replace(u' ', u' ') PageTemp = PageTemp.replace(u'à', u'à') PageTemp = PageTemp.replace(u'â', u'â') PageTemp = PageTemp.replace(u'ä', u'ä') PageTemp = PageTemp.replace(u'é', u'é') PageTemp = PageTemp.replace(u'è', u'è') PageTemp = PageTemp.replace(u'ê', u'ê') PageTemp = PageTemp.replace(u'ë', u'ë') PageTemp = PageTemp.replace(u'ë', u'ë') PageTemp = PageTemp.replace(u'̱', u'e̱') PageTemp = PageTemp.replace(u'î', u'î') PageTemp = PageTemp.replace(u'ï', u'ï') PageTemp = PageTemp.replace(u'ô', u'ô') PageTemp = PageTemp.replace(u'ö', u'ö') PageTemp = PageTemp.replace(u'ù', u'ù') PageTemp = PageTemp.replace(u'û', u'û') PageTemp = PageTemp.replace(u'ü', u'ü') PageTemp = PageTemp.replace(u'ç', u'ç') PageTemp = PageTemp.replace(u'ʼ', u'\'') PageTemp = PageTemp.replace(u'ñ', u'ñ') PageTemp = PageTemp.replace(u'ó', u'ó') PageTemp = PageTemp.replace(u'í', u'í') PageTemp = PageTemp.replace(u'á', u'á') PageTemp = PageTemp.replace(u'ú', u'ú') PageTemp = PageTemp.replace(u'#', u'#')⏎ if PageTemp.find(u'Catégorie:Périodes géologiques en français') != -1 and PageTemp.find(u'{{Temps géologiques') == -1: PageTemp = PageTemp.replace(u'{{-nom-pr-|fr}}',u'{{-nom-|fr}}') # Ajout de la période géologique ''''pageTemps = Page(site,u'Modèle:Temps géologiques') if page.exists(): try: PageTemps = pageTemps.get() (contracted; show full) baratin = u'{{clé de tri|}}<!-- supprimer si le mot ne contient pas de caractères accentués ni de caractères typographiques (par ex. trait d’union ou apostrophe) ; sinon suivez les instructions à [[Modèle:clé de tri]] -->' PageTemp = PageTemp.replace(u'{{DEFAULTSORT:', u'{{clé de tri|') PageTemp = PageTemp.replace(u'{{CLEDETRI:', u'{{clé de tri|') PageTemp = PageTemp.replace(u'{{clef de tri|', u'{{clé de tri|') ⏎ # à faire : en travaux⏎ if PageTemp.find(u'{{clé de tri') == -1: ClePage = CleDeTri(PageHS) if ClePage != u'' and ClePage != PageHS and ClePage.lower() != PageHS.lower(): if debogage == True: print u' ajout' if PageTemp.rfind(u'\n\n[[') != -1: PageTemp2 = PageTemp[PageTemp.rfind(u'\n\n[['):len(PageTemp)] if PageTemp2[4:5] == u':' or PageTemp2[5:6] == u':': (contracted; show full) if PageTemp.find(u'{{clé de tri|' + PageHS.lower() + u'}}') != -1 and PageTemp.find(u'{{-verb-pr-|fr}}') == -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)] summary = summary + u', {{clé de tri}} inutile' ⏎ ⏎ if debogage == True: print u'Remplacements des balises' PageTemp = re.sub(ur'\[\[Category:', ur'[[Catégorie:', PageTemp) while PageTemp.find(u'</br>') != -1: PageTemp = PageTemp[0:PageTemp.find(u'</br>')] + u'<br/>' + PageTemp[PageTemp.find(u'</br>')+len(u'</br>'):len(PageTemp)] while PageTemp.find(u'<sup/>') != -1: (contracted; show full) langue1 = PageTemp[PageTemp.find(u'{{T|')+4:PageTemp.find(u'}')] if langue1.find(u'|') != -1: langue1 = langue1[0:langue1.find(u'|')] if langue1 != u'': Langue1 = Page(site,u'Modèle:' + langue1) try: PageTemp2 = Langue1.get() except wikipedia.NoPage: print "NoPage l 1521 : " + langue1 returnbreak except wikipedia.IsRedirectPage: PageTemp2 = Langue1.getRedirectTarget().title() + u'<noinclude>' except wikipedia.ServerError: print "ServerError l 1527 : " + langue1 returnbreak except wikipedia.BadTitle: print "BadTitle l 1530 : " + langue1 returnbreak if PageTemp2.find(u'<noinclude>') != -1: langue = CleDeTri(PageTemp2[0:PageTemp2.find(u'<noinclude>')]) langue2 = u'zzz' 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) # 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)] #raw_input(PageTemp.encode(config.console_encoding, 'replace')) # Fin du nom du modèle if PageTemp.find("|") > PageTemp.find("}}") or 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 ⏎ ⏎ PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] #break # pb https://fr.wiktionary.org/w/index.php?title=ordre&curid=343&diff=14727763&oldid=14725107''' # 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 (contracted; show full) 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'):] if PageTemp2.find(u'\n') == -1: PageTemp = PageTemp + u'\n' PageTemp2 = PageTemp2 + u'\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 debogageLent == 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': while PageTemp.find(u'ş') != -1 and PageTemp.find(u'ş') < PageTemp.find(u'\n'): PageTemp = PageTemp[0:PageTemp.find(u'ş')] + u'ș' + PageTemp[PageTemp.find(u'ş')+1:len(PageTemp)] (contracted; show full) Infinitif = PageTemp[PageTemp.find(u'[[')+2:PageTemp.find(u']]')] if Infinitif.find(u'|') != -1: Infinitif = Infinitif[Infinitif.find(u'|')+1:len(Infinitif)] try: page2 = Page(site,Infinitif) Page2 = page2.get() except wikipedia.NoPage: print "NoPage flex-verb : " + Infinitif.encode(config.console_encoding, 'replace') returnbreak except wikipedia.SectionError: print "SectionError flex-verb : " + Infinitif.encode(config.console_encoding, 'replace') returnbreak except wikipedia.IsRedirectPage: print "Redirect page flex-verb : " + Infinitif.encode(config.console_encoding, 'replace') returnbreak # http://fr.wiktionary.org/w/index.php?title=Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet PageTemp2 = PageTemp[PageTemp.find(u'fr-verbe-flexion')+len(u'fr-verbe-flexion'):len(PageTemp)] if PageTemp2.find(u'flexion=') != -1 and PageTemp2.find(u'flexion=') < PageTemp2.find(u'}}'): PageTemp3 = PageTemp2[PageTemp2.find(u'flexion='):len(PageTemp2)] (contracted; show full) elif (PageEnd[i1:].find(u'{{pron') == -1 or PageEnd[i1:].find(u'{{pron') > PageEnd[i1:].find(u'\n')) and (PageEnd[i1:].find(u'{{conj') == -1 or PageEnd[i1:].find(u'{{conj') > PageEnd[i1:].find(u'\n')): PageEnd = PageEnd[:i1] + u' {{pron||' + langue + u'}} {{conj|grp=1|' + langue + u'}}' + PageEnd[i1:] except: print PageHS.encode(config.console_encoding, 'replace') + u' ' + langue.encode(config.console_encoding, 'replace') + u' sans {{pron}}' elif PageHS[len(PageHS)-len(premier):len(PageHS)] == deuxieme or PageHS[len(PageHS)-len(ppron):len(PageHS)] == dpron: try: i1 = re.search(u'{{\-verb[e]*\-[pr\-]*\|[ ]*' + langue + u'.*}}\n[^\[]*\'\'\'',PageEnd).end() (contracted; show full) if PageEnd != PageBegin: sauvegarde(page,PageEnd, summary) elif debogage == True: print "Aucun changement" def CleDeTri(PageTitre): #PageTitre = PageTitre.encode(config.console_encoding, 'replace') #print PageTitre⏎ PageT = u'' key = "false" for lettre in range(0,len(PageTitre)): # Latin if PageTitre[lettre:lettre+1] == u'à' or PageTitre[lettre:lettre+1] == u'Á' or PageTitre[lettre:lettre+1] == u'á' or PageTitre[lettre:lettre+1] == u'â' or PageTitre[lettre:lettre+1] == u'ä' or PageTitre[lettre:lettre+1] == u'ā' or PageTitre[lettre:lettre+1] == u'ă' or PageTitre[lettre:lettre+1] == u'ą' or PageTitre[lettre:lettre+1(contracted; show full)tre:lettre+1] == u'İ' or PageTitre[lettre:lettre+1] == u'Ɨ' or PageTitre[lettre:lettre+1] == u'Ǐ' or PageTitre[lettre:lettre+1] == u'Ȉ' or PageTitre[lettre:lettre+1] == u'Ȋ' or PageTitre[lettre:lettre+1] == u'ij' or PageTitre[lettre:lettre+1] == u'IJ' or PageTitre[lettre:lettre+1] == u'ì' or PageTitre[lettre:lettre+1] == u'Ì' or PageTitre[lettre:lettre+1] == u'ï' or PageTitre[lettre:lettre+1] == u'Ï' or PageTitre[lettre:lettre+1] == u'Lj' or PageTitre[lettre:lettre+1] == u'ị' or PageTitre[lettre:lettre+1] == u'Ị' or PageTitre[lettre:lettre+1] == u'í' or PageTitre[lettre:lettre+1] == u'Í': PageT = PageT + "i" key = "yes" elif PageTitre[lettre:lettre+1] == u'ĵ': PageT = PageT + "jx" key = "yes" elif PageTitre[lettre:lettre+1] == u'ǰ' or PageTitre[lettre:lettre+1] == u'ȷ' or PageTitre[lettre:lettre+1] == u'ɉ' or PageTitre[lettre:lettre+1] == u'Ĵ' or PageTitre[lettre:lettre+1] == u'Ɉ': PageT = PageT + "j" (contracted; show full)tre:lettre+1] == u'ȴ' or PageTitre[lettre:lettre+1] == u'ɫ' or PageTitre[lettre:lettre+1] == u'Ɫ' or PageTitre[lettre:lettre+1] == u'Ĺ' or PageTitre[lettre:lettre+1] == u'Ļ' or PageTitre[lettre:lettre+1] == u'Ľ' or PageTitre[lettre:lettre+1] == u'Ŀ' or PageTitre[lettre:lettre+1] == u'Ł' or PageTitre[lettre:lettre+1] == u'Ƚ' or PageTitre[lettre:lettre+1] == u'lj' or PageTitre[lettre:lettre+1] == u'LJ' or PageTitre[lettre:lettre+1] == u'Lj' or PageTitre[lettre:lettre+1] == u'ị' or PageTitre[lettre:lettre+1] == u'Ị' or PageTitre[lettre:lettre+1] == u'í' or PageTitre[lettre:lettre+1] == u'Í': PageT = PageT + "l" key = "yes" elif PageTitre[lettre:lettre+1] == u'Ɯ': PageT = PageT + "m" key = "yes" (contracted; show full)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 Traitement File = crawlerFile('articles_WTin.txt') TraitementPage = modification(u'Utilisateur:JackBot/tesPage = modification(u'Utilisateur:JackBot/test') TraitementFile = crawlerFile('articles_WTin.txt') 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=14772918.
![]() ![]() 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.
|