Usuari:CobainBot/Python/inc disc cr.py
Aparença
# -*- coding: utf-8 -*-
import re, sys, time
sys.path.append("/shared/pywikipedia/core/")
from pywikibot import IsRedirectPage, NoPage, Page, Site
from pywikibot import pagegenerators
from pywikibot.data import api
def discussions():
for id in range(1,5):
query.update(**queries[id])
data = api.Request(site, **query).submit()
for page in data["query"]["recentchanges"]:
yield Page(site, page['title'])
def main():
report = u"Actualització: --~~~~\n\n"
report_new = u"=Discussions noves no incloses=\n\n"
#Compilació dels regex fora del loop per optimitzar
translate_re = re.compile(ur"\{\{([Tt]radu[iï]t|[Cc]opiat) de.*?\}\}")
remove_re = re.compile(
ur"\{\{ ?(?:[Tt]radu[iï]t|[Cc]opiat) de.*?\}\}|" #plantilles
ur"\[\[ ?(?:Usuari|\{\{ns:2\}\}).*?\]\]|"
ur"</?(span|font).*?>|"
ur"''|\n|"
ur"--.?\[\[ ?(?:File|Fitxer).*?\]\]" # imatge a la signatura
)
for page in discussions():
title = page.title()
line = (
u"""=[[{t}]]=\n<small>[[:{p}|Article]]</small> - <small """
u"""class=\"editlink noprint plainlinks\">[{{{{fullurl:{t}|action=edit}}}} """
u"""Edita la discussió]</small>\n\n{{{{{t}}}}}\n\n""".format(
t = title,
p = page.toggleTalkPage().title()
)
)
try:
text = page.text
except IsRedirectPage:
line = u"*[[{}]] (redirecció)\n".format(title)
report_new += line
continue
except NoPage:
linia=u"*[[{}]] (esborrada)\n".format(tit)
informeno=informeno+linia
continue
clean_text = remove_re.sub("", text)
if translate_re.search(text) and len(clean_text) < 35:
line = u"*[[{}]] (només conté l'etiqueta de còpia o traducció)\n".format(title)
report_new += line
elif u"{{discussió arxivada}}" in text:
line=u"*[[{}]] (discussió arxivada)\n".format(title)
report_new += line
else:
report += line
report += report_new
report_page.text = report
report_page.save(u"Robot inclou discussions recents")
if __name__ == "__main__":
site = Site()
report_page = Page(site, u"Viquiprojecte:Discussions desateses/discussions")
query = {
"action": "query",
"list": "recentchanges",
"rctype": "new"
}
queries = {
#últimes 150 pàgines noves de discussió d'articles
1: {
"rcnamespace": 1,
"rclimit": 150,
},
#últimes 6 pàgines noves de discussió de plantilles i categories
2: {
"rcnamespace": [15, 11],
"rclimit": 6,
},
#últimes 5 pàgines noves de discussió d'ajuda, portal i viquiprojecte
3: {
"rcnamespace": [13, 101, 103],
"rclimit": 5,
},
#últimes 4 pàgines noves de discussió de mòduls
4: {
"rcnamespace": 829,
"rclimit": 4,
}
}
main()