Difference between revisions 14444358 and 14530462 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 ''' # 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 = False # Modèles du site à traiter limit6=93744 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[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' m' Modele[177] = u'f' Modele[178] = u'n' Modele[179] = u'c' Modele[180] = u'mf' Modele[181] = u'mf?' Modele[182] = u'préciser' Modele[183] = u'?' Modele[184] = u'doute' Modele[185] = u'trad' Modele[186] = u'trad+' Modele[187] = u'trad-' Modele[188] = u'trad--' Modele[189] = u'titre alt' Modele[190] = u'titre mis en forme' limit3 = 191 # 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[191] = u'enfantin' Modele[192] = u'épithète' Modele[193] = u'euphémisme' Modele[194] = u'ex-rare' Modele[195] = u'exagératif' Modele[196] = u'expression' Modele[197] = u'familier' Modele[198] = u'figuré' Modele[199] = u'formel' Modele[200] = u'gallicisme' Modele[201] = u'abréviation'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' 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' limit3 = 202 # 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' Modele[211] = u'interjection' Modele[212] = u'ironique' Modele[213] = u'litote' Modele[214] = u'littéraire' Modele[215] = u'm-courpéjoratif' Modele[216] = u'mélioratif' Modele[217] = u'métaphore' Modele[218] = u'métonymie' Modele[219] = u'mot-valise' Modele[220] = u'néologisme' Modele[221] = u'néol litt' Modele[222] = u'anglicisme' Modele[223] = u'antiquité' Modele[224] = u'ordinal' Modele[225] = u'palindrome' Modele[226] = u'archaïque' Modele[227] = u'poissons' Modele[228] = u'péjoratif' Modele[229] = u'pl-cour' Modele[230] = u'pl-rarvirologie' Modele[229] = u'viticulture' Modele[230] = u'zoologie' Modele[231] = u'plaisanterie' Modele[232] = u'poétique' Modele[233] = u'populaire' Modele[234] = u'propre' Modele[235] = u'proverbial' Modele[236] = u'rare' Modele[237] = u'sigle' (contracted; show full)Modele[418] = u'tourisme' Modele[419] = u'transport' Modele[420] = u'travail' Modele[421] = u'typographie' Modele[422] = u'télécommunications' Modele[423] = u'urbanisme' Modele[424] = u'vêtements' Modele[425] = u' virologie' Modele[426] = u'viticulture' Modele[427] = u'zoologie' Modele[428] = u'b-pl-courmarketing' Modele[426] = u'aphérèse' Modele[427] = u'apocope' Modele[428] = u'argot' Modele[429] = u'cardinal' Modele[430] = u'comparatif' 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' Modele[438] = u'badminton' Modele[438] = u'bases de données' Modele[439] = u'BDD' Modele[440] = u'pharma' Modele[441] = u'apiculture' Modele[442] = u'coiffure' Modele[443] = u'astronautique' Modele[444] = u'animaux' Modele[445] = u'plantes' Modele[446] = u'marketing' Modele[447] = u'aphérèse' Modele[448] = u'apocope' Modele[449] = u'argot' Modele[450] = u'b-m-courcapoeira' Modele[447] = u'jeu vidéo' Modele[448] = u'skate' Modele[449] = u'skateboard' Modele[450] = u'patin' Modele[451] = u'escalade' Modele[452] = u'archéo' Modele[453] = u'armement' Modele[454] = u'astrol' Modele[455] = u'astron' Modele[456] = u'audiovis' Modele[457] = u'automo' (contracted; show full)Modele[783] = u'acron' Modele[784] = u'pronominal' Modele[785] = u'abrév' Modele[786] = u'snowboard' Modele[787] = u'snow' Modele[788] = u'transitif' Modele[789] = u'intransitif' Modele[790] = u' capoeira' Modele[791] = u'jeu vidéo' limit4 = 792 # ébauches Modele[793] = u'ébauche-déf' Modele[794] = u'ébauche-étym' Modele[795] = u'ébauche-pron' Modele[796] = u'ébauche' Modele[797] = u'ébauche-exe' Modele[798] = u'ébauche-pron' Modele[799] = u'ébauche-syn' Modele[800] = u'ébauche-étym-nom-scientifique' Modele[801] = u'ébauche-trans' # 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 = 802 Modele[803] = u'Berry' Modele[804] = u'Bolivie' Modele[805] = u'Bordelais' Modele[806] = u'Bourgogne' Modele[807] = u'Brésil' Modele[808] = u'Bretagne' Modele[809] = u'Burkina Faso' Modele[810] = u'Cameroun'enfantin' Modele[791] = u'épithète' Modele[792] = u'euphémisme' Modele[793] = u'ex-rare' 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éf' Modele[803] = u'ébauche-étym' Modele[804] = u'ébauche-pron' Modele[805] = u'ébauche' 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' ''' # 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' Modele[816] = u'Colombie' Modele[817] = u'Commonwealth' (contracted; show full)Modele[927] = u'Argentine' Modele[928] = u'Australie' Modele[929] = u'Autriche' Modele[930] = u'Auvergne' Modele[931] = u'Baléares' Modele[932] = u'Belgique' Modele[933] = u'Luxembourg' Modele[934] = u'Bénin' ⏎ 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' # Modèles de pronociation à synchroniser Modele[9435] = 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) (contracted; show full)Template[78] = u'proto:sla-pro' TemplateFR[78] = u'proto-slave' Template[79] = u'proto:tupi-guarani' TemplateFR[79] = u'proto-tupi-guarani' Template[80] = u'proto:wint-pro' TemplateFR[80] = u'proto-wintuan' Template[81] = u'proto:cost-pro' TemplateFR[81] = u'proto- wintucostanoan' # Modification du wiki def modification(PageHS): summary = u'[[Wiktionnaire:Structure des articles|Autoformatage]]' if debogage == True: print u'------------------------------------' print(PageHS.encode(config.console_encoding, 'replace')) (contracted; show full) 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)] ⏎ # 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(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 PageTemp.find(u'{{clé de tri') == -1 and PageTemp.find(u'{{clef de tri') == -1: ClePage = CleDeTri(PageHS) if ClePage != u'' and ClePage != PageHS and ClePage.lower() != PageHS.lower(): '''if PageTemp.find(u'[[Catégorie:') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[[Catégorie:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Catégorie:'):len(PageTemp)] elif PageTemp.find(u'[[Category:') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[[Category:')] + u'\n{{clé de tri|' + ClePage + u'}}\n' + PageTemp[PageTemp.find(u'[[Category:'):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{{clé de tri|' + ClePage + u'}}\n' + PageTemp[re.search(regex,PageTemp).end():len(PageTemp)] except: print u'pb regex interwiki' else: PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n'''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() except wikipedia.NoPage: print "NoPage l 1392" return else: return''' #print u'en travaux : ajouter un modèle de navigation en couleur ou modèle en Lua ?' # Création de l'adjectif correspondant PageHSMin = PageHS[0:1].lower() + PageHS[1:] if PageHSMin != PageHS: PageMin = Page(site,PageHSMin) if not PageMin.exists(): if PageHS[0:1] == u'a' or PageHS[0:1] == u'e' or PageHS[0:1] == u'i' or PageHS[0:1] == u'o' or PageHS[0:1] == u'u' or PageHS[0:1] == u'y' or PageHS[0:1] == u'é' or PageHS[0:1] == u'è' or PageHS[0:1] == u'à' or PageHS[0:1] == u'A' or PageHS[0:1] == u'E' or PageHS[0:1] == u'I' or PageHS[0:1] == u'O' or PageHS[0:1] == u'U' or PageHS[0:1] == u'Y' or PageHS[0:1] == u'É' or PageHS[0:1] == u'È' or PageHS[0:1] == u'À': article = u"à l’" else: article = u"au " if PageHS[len(PageHS)-2:len(PageHS)] == u'en': modeleFlex = u'{{fr-accord-en}}' else: modeleFlex = u'{{fr-rég}}' PageEnd2 = u"{{voir|" + PageHS + u"}}\n=={{langue|fr}}==\n{{-étym-}}\n:{{cf|" + PageHS + u"}}.\n\n{{-adj-|fr}}\n" + modeleFlex + u"\n'''{{subst:PAGENAME}}\''' {{pron||fr}} {{m}}\n# Relatif " + article + u"[[" + PageHS + u"]].\n\n{{-trad-}}\n{{ébauche-trad}}" 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(u'{{clé de tri') == -1 and PageTemp.find(u'{{clef 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: (contracted; show full) 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 debogage == True: print u'Remplacements des modèles' if PageTemp.find(u'Catégorie:Périodes géologiques en français') != -1 and PageTemp.find(u'{{Temps géologiques') == -1: print u'en travaux : ajouter un modèle de navigation en couleur ?' PageTemp = re.sub(ur'{{(formatnum|Formatnum|FORMATNUM)\:([0-9]*) ', ur'{{\1:\2if 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: 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)⏎ 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): i1 = re.search(u'{{T\|.*\n\n\*[ ]*{{T\|',PageTemp).end() PageTemp = PageTemp[:i1][0:PageTemp[:i1].rfind(u'\n')-1] + PageTemp[:i1][PageTemp[:i1].rfind(u'\n'):len(PageTemp[:i1])] + PageTemp[i1:] (contracted; show full) if (EstCodeLangue == "false" ) or (PageTemp.find(u'Catégorie:Gentilés' ) != -1 and (PageTemp.find(u':Catégorie:Gentilés') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u':Catégorie:Gentilés') + 1 != PageTemp.rfind(u'Catégorie:Gentilés')) ) or (PageTemp.find(u'{{note-gentilé' ) != -1 and (PageTemp.find(u'{{note-gentilé') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u'{{note-gentilé') + 1 != PageTemp.rfind(u'{{note-gentilé'))⏎ ⏎ ) or (PageTemp.find(u'Catégorie:Continents' ) != -1 and (PageTemp.find(u':Catégorie:Continents') < PageTemp.find(u'{{langue|') and PageTemp.find(u'{{langue|') != -1 or PageTemp.find(u'{{langue|') == -1 ) and (PageTemp.find(u':Catégorie:Continents') + 1 != PageTemp.rfind(u'Catégorie:Continents')) ) or (PageTemp.find(u'Catégorie:Pays' (contracted; show full) PageEnd = PageEnd + PageTemp[0:4] + "-" PageTemp = PageTemp[position:len(PageTemp)] break except wikipedia.ServerError: PageEnd = PageEnd + PageTemp[0:4] + "-" PageTemp = PageTemp[position:len(PageTemp)] break except pywikibot.exceptions.InvalidTitle: PageEnd = PageEnd + PageTemp[0:4] + "-" PageTemp = PageTemp[position:len(PageTemp)] break⏎ if pageExt.exists(): PageEnd = PageEnd + PageTemp[0:4] + "+" PageTemp = PageTemp[position:len(PageTemp)] break else: PageEnd = PageEnd + PageTemp[0:4] + "-" PageTemp = PageTemp[position:len(PageTemp)] break (contracted; show full) PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'}}')+2] elif p < limit2: # Paragraphe sans code langue EstCodeLangue = "false" trad = u'false' PageEnd = PageEnd + PageTemp[0:position] + "}}" elif p < limit 325: # Paragraphe sans code langue contenant un texte EstCodeLangue = "false" trad = u'false' if PageTemp.find(u'}}') > PageTemp.find(u'{{') and PageTemp.find(u'{{') != -1: 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": PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" else: PageEnd = PageEnd + PageTemp[0:position] + "|nocat=1}}" elif p < limit5: # ébauche : catégorisée quel que soit EstCodeLangue if codelangue: PageEnd = PageEnd + PageTemp[0:position] + "|" + codelangue + "}}" (contracted; show full) PagesHS.close() # Traitement d'une catégorie def crawlerCat(category,recursif,apres): modifier = u'False' cat = catlib.Category(site, category) pages = cat.articlesList(False) for Page in pagegenerators.PreloadingGenerator(pagesgen = pagegenerators.NamespaceFilterPageGenerator(pages, [0]) for Page in pagegenerators.PreloadingGenerator(gen,100): if not apres or apres == u'' or modifier == u'True': modification(Page.title()) #crawlerLink(Page.title()) elif Page.title() == apres: modifier = u'True' if recursif == True: subcat = cat.subcategories(recurse = True) for subcategory in subcat: pages = subcategory.articlesList(False) for Page in pagegenerators.PreloadingGenerator(pages,100): modification(Page.title()) # Traitement des pages liées def crawlerLink(pagename,apres): modifier = u'False' #pagename = unicode(arg[len('-links:'):], 'utf-8') page = wikipedia.Page(site, pagename) gen = pagegenerators.ReferringPageGenerator(page) #gen = pagegenerators.NamespaceFilterPageGenerator(gen, namespaces[0]) for Page in pagegenerators.PreloadingGenerator(gen,100): #print(Page.title().encode(config.console_encoding, 'replace')) if not apres or apres == u'' or modifier == u'True': modification(Page.title()) #crawlerLink(Page.title()) elif Page.title() == apres: modifier = u'True' # Traitement des pages liées des entrées d'une catégorie def crawlerCatLink(pagename,apres): modifier = u'False' cat = catlib.Category(site, pagename) pages = cat.articlesList(False) for Page in pagegenerators.PreloadingGenerator(pages,100): page = wikipedia.Page(site, Page.title()) gen = pagegenerators.ReferringPageGenerator(page) #gen = pagegenerators.NamespaceFilterPageGenerator(gen, namespaces[0]) for PageLiee in pagegenerators.PreloadingGenerator(gen,100): #print(Page.title().encode(config.console_encoding, 'replace')) if not apres or apres == u'' or modifier == u'True': modification(PageLiee.title()) #crawlerLink(Page.title()) elif PageLiee.title() == apres: modifier = u'True' (contracted; show full) except wikipedia.BadTitle: print "BadTitle en sauvegarde" return except AttributeError: print "AttributeError en sauvegarde" return # Lancement Traitement Categorie = crawlerCat(u'Catégorie:Périodes géologiques en français',False,u'')⏎ Liens = crawlerLink(u'Modèle:moins courant',u'Sénégalais') ''' # Quotidiennement : 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'') TraitementLiens = crawlerLink(u'Modèle:R:DAF8',u'') TraitementLiens = crawlerLink(u'Modèle:Import:DAF8',u'') TraitementLiens = crawlerLink(u'Modèle:R:Littré',u'') TraitementLiens = crawlerLink(u'Modèle:Import:Littré',u'') # Modèles TraitementPage = modification(u'Utilisateur:JackBot/test') TraitementLiens = crawlerLink(u'Modèle:R:DAF8',u'homme# Modèles 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=14530462.
![]() ![]() 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.
|