Usuari:GerardBot/Flow
Aparença
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
import re,time
import pywikibot as pwb
from pywikibot import pagegenerators as pg
from pywikibot import bot
def main(ns,mod):
start_time = time.time()
gen = pg.AllpagesPageGenerator(namespace=ns, includeredirects=False)
re_arx = re.compile(ur"^(\{\{([Dd]iscussi[oó])?[Aa]rxivada\}\}|==|<!--)")
t=0
n=0
for pag in gen:
t += 1
for pag in gen:
n += 1
if n%6==0:
exec_time = (time.time()-start_time)
sec = int((exec_time/n)*(t-n))
m, s = divmod(sec, 60)
print "[%02d:%02d]" % (m, s)
p = round(float(n*100)/float(t),2)
match = pag.text.strip(" \t\n\r").replace(" ","")[:22]
if re.search(re_arx,match):
print pag.title(),"("+str(n)+"/"+str(t)+")","("+str(p)+"%)"
continue
else:
print pag.title(),"("+str(n)+"/"+str(t)+")","("+str(p)+"%)"
if mod == u"":
print pag.text[:150]
enc = bot.input(u"\nEncapçalament?")
if enc == u"":
print u"Torneu a deixar en blanc l'ecapçalament per saltar la pàgina"
enc = bot.input(u"\nEncapçalament?")
if enc == u"":
continue
pag.text = u"== "+enc+u" ==\n"
pag.save(u"Afegint encapçalament per la migració a Flow")
else:
pag.text += u"\n"+mod
pag.save(u"Classificant per migrar a Flow")
return 0
if __name__ == "__main__":
site = pwb.Site()
bot.output(u"Benvinguts a l'script que detecta pàgines de discussió que no comencen amb un encapçalament. Pot funcionar en dos modes: L'interactiu, on s'especifica al moment l'ecapçalament que es vol afegir o el de categorització, on automàticament totes les pàgines sense encapçalament inicial es categoritzen.")
taula_ns = u"""
1 Discussió
3 Usuari Discussió
5 Viquipèdia Discussió
7 Fitxer Discussió
9 MediaWiki Discussió
11 Plantilla Discussió
13 Ajuda Discussió
15 Categoria Discussió
101 Portal Discussió
103 Viquiprojecte Discussió
829 Mòdul Discussió"""
resp=False
while resp==False:
ns = bot.input(taula_ns+u"\n\nEn quin espai de noms voleu treballar? (Número)")
if ns in (u"1",u"3",u"5",u"7",u"9",u"11",u"13",u"15",u"101",u"103",u"829"):
resp=True
resp2=False
while resp2==False:
mod = bot.input(u"\n\nMode d'execució: Categorització (C) // Encaçalaments (E)<--(per defecte ENTER)").lower()
if mod in (u"c",u"e",u""):
if mod == u"e":
mod = u""
resp2=True
else:
print u"\033[91m\nSi us plau introduïu un mode vàlid\033[0m"
if mod == u"c":
mod = bot.input(u"\n\nQuè voleu afegir al final dels articles que no tinguin encapçalament? ([[Categoria:Discussions sense encapçalament inicial]] per defecte ENTER)")
if mod == u"":
mod = u"[[Categoria:Discussions sense encapçalament inicial]]"
else:
print u"\033[91m\nSi us plau introduïu un espai de noms de discussió\033[0m"
main(int(ns),mod)