Szerkesztő:BinBot/figyelmet.py
Megjelenés
A scriptet (Itt BinBot beszél a toolserverről távollétében) Atobot automatikusan futtatja havonta kétszer.
"""
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.
(C) Bináris, 2011–2023, ato, 2015
"""
import time
import pywikibot
# from binbotutils import levelez # Másnak nem szükséges
class Figyelmesbot(object):
def __init__(self) -> None:
global hiba
self.summary = \
'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 = [
'Figyelmet igénylő lapok',
'Csonkok',
'Forráshivatkozásra váró lapok',
'Lektorálandó lapok',
'Megkérdőjelezett nevezetességű lapok',
'Vitatott semlegességű lapok',
'Szócikkek halott külső hivatkozásokkal',
]
self.honapok = [
'januárjából',
'februárjából',
'márciusából',
'áprilisából',
'májusából',
'júniusából',
'júliusából',
'augusztusából',
'szeptemberéből',
'októberéből',
'novemberéből',
'decemberéből',
]
def monthtext(self, month: int) -> str:
return self.honapok[month-1]
def ment(self, name, text, summary: str) -> None:
kat = pywikibot.Category(site, name)
if text == kat.text or text == kat.text + '\n':
# Az utolsó entert nem olvassa be a text.
pywikibot.info(f'{kat.title()} – nincs változás')
return
try:
# Teszteléshez:
# pywikibot.info(name)
# pywikibot.info(text)
kat.put(text, summary)
except:
# Nem szelektálunk, toolserverről fog futni, e-mailezzen
hiba = True
def havikat(self, year: int, month: int) -> None:
"""A havi gyűjtőkategória előállítása."""
neve = f'{self.fajta[0]} {year} {self.monthtext(month)}'
tartalma = \
'{{rejtett kategória}}\n\n[[Kategória:Figyelmet igénylő lapok '
tartalma += f'hónapok szerint| {year} {month:02d}]]\n'
self.ment(neve, tartalma, self.summary)
def kiskatok(self, melyik: int, year: int, month: int) -> None:
"""A négy havi kategória előállítása."""
neve = f'{self.fajta[melyik]} {year} {self.monthtext(month)}'
sablon = \
'\n{{Megkérdőjelezett nevezetességű lapok kategóriáinak fejléce}}'\
if neve.startswith('Megkérdőjelezett') else ''
tartalma = '{{rejtett kategória}}'
tartalma += sablon
tartalma += '\n\n[[Kategória:Figyelmet igénylő lapok '
tartalma += f'{year} {self.monthtext(month)}]]\n'
tartalma += f'[[Kategória:{self.fajta[melyik]} hónapok szerint| '
tartalma += f'{year} {month:02d}]]\n'
self.ment(neve, tartalma, self.summary)
def tmb(self, year: int, month: int) -> None:
"""Törlési megbeszélések (elég létrehozni, a törlésük esélytelen)."""
neve = f'Törlési eljárások {year} {self.monthtext(month)}'
tartalma = '{{rejtett kategória}}\n\n[[Kategória:Törlési eljárások| '
tartalma += f'{year}-{month:02d}]]\n'
self.ment(neve, tartalma, self.summary)
def feldolgoz(self, year: int, month: int) -> None:
self.havikat(year, month)
for melyik in range(1, len(self.fajta)):
self.kiskatok(melyik, year, month)
self.tmb(year, month)
def azonnaliz(self, kat: pywikibot.Category) -> None:
purgesummary = \
'Üres, elavult karbantartó kategória. A bot törlésre jelöli.'
try:
oldtext = kat.text
except:
hiba = True
oldtext = ''
# Elvileg nem lehet ilyen, mert akkor hogy lenne a kategóriában?
if '{{azonnali|Üres' not in oldtext:
text = '{{azonnali|Üres, elavult karbantartó kategória|~~~~}}\n'
text += oldtext
self.ment(kat.title(), text, purgesummary)
def takarit(self, ev: int, ho: int) -> None:
supercat = pywikibot.Category(site,
'Figyelmet igénylő lapok hónapok szerint')
for havi in supercat.subcategories():
neve = havi.title()
if neve.startswith('Kategória:Figyelmet'):
# Négy tematikus kat. kizárva
dat = neve[len('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.info(f'\03<<lightgreen>>{neve}\03<<default>>')
# Megtaláltuk az ellenőrizendő havi gyűjtőkategóriát.
for kat in havi.subcategories():
pywikibot.info(kat.title())
if kat.isEmptyCategory():
# Erre kell tenni egy azonnalit.
pywikibot.info('*******ÜRES')
self.azonnaliz(kat)
else:
# Ha van nem üres alkategória, a főkategória marad.
nemkell = False
if nemkell:
pywikibot.info('*******ÜRES havi kategória')
self.azonnaliz(havi)
def napkepe_havi(self, ev: int, ho: int) -> None:
honeve = str(ev) + '-' + ('0' + str(ho))[-2:]
oldal = pywikibot.Page(site, f'Wikipédia:A nap képe/{honeve}')
text = '{{napképe-galéria|%s}}\n[[Kategória:A nap képe]]' % honeve
comment = 'A havi gyűjtőoldal elkészítése bottal'
if text != oldal.text:
oldal.put(text, comment)
def run(self) -> None:
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)
pass