Vés al contingut

Usuari:CobainBot/Python/inc disc cr.py

De la Viquipèdia, l'enciclopèdia lliure
# -*- 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()