Difference between revisions 15195624 and 15201679 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)Modele[201] = u'b-m-cour' Modele[202] = u'n' Modele[203] = u'c' Modele[204] = u'mf' Modele[205] = u'mf?' Modele[206] = u'fm ?' Modele[207] = u'plus courant' Modele[208] = u'moins courant' ⏎ Modele[209] = u'comparatif' Modele[210] = u'superlatif' limit3 = 20911 # Paragraphes sans modèle catégorisant pouvant contenir des modèles # http://fr.wiktionary.org/wiki/Cat%C3%A9gorie:Mod%C3%A8les_de_domaine_d%E2%80%99utilisation Modele[209] = u'informel' Modele[210] = u'injurieux'⏎ Modele[211] = u'interjection' Modele[212] = u'ironique' Modele[213] = u'litote' Modele[214] = u'littéraire' Modele[215] = u'péjoratif' Modele[216] = u'mélioratif' Modele[217] = u'métaphore' Modele[218] = u'métonymie' (contracted; show full)Modele[423] = u'urbanisme' Modele[424] = u'vêtements' Modele[425] = u'marketing' Modele[426] = u'aphérèse' Modele[427] = u'apocope' Modele[428] = u'argot' Modele[429] = u'cardinal' Modele[430] = u' comparatifinformel' Modele[431] = u'contemporain' Modele[432] = u'courant' Modele[433] = u'dérision' Modele[434] = u'jazz' Modele[435] = u'tennis de table' Modele[436] = u'volley-ball' Modele[437] = u'volley' (contracted; show full)Modele[661] = u'tauromachie' Modele[662] = u'germanisme' Modele[663] = u'squelette' Modele[664] = u'muscle' Modele[665] = u'gymnastique' Modele[666] = u'boxe' Modele[667] = u'déverbal' Modele[668] = u' superlatifinjurieux' Modele[669] = u'réflexif' Modele[670] = u'algèbre' Modele[671] = u'irrég' Modele[672] = u'irrégulier' Modele[673] = u'arts martiaux' Modele[674] = u'hydraulique' Modele[675] = u'par analogie' (contracted; show full) PageTemp = PageTemp[0:PageTemp.find(u'<sup/>')] + u'</sup>' + PageTemp[PageTemp.find(u'<sup/>')+len(u'<sup/>'):len(PageTemp)] if debogage == True: print u'Remplacements des modèles' PageTemp = re.sub(ur'{{(formatnum|Formatnum|FORMATNUM)\:([0-9]*) ', ur'{{\1:\2', PageTemp) PageTemp = re.sub(ur'{{terme*\|Registre neutre}} *', ur'', PageTemp) # Ligne de forme while PageTemp.find(u'{{fr-rég}}\'\'\'') != -1: PageTemp = PageTemp[:PageTemp.find(u'{{fr-rég}}\'\'\'')+len(u'{{fr-rég}}')] + u'\n' + PageTemp[PageTemp.find(u'{{fr-rég}}\'\'\'')+len(u'{{fr-rég}}'):] while PageTemp.find(u'{{es-rég}}\'\'\'') != -1: PageTemp = PageTemp[:PageTemp.find(u'{{es-rég}}\'\'\'')+len(u'{{es-rég}}')] + u'\n' + PageTemp[PageTemp.find(u'{{es-rég}}\'\'\'')+len(u'{{es-rég}}'):] while PageTemp.find(u'{{pt-rég}}\'\'\'') != -1: PageTemp = PageTemp[:PageTemp.find(u'{{pt-rég}}\'\'\'')+len(u'{{pt-rég}}')] + u'\n' + PageTemp[PageTemp.find(u'{{pt-rég}}\'\'\'')+len(u'{{pt-rég}}'):]⏎ ⏎ PageTemp = re.sub(ur'([^d\-]+\-\|[a-z]+\}\}\n)\# *', ur"\1'''" + PageHS + ur"''' {{pron}}\n# ", PageTemp) 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') == -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 and PageTemp.find(u'FAchar') == -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): (contracted; show full) # Ajouts des codes langues if debogage == True: print (u'Gestion des codes langues dans les modèles') EstCodeLangue = u'false' if debogage == True: print " EstCodeLangue = " + EstCodeLangue trad = u'false' codelangue = None NouvelleLangue = False⏎ position = 1 p = 1 while position > -1: # On sauvegarde la partie traitée d'une page provisoire dans une page finale jusqu'à disparition de la première #print(PageEnd.encode(config.console_encoding, 'replace')[0:1000]) #print(PageTemp.encode(config.console_encoding, 'replace')[0:1000]) if debogageLent == True: if codelangue is None: print u'Boucle langue' (contracted; show full) position = PageTemp.find("{{") if debogage == True: print u' 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 ⏎ # Ajout des anagrammes pour cette nouvelle langue détectée if debogage == True: print u' Anagrammes pour ' + codelangue if debogageLent == True: print socket.gethostname() if socket.gethostname() != "willow" and socket.gethostname() != "yarrow" and socket.gethostname() != "nightshade" and PageTemp.find(u'-erreur-') == -1 and PageHS != u'six': if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and len(PageHS) < TailleAnagramme: anagrammes = anagram(PageHS) ListeAnagrammes = u'' for anagramme in anagrammes: if anagramme != PageHS: if debogage == True: print anagramme.encode(config.console_encoding, 'replace') pageAnagr = Page(site,anagramme) if pageAnagr.exists(): if pageAnagr.namespace() !=0 and anagramme != u'Utilisateur:JackBot/test': return else: try: PageTempAnagr = pageAnagr.get() except wikipedia.NoPage: return except wikipedia.IsRedirectPage: return except wikipedia.LockedPage: return if PageTempAnagr.find(u'{{langue|' + codelangue + u'}}') != -1: ListeAnagrammes = ListeAnagrammes + u'* {{lien|' + anagramme + u'|' + codelangue + u'}}\n' if debogage == True: print u' trouvé' if ListeAnagrammes != u'': position = PageTemp.find(u'{{langue|' + codelangue + u'}}')+len(u'{{langue|' + codelangue + u'}}') PageTemp2 = PageTemp[position:len(PageTemp)] if PageTemp2.find(u'{{-voir-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-voir-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1): PageTemp = PageTemp[0:position+PageTemp2.find(u'{{-voir-}}')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'{{-voir-}}'):len(PageTemp)] elif PageTemp2.find(u'{{-réf-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-réf-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1): PageTemp = PageTemp[0:position+PageTemp2.find(u'{{-réf-}}')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'{{-réf-}}'):len(PageTemp)] elif PageTemp2.find(u'== {{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'== {{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1): PageTemp = PageTemp[0:position+PageTemp2.find(u'== {{langue|')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'== {{langue|'):len(PageTemp)] elif PageTemp2.find(u'=={{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'=={{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1): PageTemp = PageTemp[0:position+PageTemp2.find(u'=={{langue|')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'=={{langue|'):len(PageTemp)] elif PageTemp2.find(u'{{clé de tri') != -1: PageTemp = PageTemp[0:position+PageTemp2.find(u'{{clé de tri')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'{{clé de tri'):len(PageTemp)] elif PageTemp2.find(u'[[Catégorie:') != -1: PageTemp = PageTemp[0:position+PageTemp2.find(u'[[Catégorie:')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[position+PageTemp2.find(u'[[Catégorie:'):len(PageTemp)] else: # Avant interwikis if PageTemp.find(u'[[en:') or PageTemp.find(u'[[ko:') or PageTemp.find(u'[[vi:') != -1: regex = ur'\[\[(.+?)(?:\]\]\n)' # copié de pywikipedia mais pas infaillible, d'où le [[en:... if re.compile(regex).search(PageTemp): try: PageTemp = PageTemp[0:re.search(regex,PageTemp).end()] + u'\n{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[re.search(regex,PageTemp).end():len(PageTemp)] except: print u'pb regex interwiki' else: PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes else: PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes if PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')] + PageTemp[PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')+len(u'<!-- pas d’{{-anagr-}} -->\n'):len(PageTemp)] 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' if debogage == True: print " EstCodeLangue = " + EstCodeLangue 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)] # 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("|")⏎ NouvelleLangue = True 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' if debogage == True: print " EstCodeLangue = " + EstCodeLangue 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)] # 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("|") # Ajout des anagrammes pour cette nouvelle langue détectée if NouvelleLangue == True and socket.gethostname() != "willow" and socket.gethostname() != "yarrow" and socket.gethostname() != "nightshade" and PageTemp.find(u'-erreur-') == -1 and PageHS != u'six': if debogage == True: print u' Anagrammes pour ' + codelangue if PageTemp.find(u'{{-anagr-}}') == -1 and PageHS.find(u' ') == -1 and len(PageHS) < TailleAnagramme: anagrammes = anagram(PageHS) ListeAnagrammes = u'' for anagramme in anagrammes: if anagramme != PageHS: if debogage == True: print anagramme.encode(config.console_encoding, 'replace') pageAnagr = Page(site,anagramme) if pageAnagr.exists(): if pageAnagr.namespace() !=0 and anagramme != u'Utilisateur:JackBot/test': break else: try: PageTempAnagr = pageAnagr.get() except wikipedia.NoPage: break except wikipedia.IsRedirectPage: break except wikipedia.LockedPage: break if PageTempAnagr.find(u'{{langue|' + codelangue + u'}}') != -1: ListeAnagrammes = ListeAnagrammes + u'* {{lien|' + anagramme + u'|' + codelangue + u'}}\n' if debogage == True: print u' trouvé' if ListeAnagrammes != u'': summary = summary + u', ajout d\'anagrammes' positionAnagr = PageTemp.find(u'{{langue|' + codelangue + u'}}')+len(u'{{langue|' + codelangue + u'}}') PageTemp2 = PageTemp[positionAnagr:len(PageTemp)] if PageTemp2.find(u'{{-voir-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-voir-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1): PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'{{-voir-}}')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'{{-voir-}}'):len(PageTemp)] elif PageTemp2.find(u'{{-réf-}}') != -1 and ((PageTemp2.find(u'{{langue|') != -1 and PageTemp2.find(u'{{-réf-}}') < PageTemp2.find(u'{{langue|')) or PageTemp2.find(u'{{langue|') == -1): PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'{{-réf-}}')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'{{-réf-}}'):len(PageTemp)] elif PageTemp2.find(u'== {{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'== {{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1): PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'== {{langue|')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'== {{langue|'):len(PageTemp)] elif PageTemp2.find(u'=={{langue|') != -1 and ((PageTemp2.find(u'[[Catégorie:') != -1 and PageTemp2.find(u'=={{langue|') < PageTemp2.find(u'[[Catégorie:')) or PageTemp2.find(u'[[Catégorie:') == -1): PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'=={{langue|')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'=={{langue|'):len(PageTemp)] elif PageTemp2.find(u'{{clé de tri') != -1: PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'{{clé de tri')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'{{clé de tri'):len(PageTemp)] elif PageTemp2.find(u'[[Catégorie:') != -1: PageTemp = PageTemp[0:positionAnagr+PageTemp2.find(u'[[Catégorie:')] + u'{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[positionAnagr+PageTemp2.find(u'[[Catégorie:'):len(PageTemp)] else: if debogage == True: print " Ajout avant les interwikis" regex = ur'\n\[\[' if re.compile(regex).search(PageTemp): try: PageTemp = PageTemp[:re.search(regex,PageTemp).start()] + u'\n{{-anagr-}}\n' + ListeAnagrammes + u'\n' + PageTemp[re.search(regex,PageTemp).start():] except: print u'pb regex interwiki' else: PageTemp = PageTemp + u'\n\n{{-anagr-}}\n' + ListeAnagrammes if PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')] + PageTemp[PageTemp.find(u'<!-- pas d’{{-anagr-}} -->\n')+len(u'<!-- pas d’{{-anagr-}} -->\n'):len(PageTemp)] NouvelleLangue = False⏎ # Nettoyage des doublons (tester avec ophtalmologie dans adelphe) '''PageTemp2 = PageTemp[position+1:len(PageTemp)] if codelangue and PageTemp2.find(PageTemp[0:position]) != -1 and PageTemp2.find(u'\n') != -1 and PageTemp2.find(u' {{' + PageTemp[0:position] + u'|' + codelangue + u'}}') < PageTemp2.find(u'\n'): (contracted; show full) 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'-nom-' and (codelangue == 'fr' or codelangue == 'es' or codelangue == 'pt' or codelangue == 'it' or codelangue == 'de' or codelangue == 'ar' or codelangue == 'ru'): if debogage == True: print u'Recherche du genre manquant' if PageTemp.find(u'\n\'\'\'' + PageHS + u'\'\'\'') != -1 and PageTemp.find(u'\n\'\'\'' + PageHS + u'\'\'\'') < 100: (contracted; show full) if EstCodeLangue == "false": PageEnd = PageEnd + Modele[p2] + "|nocat=1}}" else: PageEnd = PageEnd + Modele[p2] + "|" + codelangue + "}}" PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] break break elif Modele[p] == u'pron' or Modele[p] == u'phon' or Modele[p] == u'dénominal de' or Modele[p] == u'déverbal de' or Modele[p] == u'superlatif de' or Modele[p] == u'déverbal' or Modele[p] == u'superlatif de' or Modele[p] == u'comparatif de': if codelangue != u'conv': # Trie des lettres de l'API if Modele[p] == u'pron': PageTemp2 = PageTemp[position+1:PageTemp.find("}}")] (contracted; show full) print "BadTitle en sauvegarde" return except AttributeError: print "AttributeError en sauvegarde" return # Lancement #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en italien',False,u' affondamento') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en portugais',False,u'aglomeração') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en allemand',False,u'Auswahlcarneficina') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en espagnol',False,u'apatía') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en allemand',False,u'Eurozone') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en portugais',False,u'construtivismo') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en arabe',False,u'') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en russe',False,u'') #TraitementCategorie = crawlerCat(u'Catégorie:Noms communs en français',False,u'') # Quotidiennement : TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Codes langue manquants',True,u'') TraitementCategorie = crawlerCat(u'Catégorie:Wiktionnaire:Flexions à vérifier',True,u'') TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'') (contracted; show full)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=15201679.
![]() ![]() 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.
|