Főmenü megnyitása

A scriptet Itt BinBot beszél a toolserverről automatikusan futtatja havonta kétszer.

# -*- coding: utf-8 -*-
"""
Ez a script létrehozza az aktuális hónap figyelmet igénylő kategóriáit;
ha 25-e után futtatjuk, akkor a következő hónapéit is, 
a nap képe havi archívumával és a havi tmb-kategóriával együtt.
A korábbi hónapok kategóriáit végignézi, és az üreseket azonnalizza.
A magyar Wikipédiára van tervezve, máshol nem lehet tudni, mit fog csinálni.
Első futása: 2011. március 12. Napképe-funkció: 2011. december 30.
(C) Bináris, 2011

ato, 2015. 06. 07.:
Migrálva a pywikibot core-ra.
"""

import time
import pywikibot
#from binbotutils import levelez #Másnak nem szükséges

class figyelmesbot(object):
    def __init__(self):
        global hiba
        self.site = site
        self.summary = u'A havi karbantartási kategóriák egységes elkészítése bottal'
        self.ev  = time.localtime()[0]
        self.ho  = time.localtime()[1]
        self.nap = time.localtime()[2]
        self.fajta = [
            u'Figyelmet igénylő lapok',
            u'Csonkok',
            u'Forráshivatkozásra váró lapok',
            u'Lektorálandó lapok',
            u'Vitatott semlegességű lapok',
            ]
        self.honapok =  [
            u'januárjából',
            u'februárjából',
            u'márciusából',
            u'áprilisából',
            u'májusából',
            u'júniusából',
            u'júliusából',
            u'augusztusából',
            u'szeptemberéből',
            u'októberéből',
            u'novemberéből',
            u'decemberéből',
            ]

    def monthtext(self,month):
        return self.honapok[month-1]

    #Mentés
    def ment(self,name,text,summary):
        kat = pywikibot.Category(self.site,name)
        try:
            #Teszteléshez:
            # pywikibot.output(name)
            # pywikibot.output(text)
            kat.put(text,comment=summary)
        except:
            #Nem szelektálunk, toolserverről fog futni, e-mailezzen
            hiba =  True

    #A havi gyűjtőkategória előállítása
    def havikat(self,year,month):
        neve = self.fajta[0] + ' %d ' % year + self.monthtext(month)
        tartalma = u'{{rejtett kategória}}\n\n[[Kategória:Figyelmet igénylő lapok '
        tartalma += u'hónapok szerint| %d %02d]]' % (year,month)
        self.ment(neve,tartalma,self.summary)

    #A négy havi kategória előállítása
    def kiskatok(self,melyik,year,month):
        neve = self.fajta[melyik] + ' %d ' % year + self.monthtext(month)
        tartalma = u'{{rejtett kategória}}\n\n[[Kategória:Figyelmet igénylő lapok '
        tartalma += u'%d %s]]\n' % (year,self.monthtext(month))
        tartalma += u'[[Kategória:%s hónapok szerint| %d %02d]]' % (self.fajta[melyik],year,month)
        self.ment(neve,tartalma,self.summary)

    #Törlési megbeszélések (elég létrehozni, a törlésük esélytelen)
    def tmb(self,year,month):
        neve = u'Törlési eljárások %d ' % year + self.monthtext(month)
        tartalma = u'{{rejtett kategória}}\n\n[[Kategória:Törlési eljárások| '
        tartalma += u'%d-%02d]]\n' % (year, month)
        self.ment(neve,tartalma,self.summary)

    def feldolgoz(self, year,month):
        self.havikat(year,month)
        for melyik in range(1,5):
            self.kiskatok(melyik,year,month)
        self.tmb(year,month)

    def azonnaliz(self,kat):
        purgesummary = u'Üres, elavult karbantartó kategória. A bot törlésre jelöli.'
        try:
            oldtext = kat.get()
        except:
            hiba = True
            oldtext = ''
            #Elvileg nem lehet ilyen, mert akkor hogy lenne a kategóriában?
        if u'{{azonnali|Üres' not in oldtext:
            text = u'{{azonnali|Üres, elavult karbantartó kategória|~~~~}}\n' + oldtext
            self.ment(kat.title(),text,purgesummary)

    def takarit(self,ev,ho):
        supercat = pywikibot.Category(self.site,u'Figyelmet igénylő lapok hónapok szerint')
        for havi in supercat.subcategories():
            neve = havi.title()
            if neve.startswith(u'Kategória:Figyelmet'): #Négy tematikus kat. kizárva
                dat=neve[len(u'Kategória:'+self.fajta[0]):]
                if int(dat[1:5]) < ev or int(dat[1:5]) == ev and \
                                self.honapok.index(dat[6:]) < ho-1:
                    nemkell = True
                    print
                    pywikibot.output(u'\03{lightgreen}%s\03{default}' % neve)
                    #Megtaláltuk az ellenőrizendő havi gyűjtőkategóriát.
                    for kat in havi.subcategories():
                        pywikibot.output(kat.title())
                        if kat.isEmptyCategory():
                            #Erre kell tenni egy azonnalit.
                            pywikibot.output(u'*******ÜRES')
                            self.azonnaliz(kat)
                        else:
                            #Ha van nem üres alkategória, akkor a főkategória marad
                            nemkell = False
                    if nemkell:
                        pywikibot.output('*******ÜRES havi kategória')
                        self.azonnaliz(havi)

    def napkepe_havi(self,ev,ho):
        honeve = str(ev) + '-' + ('0'+str(ho))[-2:]
        oldal = pywikibot.Page(self.site, u'Wikipédia:A nap képe/' + honeve)
        text = u'{{napképe-galéria|%s}}\n[[Kategória:A nap képe]]' % honeve
        comment = u'A havi gyűjtőoldal elkészítése bottal'
        oldal.put(text, comment)

    def run(self):
        ev  = self.ev
        ho  = self.ho
        nap = self.nap
        self.feldolgoz(ev,ho)
        self.takarit(ev,ho)
        if nap > 25:
            ho += 1
            if ho > 12:
                ho -= 12
                ev += 1
            self.napkepe_havi(ev,ho)
            self.feldolgoz(ev,ho)

if __name__=="__main__":
    try:
        site = pywikibot.Site()
        hiba = False
        fatal = True
        bot = figyelmesbot()
        bot.run()
        fatal = False
    finally:
#       levelez(fatal,hiba)
        pywikibot.stopme()