Utilisateur:DSisyphBot/Script/evaluationsdetaillees.py

#-*- coding:latin-1 -*-

import wikipedia
import urllib
import sys
import pagegenerators
import catlib
import interwiki

def replace1(comment):
        comment = comment.replace(u" ",u"%20")
        comment = comment.replace(u"é",u"%C3%A9")
        comment = comment.replace(u"à",u"%C3%A0")
        comment = comment.replace(u"ï",u"%C3%AF")
        comment = u'''<span class="plainlinks">[http://toolserver.org/~bayo/intercat.php?'''+comment+u' '
	return comment

def main():
        biblio = ([u"Article de natation",u"Natation"],
                  [u"Article de cricket",u"Cricket"],
                  [u"Article de hockey sur glace",u"Hockey sur glace"],
                  [u"Article de sports d'hiver",u"Sports d'hiver"],
                  [u"Article football",u"Football"],
                  [u"Article ferroviaire",u"Chemin de fer"],
                  [u"Article sur la Boxe anglaise",u"Boxe anglaise"],
                  [u"Article Essonne",u"Essonne"],
                  [u"Article sur la mythologie nordique",u"Mythologie nordique"],
                  [u"Article baseball",u"Baseball"],
                  [u"Article de sports d'hiver",u"Sports d'hiver"],
                  [u"Article de basket-ball",u"Basket-ball"],
                  [u"Article Juifs et judaïsme",u"Judaïsme"],
                  
                  [u"Article Colombie",u"Colombie"],
                  [u"Article Spirou",u"Spirou"],
                  [u"Article de rugby à XV",u"Rugby à XV"],
                  [u"Article d'athlétisme",u"Athlétisme"],
                 
                  [u"Article Essonne",u"Essonne"],
                  [u"Article sur la mythologie nordique",u"Mythologie nordique"],)
        for demande in biblio:
                pause = input(u'pause')
                theme= demande[0]
                projet = demande[1]
                site = wikipedia.getSite('fr','wikipedia')

                c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10= [],[],[],[],[],[],[],[],[],[],[]
                c11,c12,c13,c14,c15,c16,c17,c18,c19,c20= [],[],[],[],[],[],[],[],[],[]
                c21,c22,c23,c24,c25,c26,c27,c28,c29,c30= [],[],[],[],[],[],[],[],[],[]
                c31,c32,c33,c34,c35,c36,c37,c38,c39,c40= [],[],[],[],[],[],[],[],[],[]
                c41,c42,c43,c44,c45,c46,c47,c48= [],[],[],[],[],[],[],[]

                cell = (c0, c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c40,c41,c42,c43,c44,c45,c46,c47,c48)


                avancementAdQ = u" d'avancement AdQ"
                avancementA = u" d'avancement A"
                avancementBA = u" d'avancement BA"
                avancementB = u" d'avancement B"
                avancementBD = u" d'avancement BD"
                avancementebauche = u" d'avancement ébauche"
                avancementinconnu = u" d'avancement inconnu"
                avancement = (avancementAdQ,avancementA,avancementBA,avancementB,avancementBD,avancementebauche,avancementinconnu)
                
                catAdQ = catlib.Category(site, u"Catégorie:"+theme+avancementAdQ)
                pageAdQ = catAdQ.articlesList(False)
                catA = catlib.Category(site, u"Catégorie:"+theme+avancementA)
                pageA = catA.articlesList(False)
                catBA = catlib.Category(site, u"Catégorie:"+theme+avancementBA)
                pageBA = catBA.articlesList(False)
                catB = catlib.Category(site, u"Catégorie:"+theme+avancementB)
                pageB = catB.articlesList(False)
                catBD = catlib.Category(site, u"Catégorie:"+theme+avancementBD)
                pageBD = catBD.articlesList(False)
                catebauche = catlib.Category(site, u"Catégorie:"+theme+avancementebauche)
                pageebauche = catebauche.articlesList(False)
                catinconnu = catlib.Category(site, u"Catégorie:"+theme+avancementinconnu)
                pageinconnu = catinconnu.articlesList(False)
                
                pageavancement = (pageAdQ,pageA,pageBA,pageB,pageBD,pageebauche,pageinconnu)

                importancemaximum = u" d'importance maximum"
                importanceelevee = u" d'importance élevée"
                importancemoyenne = u" d'importance moyenne"
                importancefaible = u" d'importance faible"
                importanceinconnue = u" d'importance inconnue"
                importance = (importancemaximum,importanceelevee,importancemoyenne,importancefaible,importanceinconnue)

                catmaximum = catlib.Category(site, u"Catégorie:"+theme+importancemaximum)
                pagemaximum = catmaximum.articlesList(False)
                catelevee = catlib.Category(site, u"Catégorie:"+theme+importanceelevee)
                pageelevee = catelevee.articlesList(False)
                catmoyenne = catlib.Category(site, u"Catégorie:"+theme+importancemoyenne)
                pagemoyenne = catmoyenne.articlesList(False)
                catfaible = catlib.Category(site, u"Catégorie:"+theme+importancefaible)
                pagefaible = catfaible.articlesList(False)
                catinconnue = catlib.Category(site, u"Catégorie:"+theme+importanceinconnue)
                pageinconnue = catinconnue.articlesList(False)

                pageimportance = (pagemaximum,pageelevee,pagemoyenne,pagefaible,pageinconnue)

                for i in range(0,7,1):
                        for p in pagegenerators.PreloadingGenerator(pageavancement[i],1000):
                                pagename = p.title()
                                if p.namespace()==1:
                                        cell[6*(i+1)].append(pagename)

                for i in range(0,5,1):
                        for p in pagegenerators.PreloadingGenerator(pageimportance[i],1000):
                                pagename = p.title()
                                if p.namespace()==1:
                                        cell[i+43].append(pagename)

                        
                wikipedia.output(u'Intersection des pages')

                for i in range(6,43,6):
                        print i
                        for c in cell[i]:
                                if c in c43:
                                        cell[i-5].append(c)
                                elif c in c44:
                                        cell[i-4].append(c)
                                elif c in c45:
                                        cell[i-3].append(c)
                                elif c in c46:
                                        cell[i-2].append(c)
                                elif c in c47:
                                        cell[i-1].append(c)
                                else:
                                        wikipedia.output(pagename)
                for c in cell:
                        c = sorted(list(set(c)))


                if 1==1:

                        base = u'''<!-- BEGIN BOT SECTION -->{{Utilisateur:NicDumZ/Eval Detail
| 1 = 
| 2 = 
| 3 = 
| 4 = 
| 5 = 
| 6 = [[:Catégorie:'''+theme+u''' d'avancement AdQ|{{formatnum:'''+str(len(c6))+u'''}}]]
| 7 = 
| 8 = 
| 9 = 
| 10 = 
| 11 = 
| 12 = [[:Catégorie:'''+theme+u''' d'avancement A|{{formatnum:'''+str(len(c12))+u'''}}]]
| 13 = 
| 14 = 
| 15 = 
| 16 = 
| 17 = 
| 18 = [[:Catégorie:'''+theme+u''' d'avancement BA|{{formatnum:'''+str(len(c18))+u'''}}]]
| 19 = 
| 20 = 
| 21 = 
| 22 = 
| 23 = 
| 24 = [[:Catégorie:'''+theme+u''' d'avancement B|{{formatnum:'''+str(len(c24))+u'''}}]]
| 25 = 
| 26 =
| 27 = 
| 28 = 
| 29 = 
| 30 = [[:Catégorie:'''+theme+u''' d'avancement BD|{{formatnum:'''+str(len(c30))+u'''}}]]
| 31 = 
| 32 = 
| 33 = 
| 34 =
| 35 = 
| 36 = [[:Catégorie:'''+theme+u''' d'avancement ébauche|{{formatnum:'''+str(len(c36))+u'''}}]]
| 37 = 
| 38 = 
| 39 = 
| 40 = 
| 41 = 
| 42 = [[:Catégorie:'''+theme+u''' d'avancement inconnu|{{formatnum:'''+str(len(c42))+u'''}}]]
| 43 = [[:Catégorie:'''+theme+u''' d'importance maximum|{{formatnum:'''+str(len(c43))+u'''}}]]
| 44 = [[:Catégorie:'''+theme+u''' d'importance élevée|{{formatnum:'''+str(len(c44))+u'''}}]]
| 45 = [[:Catégorie:'''+theme+u''' d'importance moyenne|{{formatnum:'''+str(len(c45))+u'''}}]]
| 46 = [[:Catégorie:'''+theme+u''' d'importance faible|{{formatnum:'''+str(len(c46))+u'''}}]]
| 47 = [[:Catégorie:'''+theme+u''' d'importance inconnue|{{formatnum:'''+str(len(c47))+u'''}}]]
| 48 = {{formatnum:'''+str(len(c43)+len(c44)+len(c45)+len(c46))+u'''}}
| projet = '''+projet+u'''
}}
<!-- END BOT SECTION -->'''
                        for i in range(1,42,1):
                                if len(cell[i])>0 and i%6!=0:
                                        if i%6==1:
                                                importance = importancemaximum
                                        elif i%6==2:
                                                importance = importanceelevee
                                        elif i%6==3:
                                                importance = importancemoyenne
                                        elif i%6==4:
                                                importance = importancefaible
                                        elif i%6==5:
                                                importance = importanceinconnue
                                        if i<7:
                                                avancement = avancementAdQ
                                        elif i<13:
                                                avancement = avancementA
                                        elif i<19:
                                                avancement = avancementBA
                                        elif i<25:
                                                avancement = avancementB
                                        elif i<31:
                                                avancement = avancementBD
                                        elif i<37:
                                                avancement = avancementebauche
                                        elif i<43:
                                                avancement = avancementinconnu
                                        
                                        comment =  u'''formCat1='''+theme+avancement+u'''&formCat2='''+theme+importance
                                        comment = replace1(comment)
                                        base = base.replace(u'| '+str(i)+u' =',u'| '+str(i)+u' = '+comment + u'{{formatnum:'+str(len(cell[i])) + u'}}]</span>')

                        page = wikipedia.Page(site, u"Projet:" + projet +u"/Évaluation/Statistiques détaillées")
                        text = page.get()
                        debut = text[:text.find(u'<!-- BEGIN BOT SECTION -->')]
                        fin = text[text.find(u'<!-- END BOT SECTION -->')+24:]
                        base = debut+base+fin

                        fz = open(u'Result.txt','w')
                        #fz.write('#{{a|' + pagename.encode('utf-8') + '}}\n')
                        fz.write(base.encode('utf-8'))
                        fz.close()

                        if len(c6)+len(c12)+len(c18)+len(c24)+len(c30)+len(c36)+len(c42)==len(c43)+len(c44)+len(c45)+len(c46)+len(c47):
                                wikipedia.showDiff(text, base)
                                choice = 'u'
                                choice = wikipedia.inputChoice(u'upload, Skip', [ 'upload', 'Skip' ], ['u', 'S'], 's')
                                if choice == 'u':
                                        comment = u'Mise à jour des statistiques WP 1.0 (prise en charge temporaire)'
                                        page.put(base,comment)

                        
                        else:
                                message = input(u'Erreur de totaux, double evaluation probable')
                                avancement = c6+c12+c18+c24+c30+c36+c42
                                importance = c43+c44+c45+c46+c47
                                print len(avancement), len(importance)
                                for c in avancement:
                                        if c not in importance:
                                                wikipedia.output(c)
                                for c in importance:
                                        if c not in avancement:
                                                wikipedia.output(c)
                                fz = open(u'Result.txt','w')
                                #fz.write('#{{a|' + pagename.encode('utf-8') + '}}\n')
                                fz.write(str(sorted(list(importance))).encode('utf-8'))
                                fz.close()
                                
                                

				
if __name__ == '__main__':
	try:
		main()
	finally:
		wikipedia.stopme()