Difference between revisions 14568943 and 14576425 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. 3) Met à jour les liens vers les traductions (modèles trad, trad+, trad-, trad-début et trad-fin), et les classe par ordre alphabétique. 4) Ajoute les codes langues appropriés dans les modèles du Wiktionnaire du namespace 0 et paragraphes appropriés (dont "nocat=1" si une catégorie le justifie). 5) Complète les flexions de verbes en français à vérifier. 6) Traduit les importations de en.wikt. 7) Gère des modèles {{voir}} en début de page. 8) Ajoute les anagrammes 9) Teste les URL et indique si elles sont brisées 10) Remplace les modèles obsolètes 11) Créer des liens absents : http://fr.wiktionary.org/w/index.php?title=radiateur&diff=prev&oldid=14443668 12) Détecte les modèles à ajouter : http://fr.wiktionary.org/w/index.php?title=cl%C3%A9&diff=prev&oldid=14443625 Testé ici : http://fr.wiktionary.org/w/index.php?title=Utilisateur%3AJackBot%2Ftest&diff=14533806&oldid=14533695 ''' # Importation des modules import catlib, pagegenerators, os, codecs, urllib, re, collections, socket, hyperlynx from wikipedia import * # Déclaration language = "fr" family = "wiktionary" mynick = "JackBot" site = getSite(language,family) debogage = FalsTrue # Modèles du site à traiter limit6=94953 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[798] = u'formel' Modele[799] = u'gallicisme' Modele[800] = u'abréviation' Modele[801] = u'par ellipse' Modele[802] = u'mélio' Modele[803] = u'hapax' Modele[804] = u'infographie' ⏎ limit4 = 805 # ébauches Modele[806] = u'ébauche-exe' Modele[807] = u'ébauche-pron' Modele[808] = u'ébauche-syn' Modele[809] = u'ébauche-étym-nom-scientifique' Modele[810] = u'ébauche-trans' Modele[811] = u'ébauche-déf' Modele[812] = u'ébauche-étym' Modele[813] = u'ébauche-pron' Modele[814] = u'ébauche' ''' # 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 = 815 Modele[816] = u'Colombie' Modele[817] = u'Commonwealth' Modele[818] = u'Congo' Modele[819] = u'Congo-Brazzaville'Modele[805] = u'accord genre ?' Modele[806] = u'dépendant' Modele[807] = u'argot scolaire' Modele[808] = u'argot policier' limit4 = 809 # ébauches Modele[810] = u'ébauche-trans' Modele[811] = u'ébauche-déf' Modele[812] = u'ébauche-étym' Modele[813] = u'ébauche-pron' Modele[814] = u'ébauche' Modele[815] = u'ébauche-exe' Modele[816] = u'ébauche-pron' Modele[817] = u'ébauche-syn' Modele[818] = u'ébauche-étym-nom-scientifique' ''' # 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 = 819 Modele[820] = u'Congo-Kinshasa' Modele[821] = u'Corse' Modele[822] = u'Corée du Nord' Modele[823] = u'Corée du Sud' Modele[824] = u'Costa Rica' Modele[825] = u'Côte d’Ivoire' Modele[826] = u'Cuba' (contracted; show full)Modele[941] = u'Burkina Faso' Modele[942] = u'Cameroun' Modele[943] = u'Canada' Modele[944] = u'Catalogne' Modele[945] = u'Champagne' Modele[946] = u'Chili' Modele[947] = u'Chine' ⏎ # Modèles de pronociation à synchroniser Modele[948Modele[948] = u'Colombie' Modele[949] = u'Commonwealth' Modele[950] = u'Congo' Modele[951] = u'Congo-Brazzaville' # Modèles de pronociation à synchroniser Modele[952] = 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)Template[62] = u'{{obsolete' TemplateFR[62] = u'{{obsolète' Template[63] = u'{{nautical' TemplateFR[63] = u'{{marine' Template[64] = u'{{figuratively ' TemplateFR[64] = u'{{figuré' Template[65] = u'{{trans-see' TemplateFR[65] = u'{{cf' ⏎ # \{\{l\|(.*)\|(.*)\}\} -> {{lien|$2|$1}} Template[66] = u'proto:ine-pro' TemplateFR[66] = u'indo-européen commun' Template[67] = u'proto:alg-pro' TemplateFR[67] = u'proto-algonquien' Template[68] = u'proto:ath-pro' TemplateFR[68] = u'proto-athapascan' (contracted; show full) 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|') if PageTemp.find(u'{{clé de tri') == -1: ClePage = CleDeTri(PageHS) if ClePage != u'' and ClePage != PageHS and ClePage.lower() != PageHS.lower(): 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 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'}}')] elif PageTemp.find(u'{{clef de tri') != -1: PageTemp2 = PageTemp[PageTemp.find(u'{{clef de tri|')+len(u'{{clef de tri|'):len(PageTemp)] ClePage = PageTemp2[0:PageTemp2.find(u'}}')] if CleDeTri(PageHS) != 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 CleDeTri(PageHS) #print ClePage summary = summary + u', {{clé de tri}} corrigée' PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleDeTri(PageHS) + PageTemp[PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')+PageTemp2.find(u'}}'):len(PageTemp)] 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)] 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|}} inutile' 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|}} inutile' 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}} inutile' 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'⏎ 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 CleDeTri(PageHS) != 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 CleDeTri(PageHS) #print ClePage summary = summary + u', {{clé de tri}} corrigée' PageTemp = PageTemp[0:PageTemp.find(u'{{clé de tri|')+len(u'{{clé de tri|')] + CleDeTri(PageHS) + 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)] 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|}} inutile' 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|}} inutile' 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}} inutile' 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) # 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': PageEnd = u'{{formater|Code langue manquant dans ' + Modele[p] + u'}}\n' + PageBegin summary = u'Page à formater manuellement' sauvegarde(page,PageEnd, summary) return if Modele[p] == u'term' or Modele[p] == u'terme' or Modele[p] == u'term_lien' or Modele[p] == u'régio' or Modele[p] == u'région': ModeleT = PageTemp[PageTemp.find("|")+1:PageTemp.find("}}")] for p2 in range(1,limit6): if Modele[p2] == ModeleT or Modele[p2] == ModeleT[0:1].lower() + ModeleT[1:len(ModeleT)]: if EstCodeLangue == "false": PageEnd = PageEnd + Modele[p2] + "|nocat=1}}" else: PageEnd = PageEnd + Modele[p2] + "|" + codelangue + "}}" (contracted; show full) return except AttributeError: print "AttributeError en sauvegarde" return # Lancement # Quotidiennement : TraitementPage = modification(u'ukai') '''⏎ 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'') TraitementLiens = crawlerLink(u'Modèle:-',u'') TraitementCategorie = crawlerCat(u'Catégorie:Appels de modèles incorrects:fr-verbe-flexion incomplet',False,u'') TraitementLiens = crawlerLink(u'Modèle:-ortho-alt-',u'') TraitementLiens = crawlerLink(u'Modèle:mascul',u'') TraitementLiens = crawlerLink(u'Modèle:fémin',u'') TraitementLiens = crawlerLink(u'Modèle:femin',u'') 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 TraitementFile = crawlerFile('articles_list.txt') TraitementPage = modification(u'Utilisateur:JackBot/test') 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=14576425.
![]() ![]() 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.
|