Usuari:GerardBot/codi

De la Viquipèdia, l'enciclopèdia lliure
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys,re
import pywikibot
from pywikibot import bot
from pywikibot import pagegenerators as pg
import datetime

site = pywikibot.getSite()

def main(n):
	#llistat de pagines noves
	gen = pg.NewpagesPageGenerator(total=n)
	try:
		for page in gen:
			timestamp = str(page.getVersionHistory(reverseOrder=True, total=1)[0][1])
			_format = "%Y-%m-%dT%H:%M:%SZ"
			d = datetime.datetime.strptime(timestamp, _format)
			now = datetime.datetime.now()
			tcreacio = now-d
			screacio = tcreacio.total_seconds()
			if screacio>21600:
				text = page.text
				creador = page.getVersionHistory(reverseOrder=True, total=1)[0][2]
				title = page.title(asLink=True)
				bot.output(u"Processant %s" % title)
				if not re_pag.search(text):
					bot.output(u"No té referències")
					disc = pywikibot.Page(site, u"Usuari discussió:" + creador)
					disctext = disc.text
					#Ja l'hem avisat?
					enc = u"Recordatori de referències per %s" % title
					if re.search(ur"%s" % enc, disc.text):
						bot.output(u"Ja he fet %s. Me la salto!" % title)
					#Deixa el missatge si no l'ha fet
					confirm=bot.input(u"Deixo el missatge a " + creador + "?")
					if confirm.lower() in ("","s","si","y"):
						msg = u"{{subst:Usuari:GerardBot/Plantilla:Avís falten referències|%s|~~~~|%s}}" % (title,creador)
						disc.text = disc.text + msg
						disc.save(u"Bot avisant a l'usuari per falta se referències. Siusplau aviseu d'un error a la seva pàgina de discussió")
					else:
						bot.output(u"No deixo el missatge")
				else:
					bot.output(u"Té referències")
					continue
			else:
				bot.output(u"Fa %r segons que s'ha creat l'article, m'espero a que passi més temps per avisar" % screacio)
				continue
	except (BaseException), err:
			if KeyboardInterrupt():
				bot.output(u"  M'has parat!  %r" % err)
			else:
				bot.output(u"Alguna cosa ha fallat %r" % err)
	finally:
			bot.output(u"Hem acabat!")

if __name__ == "__main__":
	preg = True
	re_pag = re.compile(ur"(<ref|Referències|{{(?:FVA|[Ff]alta verificar admissibilitat|[Ff]alten referències|FR|[Bb]iografies|[Dd]esambig[Cc]urta|[Aa]crònim|[Oo]nomàstica)|[Dd]esambiguació|#REDIRECT)")
	while preg:
		n = bot.input(u"Quantes pàgines farem?")
		try:
			n = int(n)
			main(n)
		except:
			bot.output(u"Com no posis un nombre estarem aquí fins demà")
		resp = bot.input("Seguim?\n[S/n]")
		if resp.lower() in ("","s","si","y"):
			preg = True
		else:
			preg = False
	bot.output(u"Ara sí que hem acabat")