Difference between revisions 13918449 and 14011399 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. # 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. # 5) Complète les flexions de verbes à vérifier. # 6) Traduit les importations de en.wikt. # 7) Gère des modèles {{voir}} en début de page. # Importation des modules import catlib, pagegenerators, os, codecs, urllib, re, collections, socket from wikipedia import * # Déclaration language = "fr" family = "wiktionary" mynick = "JackBot" site = getSite(language,family) # Modèles du site à traiter limit6=9237 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[759] = u'f' Modele[760] = u'n' Modele[761] = u'c' Modele[762] = u'mf' Modele[763] = u'mf?' Modele[764] = u'impers' Modele[765] = u'impersonnel' #Modele[766] = u'région' #Modele[767] = u'régio' #Modele[767] = u'régional'⏎ Modele[768] = u'CB' Modele[769] = u'mah-jong' Modele[770] = u'mahjong' Modele[771] = u'majong' Modele[772] = u'réseau' Modele[773] = u'réseaux informatiques' Modele[774] = u'déverbal' Modele[775] = u'superlatif' Modele[776] = u'combat' Modele[777] = u'sports de combat' Modele[778] = u'capoeira' Modele[779] = u'aïkido' Modele[780] = u'karaté' Modele[781] = u'argot militaire' Modele[782] = u'argot polytechnicien' Modele[783] = u'ski alpin' Modele[784] = u'ski de fond' Modele[785] = u'réseau' Modele[786] = u'canoë-kayak' Modele[787] = u'canoë' Modele[788] = u'scol' Modele[789] = u'obsolète' Modele[789] = u'surf' Modele[790] = u'édition' Modele[791] = u'fortification' Modele[792] = u'dentisterie' Modele[793] = u'artillerie' Modele[794] = u'fonderie'⏎ limit5 = 7915 # non traités #Modele[] = u'spécialement' #Modele[] = u'T' # Modèles régionaux, pb du nocat pour les prononciations Modele[791] = u'Amérique latine' Modele[792] = u'Anjou' Modele[793] = u'Antilles' Modele[794] = u'Aquitaine'⏎ Modele[795] = u'Argentine' Modele[796] = u'Australie' Modele[797] = u'Autriche' Modele[798] = u'Auvergne' Modele[799] = u'Baléares' Modele[800] = u'Belgique' Modele[801] = u'Luxembourg' Modele[802] = u'Bénin' (contracted; show full)Modele[914] = u'Afrique' Modele[915] = u'Afrique du Sud' Modele[916] = u'Algérie' Modele[917] = u'Allemagne' Modele[918] = u'Alsace' Modele[919] = u'Amérique centrale' Modele[920] = u'Amérique du Nord' Modele[921] = u'Amérique du Sud' ⏎ Modele[922] = u'Amérique latine' Modele[923] = u'Anjou' Modele[924] = u'Antilles' Modele[925] = u'Aquitaine' # Modèles des autres Wiktionnaires à convertir LimitTemplate = 66 Template = range(1, LimitTemplate+1) TemplateFR = range(1, LimitTemplate+1) Template[1] = u'===Adjective===' TemplateFR[1] = u'{{-adj-}}' (contracted; show full) return else: print "NoPage l 1118" return PageTemp = PageBegin while PageTemp.find(u'{{ ') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{ ')+2] + PageTemp[PageTemp.find(u'{{ ')+3:len(PageTemp)] ⏎ ⏎ if PageTemp.find(u'{{formater') != -1 or PageTemp.find(u'{{supp') != -1: print "Page en suppressiontravaux" return # Traductions des modèles des autres Wiktionnaires for p in range(1,LimitTemplate): while PageTemp.find(Template[p]) != -1: PageTemp = PageTemp[0:PageTemp.find(Template[p])] + TemplateFR[p] + PageTemp[PageTemp.find(Template[p])+len(Template[p]):len(PageTemp)] # Ajout des {{voir}} if PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}')+len(u'{{voir|')] + PageHS[0:1].lower() + PageHS[1:len(PageHS)] + PageTemp[PageTemp.find(u'{{voir|{{lc:{{PAGENAME}}}}}}')+len(u'{{voir|{{lc:{{PAGENAME}}}}'):len(PageTemp)] summary = summary + u', subst de {{lc:{{PAGENAME}}}}' if PageTemp.find(u'{{voir|{{ucfirst:{{PAGENAME}}}}}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir|{{ucfirst:{{PAGENAME}}}}}}')+len(u'{{voir|')] + PageHS[0:1].upper() + PageHS[1:len(PageHS)] + PageTemp[PageTemp.find(u'{{voir|{{ucfirst:{{PAGENAME}}}}}}')+len(u'{{voir|{{ucfirst:{{PAGENAME}}}}'):len(PageTemp)] summary = summary + u', subst de {{ucfirst:{{PAGENAME}}}}' if PageTemp.find(u'{{voir|{{LC:{{PAGENAME}}}}}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir|{{LC:{{PAGENAME}}}}}}')+len(u'{{voir|')] + PageHS[0:1].lower() + PageHS[1:len(PageHS)] + PageTemp[PageTemp.find(u'{{voir|{{LC:{{PAGENAME}}}}}}')+len(u'{{voir|{{LC:{{PAGENAME}}}}'):len(PageTemp)] summary = summary + u', subst de {{LC:{{PAGENAME}}}}' if PageTemp.find(u'{{voir|{{UCFIRST:{{PAGENAME}}}}}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir|{{UCFIRST:{{PAGENAME}}}}}}')+len(u'{{voir|')] + PageHS[0:1].upper() + PageHS[1:len(PageHS)] + PageTemp[PageTemp.find(u'{{voir|{{UCFIRST:{{PAGENAME}}}}}}')+len(u'{{voir|{{UCFIRST:{{PAGENAME}}}}'):len(PageTemp)] summary = summary + u', subst de {{UCFIRST:{{PAGENAME}}}}' ⏎ if PageTemp.find(u'{{voir|') == -1 and PageTemp.find(u'{{voir/') == -1: PageVoir = u'' # Liste de toutes les pages potentiellement "à voir" PagesCleTotal = PageHS if PagesCleTotal.find(PageHS.lower()) == -1: PagesCleTotal = PagesCleTotal + u'|' + PageHS.lower() if PagesCleTotal.find(PageHS.upper()) == -1: PagesCleTotal = PagesCleTotal + u'|' + PageHS.upper() (contracted; show full) # Nettoyage if PageTemp.find(u'{{voir}}\n') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}\n')] + PageTemp[PageTemp.find(u'{{voir}}\n')+len(u'{{voir}}\n'):len(PageTemp)] if PageTemp.find(u'{{voir}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{voir}}')] + PageTemp[PageTemp.find(u'{{voir}}')+len(u'{{voir}}'):len(PageTemp)] # Clés 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: 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' else:""" PageTemp = PageTemp + u'\n\n{{clé de tri|' + ClePage + u'}}\n' else: PageTemp2 = PageTemp[PageTemp.find(u'{{clé de tri'):len(PageTemp)] ClePage = PageTemp2[PageTemp2.find(u'|')+1:PageTemp2.find(u'}}')] if CleDeTri(PageHS) != ClePage: print (u'Fausse clé de tri dans :') print (PageHS.encode(config.console_encoding, 'replace')) (contracted; show full) while PageTemp.find(u'ʼ') != -1: PageTemp = PageTemp[0:PageTemp.find(u'ʼ')] + u'ʼ' + PageTemp[PageTemp.find(u'ʼ')+len(u'ʼ'):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)] ⏎ 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:] while PageTemp.find(u'ʼ') != -1: (contracted; show full) while PageTemp.find(u'{{-réf-}}\n{{Import:DAF8}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{Import:DAF8}}')] + u'*' + PageTemp[PageTemp.find(u'{{Import:DAF8}}'):len(PageTemp)] while PageTemp.find(u'{{-réf-}}\n{{Import:Littré}}') != -1: PageTemp = PageTemp[0:PageTemp.find(u'{{Import:Littré}}')] + u'*' + PageTemp[PageTemp.find(u'{{Import:Littré}}'):len(PageTemp)] while PageTemp.find(u'[http://') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[http://')+1] + PageTemp[PageTemp.find(u'[http://')+6:len(PageTemp)] while PageTemp.find(u'[https://') != -1: PageTemp = PageTemp[0:PageTemp.find(u'[https://')+1] + PageTemp[PageTemp.find(u'[https://')+7:len(PageTemp)] ⏎ # Classement des traductions PageEnd = u'' while PageTemp.find(u'{{T|') != -1: PageEnd = PageEnd + PageTemp[0:PageTemp.find(u'{{T|')] PageTemp = PageTemp[PageTemp.find(u'{{T|'):len(PageTemp)] # Rangement de la ligne de la traduction par ordre alphabétique de la langue dans PageEnd langue1 = PageTemp[PageTemp.find(u'{{T|')+4:PageTemp.find(u'}')] (contracted; show full) PageTemp = u'' #print(PageEnd.encode(config.console_encoding, 'replace')) #print(PageTemp.encode(config.console_encoding, 'replace')) PageTemp = PageEnd + PageTemp PageEnd = u''""" # Ajout des anagrammes francophones (prévoir si {{lien|}} pour les autres) if socket.gethostname() != u'willow':⏎ 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) anagrammes = anagram(PageHS) ListeAnagrammes = u'' for anagramme in anagrammes: if anagramme != PageHS: pageAnagr = Page(site,anagramme) #print anagramme.encode(config.console_encoding, 'replace') 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|fr}}') != -1: ListeAnagrammes = ListeAnagrammes + u'* [[' + anagramme + u']]\n' if ListeAnagrammes != u'': position = PageTemp.find(u'{{langue|fr}}')+len(u'{{langue|fr}}') 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 # Remplacement des codes langues while PageTemp.find(u'=prv=') != -1: PageTemp = PageTemp[0:PageTemp.find(u'=prv=')] + u'langue|oc' + PageTemp[PageTemp.find(u'=prv=')+len(u'=prv='):len(PageTemp)] AncienModele = range(1, 13) NouveauModele = range(1, 13) AncienModele[1] = u'ko-hanja' (contracted; show full) if source: PagesHS = open(source, 'r') while 1: PageHS = PagesHS.readline() fin = PageHS.find("\t") PageHS = PageHS[0:fin] if PageHS == '': break if PageHS.find(u'[[') != -1: PageHS = PageHS[PageHS.find(u'[[')+2:len(PageHS)] if PageHS.find(u']]') != -1: PageHS = PageHS[0:PageHS.find(u']]')]⏎ modification(PageHS) PagesHS.close() # Traitement d'une catégorie def crawlerCat(category,recursif,apres): modifier = u'False' cat = catlib.Category(site, category) pages = cat.articlesList(False) (contracted; show full)TraitementRecherche = crawlerSearch(u'chinois') 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=14011399.
![]() ![]() 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.
|