Szerkesztő:BinBot/frissdump.py
Ez a script {{A dump dátuma}}
(?) sablont frissíti, és naponta többször fut a toolserverről. Ha leáll, ellenőrizni kell, nem történt-e változás a https://dumps.wikimedia.org/huwiki/latest/ lap szerkezetében, vagy nem írta-e át valaki kézzel hibásan a sablont.
#coding: utf-8
import re
import pywikibot
import sys
if not sys.version_info[0] == 2:
import urllib
from urllib.request import urlopen
else:
from urllib import urlopen
from sys import exit
from binbotutils import levelez #Másnak nem szükséges
#A dumpokat listázó oldal betöltése
try:
lista = urlopen('https://dumps.wikimedia.org/huwiki/latest/')
except:
pywikibot.output(u"\03{lightgreen}A letöltés sikertelen volt.\03{default}")
#A raise után írva mindenképp ronda, de u-val ki se írja.
levelez(fatal=True,othertext =
u'A https://dumps.wikimedia.org/huwiki/latest/ letöltése sikertelen.')
exit()
#A dumpnév és a dátum keresése
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec']
magyarul = [
u'január', u'február', u'március', u'április', u'május', u'június',
u'július', u'augusztus', u'szeptember', u'október', u'november', u'december',
]
nincsmeg = True
minta = re.compile(r'(\d\d)\-(%s)\-(\d{4}) \d\d\:\d\d' % '|'.join(months))
minta2 = re.compile(r'(20\d\d)\. (%s) (\d{1,2})\.' % '|'.join(magyarul))
sorok = [line.decode() for line in lista]
for sor in sorok:
if 'huwiki-latest-pages-articles.xml.bz2"' in sor:
d = minta.search(sor)
if d:
nap = d.group(1)
nap = nap[1] if nap.startswith('0') else nap
honap = magyarul[months.index(d.group(2))]
friss = u'%s. %s %s.' % (d.group(3), honap, nap)
nincsmeg = False
if nincsmeg:
pywikibot.output(u'A legfrissebb dump dátuma nincs meg!')
levelez(othertext = u'Nem találom a dump dátumát. Új formátum?')
exit()
pywikibot.output(u'A legfrissebb dump dátuma: ' + friss)
#A sablon frissítése
site = pywikibot.Site()
sablon = pywikibot.Page(site,u'Sablon:A dump dátuma')
try:
text = sablon.get()
if minta2.search(text):
text2 = minta2.sub(friss,text)
if text2 != text:
comment = u'A bot új dumpot talált, a dátuma: ' + friss
try:
sablon.put(text2, comment, minor = False, bot=False)
pywikibot.output(u'A frissítés sikeres volt.')
levelez(othertext = comment)
except:
pywikibot.output(u'A frissítés sikertelen volt.')
levelez(fatal = True, hiba = True, othertext = comment)
else:
s = u'A dump nem frissült, a dátuma továbbra is ' + friss
pywikibot.output(s)
levelez(othertext = s)
else:
s = u'A sablonban nincs meg a régi dátum. Valaki megváltoztatta?'
pywikibot.output(s)
levelez(fatal=True,othertext=s)
except:
s = u'A sablon betöltése nem sikerült.'
pywikibot.output(s)
levelez(fatal=True,othertext=s)