Difference between revisions 14533849 and 14568943 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)language = "fr" family = "wiktionary" mynick = "JackBot" site = getSite(language,family) debogage = False # Modèles du site à traiter limit6=94 49 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[116] = u'-onoma-' Modele[117] = u'-onoma-' Modele[118] = u'-flex-loc-verbe-' Modele[119] = u'-class-' Modele[120] = u'-sinogramme-' Modele[121] = u'-prénom-' Modele[122] = u'-flex-prénom-' Modele[123] = u'-num-'⏎ limit1 = 1234 # Paragraphes avec modèle catégorisant # http://fr.wiktionary.org/wiki/Cat%C3%A9gorie:Mod%C3%A8les_de_contexte Modele[123] = u'-étym-'⏎ Modele[124] = u'-exp-' Modele[125] = u'-faux-amis-' Modele[126] = u'-gent-' Modele[127] = u'-hist-' Modele[128] = u'-holo-' Modele[129] = u'-homo-' Modele[130] = u'-hyper-' Modele[131] = u'-hypo-' Modele[132] = u'-image-' Modele[133] = u'-méro-' Modele[134] = u'-note-' #notes Modele[135] = u'-var-ortho-' Modele[136] = u'-ortho-arch-' Modele[137] = u'-paro-' Modele[138] = u'-vidéo-' Modele[139] = u'-q-syn-' Modele[140] = u'-réf-' Modele[141] = u'-sino-dico-' Modele[142] = u'-sous-esp-' Modele[143] = u'-syll-' Modele[144] = u'-syn-' Modele[145] = u'-noms-vern-' Modele[146] = u'-drv-' Modele[147] = u'-trans-' Modele[148] = u'-translit-' Modele[149] = u'-tropo-' Modele[150] = u'-var-' Modele[151] = u'-voc-' Modele[152] = u'-voir-' Modele[153] = u'-pron-' Modele[154] = u'-abrév-' Modele[155] = u'-anagr-' Modele[156] = u'-ant-' Modele[157] = u'-apr-' Modele[158] = u'-cit-' Modele[159] = u'-compos-' Modele[160] = u'-conjug-' Modele[161] = u'-décl-' Modele[162] = u'-dial-' Modele[163] = u'-trad-' Modele[164] = u'-drv-int-' Modele[165] = u'-étym-'⏎ limit2 = 1656 # Paragraphes sans modèle catégorisant, {{voir| et {{voir/ sont gérés individuellement Modele[165] = u'titre incorrect'⏎ Modele[166] = u'formater' Modele[167] = u'suppression' Modele[168] = u'supp' Modele[169] = u'PàS' Modele[170] = u'vérifier' Modele[171] = u'voir' Modele[172] = u'(' Modele[173] = u')' Modele[174] = u'trad-début' Modele[175] = u'trad-fin' Modele[176] = u'titre alt' Modele[177] = u'titre mis en forme' Modele[178] = u'trad' Modele[179] = u'trad+' Modele[180] = u'trad-' Modele[181] = u'trad--' Modele[182] = u'préciser' Modele[183] = u'?' Modele[184] = u'doute' Modele[185] = u'm' Modele[186] = u'f' limit25 = 187⏎ Modele[187] = u'n'titre incorrect' limit25 = 188 Modele[188] = u'c' Modele[189] = u'mf' Modele[190] = u'mf?' Modele[191] = u'fm ?' Modele[192] = u'plus courant' Modele[193] = u'moins courant' Modele[194] = u'plus rare' Modele[195] = u'beaucoup plus courant' Modele[196] = u'beaucoup moins courant' Modele[197] = u'pl-cour' Modele[198] = u'm-cour' Modele[199] = u'pl-rare' Modele[200] = u'b-pl-cour' Modele[201] = u'b-m-cour' Modele[202] = u'n'⏎ limit3 = 2023 # 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[202] = u'hapax'⏎ Modele[203] = u'hispanisme' Modele[204] = u'humour' Modele[205] = u'hyperbole' Modele[206] = u'idiotisme' Modele[207] = u'indéfini' Modele[208] = u'joaillerie' Modele[209] = u'informel' Modele[210] = u'injurieux' (contracted; show full)Modele[794] = u'exagératif' Modele[795] = u'expression' Modele[796] = u'familier' Modele[797] = u'figuré' Modele[798] = u'formel' Modele[799] = u'gallicisme' Modele[800] = u'abréviation' Modele[801] = u'par ellipse' ⏎ ⏎ limit4 = 802 # ébauches Modele[802] = u'ébauche-défmélio' Modele[803] = u'ébauche-étymhapax' Modele[804] = u'ébauche-pron' Modele[805] = u'infographie' limit4 = 805 # ébauche's 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 = 811 Modele[811] = u'Canada' Modele[812] = u'Catalogne' Modele[813] = u'Champagne' Modele[814] = u'Chili' Modele[815] = u'Chine'5 Modele[816] = u'Colombie' Modele[817] = u'Commonwealth' Modele[818] = u'Congo' Modele[819] = u'Congo-Brazzaville' Modele[820] = u'Congo-Kinshasa' Modele[821] = u'Corse' Modele[822] = u'Corée du Nord' (contracted; show full)Modele[935] = u'Berry' Modele[936] = u'Bolivie' Modele[937] = u'Bordelais' Modele[938] = u'Bourgogne' Modele[939] = u'Brésil' Modele[940] = u'Bretagne' 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[9438] = u'en-conj-rég' #Modele[936] = u'fr-rég' #Modele[937] = u'fr-inv' # Modèles des autres Wiktionnaires à convertir LimitTemplate = 82 Template = range(1, LimitTemplate+1) TemplateFR = range(1, LimitTemplate+1) Template[1] = u'===Adjective===' TemplateFR[1] = u'{{-adj-}}' (contracted; show full) sauvegarde(PageMin,PageEnd2, u"Création de l'adjectif à partir du nom") # 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]] -->' if PageTemp.find(PageTemp = PageTemp.replace(u'{{DEFAULTSORT:', u'{{clé de tri|') == -1 and PageTemp.find(u'{{clef⏎ 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':': (contracted; show full) while PageTemp.find(u'\n{{trad-milieu}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n{{trad-milieu}}')] + PageTemp[PageTemp.find(u'\n{{trad-milieu}}')+len(u'\n{{trad-milieu}}'):len(PageTemp)] while PageTemp.find(u'-ortho-alt-') != -1: PageTemp = PageTemp[0:PageTemp.find(u'-ortho-alt-')] + u'-var-ortho-' + PageTemp[PageTemp.find(u'-ortho-alt-')+len(u'-ortho-alt-'):len(PageTemp)] ⏎ ⏎ while PageTemp.find(u'\n={{-nom-|ja}}=') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n={{-nom-|ja}}=')] + u'\n;\'\'Nom\'\'' + PageTemp[PageTemp.find(u'\n={{-nom-|ja}}=')+len(u'\n={{-nom-|ja}}='):len(PageTemp)] while PageTemp.find(u'\n={{caractère}}=') != -1: PageTemp = PageTemp[0:PageTemp.find(u'\n={{caractère}}=')] + u'\n;\'\'Caractère\'\'' + PageTemp[PageTemp.find(u'\n={{caractère}}=')+len(u'\n={{caractère}}='):len(PageTemp)] while PageTemp.find(u'Carractère') != -1: PageTemp = PageTemp[0:PageTemp.find(u'Carractère')] + u'Caractère' + PageTemp[PageTemp.find(u'Carractère')+len(u'Carractère'):len(PageTemp)] ModRegion = range(1, 8) ModRegion[1] = u'AU' ModRegion[2] = u'BE' ModRegion[3] = u'CA' ModRegion[4] = u'QC' ModRegion[5] = u'UK' ModRegion[6] = u'US' for m in range(1, 7): while PageTemp.find(u'{{pron-rég|' + ModRegion[m] + u'|') != -1: PageTemp = PageTemp[:PageTemp.find(u'{{pron-rég|' + ModRegion[m] + u'|')+len('{{pron-rég|')-1] + u'{{' + ModRegion[m] + u'|nocat=1}}' + PageTemp[PageTemp.find(u'{{pron-rég|' + ModRegion[m] + u'|')+len(u'{{pron-rég|' + ModRegion[m]):]⏎ ⏎ while PageTemp.find(u'\n{{colonnes|') != -1: PageTemp2 = PageTemp[0:PageTemp.find(u'\n{{colonnes|')] if PageTemp2.rfind(u'{{') != -1 and PageTemp2.rfind(u'{{') == PageTemp2.rfind(u'{{trad-début'): # modèles impriqués dans trad PageTemp2 = PageTemp[PageTemp.find(u'\n{{colonnes|')+len(u'\n{{colonnes|'):len(PageTemp)] if PageTemp2.find(u'\n}}\n') != -1: (contracted; show full) while PageTemp.find(u'{{WP|lang=sgs') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{WP|lang=sgs')] + u'{{WP|lang=bat-smg' + PageTemp[PageTemp.find(u'{{WP|lang=sgs')+len(u'{{WP|lang=sgs'):len(PageTemp)] # Ajouts des codes langues if debogage == True: print (u'Gestion des codes langues dans les modèles')⏎ EstCodeLangue = u'false' trad = u'false' codelangue = None 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]) (contracted; show full) ''' #print (PageEnd.encode(config.console_encoding, 'replace')[0:1000]) #print (PageTemp[0:position].encode(config.console_encoding, 'replace')) # Comparaison avec chaque modèle connu dans Modele[p], pour identifier le traitement à effectuer if debogage == True: print (u'Gestion des modèles')⏎ for p in range(1,limit6): if Modele[p] == PageTemp[0:position]: if debogage == True: print (Modele[p].encode(config.console_encoding, 'replace')) # 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 (contracted; show full) break elif Modele[p] == u'linguistique' or Modele[p] == u'ling': if (EstCodeLangue == "false" ) or (PageTemp.find(u'Catégorie:Langues' ) != -1 and (PageTemp.find(u'Catégorie:Langues') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u':Catégorie:Langues') + 1 != PageTemp.rfind(u'Catégorie:Langues')) ) or (PageTemp.find(u'{{Catégorie langue' ) != -1 and (PageTemp.find(u'{{Catégorie langue') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 )⏎ ⏎ ) or (PageTemp.find(u'Catégorie:Dialectes' ) != -1 and (PageTemp.find(u'Catégorie:Dialectes') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u':Catégorie:Dialectes') + 1 != PageTemp.rfind(u'Catégorie:Dialectes'))): PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: (contracted; show full) PageTemp2 = PageTemp[PageTemp.find(u'}}')+2:len(PageTemp)] PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2] PageTemp = PageTemp[PageTemp.find(u'}}')+2+PageTemp2.find(u'}}')+2:len(PageTemp)] break else: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] elif p < limit3: # Modèle sans paramètre PageEnd = PageEnd + PageTemp[0:position] + "}}" elif p < limit4: # Paragraphe avec code langue if EstCodeLangue == "true":⏎ if debogage == True: print u'Modèle sans paramètre' PageEnd = PageEnd + PageTemp[0:position] + "}}" elif p < limit4: if debogage == True: print u'Paragraphe potentiellement avec code langue' if EstCodeLangue == "true": if debogage == True: print u'avec' PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: if debogage == True: print u'sans'⏎ PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" elif p < limit5: # ⏎ if debogage == True: print u'ébauche : catégorisée quel que soit EstCodeLangue' if codelangue: PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" else: # Paragraphe régional⏎ if debogage == True: print u'Paragraphe régional : non catégorisé dans la prononciation' 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 PageTe(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'ò' or PageTitre[lettre:lettre+1] == u'ó' or PageTitre[lettre:lettre+1] == u'ö' or PageTitre[lettre:lettre+1] == u'Ö': PageT = PageT + "o" key = "yes" elif PageTitre[lettre:lettre+1] == u'œ' or PageTitre[lettre:lettre+1] == u'Œ': PageT = PageT + "oe" key = "yes" elif PageTitre[lettre:lettre+1] == u'ƥ' or PageTitre[lettre:lettre+1] == u'Ƥ': PageT = PageT + "p" (contracted; show full) return except wikipedia.BadTitle: print "BadTitle en sauvegarde" 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=14568943.
![]() ![]() 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.
|