logger.py 3.32 KB
Newer Older
Linedwell's avatar
Linedwell committed
1 2 3 4 5 6 7 8
#!/usr/bin/python
# -*- coding: utf-8 -*-
# author : [[fr:User:Linedwell]]

import sys
sys.path.insert(1, '..') #ajoute au PYTHONPATH le répertoire parent

import time
9 10
from datetime import date, datetime, timedelta

Linedwell's avatar
Linedwell committed
11 12 13 14 15
import pywikibot

#Variables globales

site = pywikibot.getSite()
16 17
month = [u'',u'Janvier',u'Février',u'Mars',u'Avril',u'Mai',u'Juin',u'Juillet',u'Août',u'Septembre',u'Octobre',u'Novembre',u'Décembre']

18 19
summaryHeader = {
    'wikipedia' : u'[[WP:Bot|Robot]] : ',
Linedwell's avatar
Linedwell committed
20
    'vikidia' : u'[[VD:Robot|Robot]] : ',
21
}
Linedwell's avatar
Linedwell committed
22 23


24
#Met à jour la page de journalisation du bot
25
def editLog(site,log,page='Utilisateur:LinedBot/Log',summary='',ar=True,cl=False):
26 27 28 29 30
    if log != '':
        family = site.family.name
        year = time.strftime('%Y')
        pageLog = pywikibot.Page(site,page)
        pageArchive = pywikibot.Page(site,pageLog.title() + '/' + str(int(year) - 1))
31
        
32 33 34 35
        if ar and not pageArchive.exists():
            pageLogTemp = archive(site,pageLog,pageArchive)
        else:
            pageLogTemp = pageLog.get()
36 37
        
        if cl > 0:
38
            pageLogTemp = clean(pageLogTemp,cl)
39

Linedwell's avatar
Linedwell committed
40
        if pageLogTemp.find(u'== ' + month[int(time.strftime('%m'))] + ' ==') == -1: pageLogTemp += u'\n\n== ' + month[int(time.strftime('%m'))] + ' =='
41
        if pageLogTemp.find(u'=== ' + time.strftime('%Y-%m-%d') + ' ===') != -1: pageLogTemp += '\n' + log
42 43
        else :
            pageLogTemp += '\n' + u'=== ' + time.strftime('%Y-%m-%d') + ' ===\n' + log
44 45 46 47
        if summary == '':
            summary = summaryHeader[family] + u"Mise à jour du journal (OK:" + str(nbrModif) + ", KO:" + str(nbrTotal - nbrModif) +")"
        else:
            summary= summaryHeader[family] + summary
48 49
        pageLog.text = pageLogTemp
        pageLog.save(summary)
Linedwell's avatar
Linedwell committed
50 51

#Archive la page de journalisation du bot et réinitialise la page pour la nouvelle année
52
def archive(site,pageLog,pageArchive):
53
    family = site.family.name
Linedwell's avatar
Linedwell committed
54 55
    pageLog.move(pageArchive.title(),u'Archivage annuel') #Déplacement de pageLog vers pageArchive
    pageArchive = pywikibot.Page(site,pageArchive.title())
Linedwell's avatar
Linedwell committed
56
	
Linedwell's avatar
Linedwell committed
57 58 59 60
    #Retrait du modèle de mise à jour de pageArchive
    pageArchiveTemp = pageArchive.get(force=True,get_redirect=True)
    pageArchiveTemp = pageArchiveTemp.replace(u'{{Mise à jour bot|Linedwell}}\n','',1)
    summary = summaryHeader[family] + u"Retrait de {{Mise à jour bot}}, page d'archive n'étant plus mise à jour"
61 62
    pageArchive.text = pageArchiveTemp
    pageArchive.save(summary,force=True)
Linedwell's avatar
Linedwell committed
63
	
Linedwell's avatar
Linedwell committed
64 65
    pageLogTemp = u'__NOINDEX__\n{{Mise à jour bot|Linedwell}}\n{{Sommaire|niveau=1}}\n' #On réinsère le modèle de màj sur pageLog
    return pageLogTemp
66

67 68 69 70 71 72
#Supprime les sections plus vieilles que X jours
def clean(pageTemp, days=30):
    limit = datetime.utcnow() - timedelta(days=days)
    date = limit.strftime("%Y-%m-%d")
    index = pageTemp.find(u'=== ' + date + ' ===')
    if index != -1:
Linedwell's avatar
Linedwell committed
73
        pageHeader = u'__NOINDEX__\n{{Mise à jour bot|Linedwell}}\n{{Palette|Admissibilité à vérifier}}\n{{Sommaire|niveau=2}}\n{{/graphe}}\n\n'
74 75 76 77 78
        monthSection = u'== ' + month[int(limit.strftime('%m'))] + ' ==\n'
        
        pageTemp = pageHeader + monthSection + pageTemp[index:]
    return pageTemp

Linedwell's avatar
Linedwell committed
79 80 81 82
def setValues(nbTotal, nbModif):
	global nbrTotal, nbrModif
	nbrTotal = nbTotal
	nbrModif = nbModif