Difference between revisions 14865244 and 14987322 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) # Déclaration language = "fr" family = "wiktionary" mynick = "JackBot" site = getSite(language,family) debogage = False debogageLent = False ⏎ TailleAnagramme = 7 # sinon trop long : 5 > 5 min, 8 > 1 h par page) # Modèles du site à traiter limit6=9708 Modele = range(1, limit6+1) # http://fr.wiktionary.org/wiki/Cat%C3%A9gorie:Mod%C3%A8les_de_type_de_mot_du_Wiktionnaire Modele[1] = u'-adj-' Modele[2] = u'-flex-adj-indéf-' Modele[3] = u'-adj-dém-' Modele[4] = u'-adj-excl-' Modele[5] = u'-adj-indéf-' (contracted; show full)Modele[818] = u'logistique' Modele[819] = u'lutherie' Modele[820] = u'pétanque' Modele[821] = u'accord genre ?' Modele[822] = u'supprimer-déf ?' Modele[823] = u'hyperbole' Modele[824] = u'idiotisme' Modele[825] = u'indéfini' ⏎ Modele[826] = u'singulare tantum' Modele[827] = u'plurale tantum' Modele[828] = u'islam' Modele[829] = u'judaïsme' Modele[830] = u'bouddhisme' Modele[831] = u'hindouisme' Modele[832] = u'marbrerie' Modele[833] = u'miroiterie' limit4 = 82634 # code langue quoi qu'il arrive Modele[8234] = u'ébauche-pron' Modele[835] = u'ébauche-syn' Modele[836] = u'note-gentilé' Modele[8237] = u'ébauche-étym-nom-scientifique' Modele[8238] = u'ébauche-trans' Modele[8239] = u'ébauche-déf' Modele[8340] = u'ébauche-étym' Modele[8341] = u'ébauche-pron' Modele[8342] = u'ébauche' Modele[8343] = u'ébauche-exe' Modele[834] = u'ébauche-pron' Modele[835] = 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 = 836 Modele[836] = u'Guinée' Modele[837] = u'Guyane' Modele[838] = u'Haïti' Modele[839] = u'Honduras' Modele[840] = u'Île-de-France' Modele[841] = u'Inde' Modele[842] = u'Irlande' Modele[843] = u'Jamaïque'44 Modele[844] = u'Languedoc-Roussillon' Modele[845] = u'Le Mans' Modele[846] = u'Liban' Modele[847] = u'Liechtenstein' Modele[848] = u'Limousin' Modele[849] = u'Louisiane' Modele[850] = u'Lyonnais' (contracted; show full)Modele[961] = u'États-Unis' Modele[962] = u'Europe' Modele[963] = u'France' Modele[964] = u'Franche-Comté' Modele[965] = u'Gascogne' Modele[966] = u'Gaspésie' Modele[967] = u'Guadeloupe' Modele[968] = u'Guinée' Modele[969] = u'Guyane' Modele[970] = u'Haïti' Modele[971] = u'Honduras' Modele[972] = u'Île-de-France' Modele[973] = u'Inde' Modele[974] = u'Irlande' Modele[975] = u'Jamaïque' # Modèles de pronociation à synchroniser Modele[9768] = u'en-conj-rég' #Modele[] = u'fr-rég' #Modele[] = u'fr-inv' # Modèles des autres Wiktionnaires à convertir LimitTemplate = 82 Template = range(1, LimitTemplate+1) TemplateFR = range(1, LimitTemplate+1) (contracted; show full) PageHS = HTMLUnicode.HTMLUnicode(PageHS) PageTemp = HTMLUnicode.HTMLUnicode(PageTemp) PageTemp = PageTemp.replace(u'}} [[', u'}} [[') PageTemp = PageTemp.replace(u']] [[', u']] [[') # Clés de tri if debogage == True: print u'Clés de tri' 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 = CleTri 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':': PageTemp = PageTemp[0:PageTemp.rfind(u'\n\n[[')] + u'\n\n{{clé de tri|' + ClePage + u'}}' + PageTemp[PageTemp.rfind(u'\n\n[['):len(PageTemp)] else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' else: if debogage == True: print u' existante' if PageTemp.find(u'{{clé de tri|') != -1: PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|'):len(PageTemp)] ClePage = PageTemp2[0:PageTemp2.find(u'}}')] if CleTri != ClePage and (PageTemp.find(u'{{langue|fr}}') != -1 or PageTemp.find(u'{{langue|eo}}') != -1 or PageTemp.find(u'{{langue|en}}') != -1 or PageTemp.find(u'{{langue|es}}') != -1 or PageTemp.find(u'{{langue|de}}') != -1 or PageTemp.find(u'{{langue|pt}}') != -1 or PageTemp.find(u'{{langue|it}}') != -1): #print CleTri #print ClePage summary = summary + u', {{clé de tri}} corrigée' PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleTri + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}'):len(PageTemp)] #if debogage == True: raw_input(PageTemp.encode(config.console_encoding, 'replace')) while PageTemp.find(u'\n{clé de tri') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n{clé de tri')+1] + u'{' + PageTemp[PageTemp.find(u'\n{clé de tri'):len(PageTemp)]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|') while PageTemp.find(u'\n{clé de tri') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n{clé de tri')+1] + u'{' + PageTemp[PageTemp.find(u'\n{clé de tri'):len(PageTemp)] ClePage = CleTri if PageTemp.find(u'{{clé de tri') == -1 and ClePage != u'' and ClePage.lower() != PageHS.lower(): summary = summary + u', {{clé de tri}} ajoutée' 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':': PageTemp = PageTemp[0:PageTemp.rfind(u'\n\n[[')] + u'\n\n{{clé de tri|' + ClePage + u'}}' + PageTemp[PageTemp.rfind(u'\n\n[['):len(PageTemp)] else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' elif PageTemp.find(u'{{clé de tri|') != -1 and (PageTemp.find(u'{{langue|fr}}') != -1 or PageTemp.find(u'{{langue|eo}}') != -1 or PageTemp.find(u'{{langue|en}}') != -1 or PageTemp.find(u'{{langue|es}}') != -1 or PageTemp.find(u'{{langue|de}}') != -1 or PageTemp.find(u'{{langue|pt}}') != -1 or PageTemp.find(u'{{langue|it}}') != -1): if debogage == True: print u' vérification de clé existante pour alphabets connus' PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|'):len(PageTemp)] ClePage = PageTemp2[0:PageTemp2.find(u'}}')] if CleTri.lower() != ClePage.lower(): summary = summary + u', {{clé de tri}} corrigée' PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleTri + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}'):len(PageTemp)] elif CleTri.lower() == PageHS.lower(): summary = summary + u', {{clé de tri}} supprimée' PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')] + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}')+2:len(PageTemp)] if debogageLent == True: raw_input(PageTemp.encode(config.console_encoding, 'replace')) 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]] -->' if PageTemp.find(baratin) != -1: PageTemp = PageTemp[0:PageTemp.find(baratin)] + PageTemp[PageTemp.find(baratin)+len(baratin):len(PageTemp)] summary = summary + u', {{clé de tri|}} inutilsupprimée' 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)] summary = summary + u', {{clé de tri|}} inutilsupprimée' 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)] summary = summary + u', {{clé de tri}} inutilsupprimée' 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}} inutilsupprimée' 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) PageTemp = PageTemp[0:PageTemp.find(u'\n* {{SAMPA}}: //')] + PageTemp[PageTemp.find(u'\n* {{SAMPA}}: //')+len(u'\n* {{SAMPA}}: //'):len(PageTemp)] PageTemp = PageTemp.replace(u'\n* {{SAMPA}} :\n', u'\n') PageTemp = PageTemp.replace(u'{{Massorète}}:', u'{{Massorète}} :') PageTemp = PageTemp.replace(u'{{pron||hbo}}:', u'API :') PageTemp = PageTemp.replace(u'{{SAMPA}}:', u'{{SAMPA}} :') PageTemp = PageTemp.replace(u'{{sexua|', u'{{sexe|') PageTemp = PageTemp.replace(u'{{conj-hbo}}', u'{{conjugaison|hbo}}')⏎ 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'{{figuré}} {{métaphore|fr}}') != -1: (contracted; show full) 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)] regex = u'\{\{trad\|([a-z][a-z]?[a-z])\|\}\}' if re.search(regex, PageTemp): PageTemp = re.sub(regex, ur'{{ébauche-trad|\1}}', PageTemp) regex = ur'\{\{ISBN\|([^\}]*)\}\}' if re.search(regex, PageTemp): PageTemp = re.sub(regex, ur'ISBN \1', PageTemp) '''PageTemp3 = u'' while PageTemp.find(u'{{fr-accord-ot|') != -1: if PageHS[len(PageHS)-2:] == u'ot': PageTemp2 = PageTemp[PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|'):] if PageTemp2.find(u'|') < PageTemp2.find(u'}}') and PageTemp2.find(u'|') != -1: PageTemp3 = PageTemp3 + PageTemp[:PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|')] PageTemp = PageTemp[PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|')+PageTemp2.find(u'|')+1:] else: PageTemp3 = PageTemp3 + PageTemp[:PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|')] PageTemp = PageTemp[PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|')+PageTemp2.find(u'}}'):] else: PageTemp3 = PageTemp3 + PageTemp[:PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|')] + u'ms=' PageTemp = PageTemp[PageTemp.find(u'{{fr-accord-ot|')+len(u'{{fr-accord-ot|'):] if PageTemp.find(u'|') < PageTemp.find(u'}}') and PageTemp.find(u'|') != -1: PageTemp3 = PageTemp3 + PageTemp[:PageTemp.find(u'|')] + u'ot' PageTemp = PageTemp[PageTemp.find(u'|'):] else: PageTemp3 = PageTemp3 + PageTemp[:PageTemp.find(u'}}')] + u'ot' PageTemp = PageTemp[PageTemp.find(u'}}'):] PageTemp = PageTemp3 + 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) 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)TailleAnagramme: #print socket.gethostname() anagrammes = anagram(PageHS) ListeAnagrammes = u'' for anagramme in anagrammes: if anagramme != PageHS: pageAnagr = Page(site,anagramme) #print anagramme.encode(config.console_encoding, 'replace') (contracted; show full) ) and (PageTemp.find(u':Catégorie:Champignons') + 1 != PageTemp.rfind(u'Catégorie:Champignons'))): PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] break elif Modele[p] == u'sexualité' or Modele[p] == u'sexe': if (EstCodeLangue == "false" ) or (PageTemp.find(u'Catégorie:Positions sexuelles' ) != -1 and (PageTemp.find(u'Catégorie:Positions sexuelles') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u':Catégorie:Positions sexuelles') + 1 != PageTemp.rfind(u'Catégorie:Positions sexuelles'))): PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" PageTemp = PageTemp[PageTemp.find("}}")+2:len(PageTemp)] break⏎ elif Modele[p] == u'chimie' or Modele[p] == u'chim': if (EstCodeLangue == "false" ) or (PageTemp.find(u'Catégorie:Éléments chimique' ) != -1 and (PageTemp.find(u'Catégorie:Éléments chimique') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 (contracted; show full) if debogage == True: print u'Catégorisée quel que soit EstCodeLangue (ex : ébauches)' 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 debogageLent == True: print (PageEnd.encode(config.console_encoding, 'replace')[0:1000]) raw_input (PageTemp.encode(config.console_encoding, 'replace'))⏎ 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 PageTem(contracted; show full) print "BadTitle en sauvegarde" return except AttributeError: print "AttributeError en sauvegarde" return # Lancement #TraitementLiens = crawlerLink(u'Modèle: note-gentilé',u'')⏎ ISBN',u'') #TraitementLiens = crawlerLink(u'Modèle:conj-hbo',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'') TraitementLiens = crawlerLink(u'Modèle:trad',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=14987322.
![]() ![]() 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.
|