Usuari:PereBot/robot inclou discussions recents
Aparença
Programa per incloure les discussions recents a Viquiprojecte:Discussions desateses/discussions. Una versió actualitzada d'aquest codi (per funcionar amb Python 3 el 2021) és a https://github.com/pere-prlpz/viquipedia/blob/master/discussions.py i la versió del CobainBot és a https://phabricator.wikimedia.org/source/tool-cobain/browse/master/public_html/pywikilab/inc_disc_rc.py
# -*- coding: utf-8 -*-
import sys
sys.path.append('C:\core')
import pywikibot
import re,urllib,urllib2,json,time
from pywikibot import pagegenerators
# El programa comença aquí
def main():
informe=u"Actualització: --~~~~\n\n"
informeno=u"=Discussions noves no incloses=\n\n"
#Compilació dels regex fora del loop per optimitzar
re_trad = re.compile(ur"\{\{([Tt]radu[iï]t|[Cc]opiat) de.*?\}\}")
re_sta = re.compile(ur"\{\{STA\|.*?\}\}")
re_usr = re.compile(ur"\[\[(Usuari|\{\{ns:2\}\}).*?\]\]")
re_span1 = re.compile(ur"<(span|font).*?>")
re_span2 = re.compile(ur"</(span|font)>")
re_negreta = re.compile(ur"'''")
re_cometes = re.compile(ur"''|\n")
re_imatge = re.compile(ur"--.?\[\[(File|Fitxer).*?\]\]") # imatge a la signatura
for urlweb in pagweb:
pllista=urllib.urlopen(urlweb)
print "obert"
try:
pbrut=pllista.read()
except:
print "error en llegir. esperant"
time.sleep(60)
try:
pbrut=pllista.read()
except:
print "error en llegir. esperant"
time.sleep(100)
try:
pbrut=pllista.read()
except:
print "error en llegir. esperant"
time.sleep(200)
pbrut=pllista.read()
jpag=json.loads(pbrut)
#print jpag
dpags=jpag["query"]["recentchanges"]
#print lcats
pags=[]
for el in dpags:
tit=el["title"]
print tit
pags.append(pywikibot.Page(site,tit))
#print pags
for pag in pagegenerators.PreloadingGenerator(pags):
tit=pag.title()
linia=u"=[[{}]]=\n".format(tit)
linia=linia+u"<small>[[:{}|Article]]</small> - ".format(pag.toggleTalkPage().title())
linia=linia+u"<small class=\"editlink noprint plainlinks\">[{{fullurl:"+tit+u"|action=edit}} Edita la discussió]</small>\n\n"
linia=linia+u"{{"+tit+u"}}\n\n"
try:
text=pag.get()
except pywikibot.IsRedirectPage:
linia=u"*[[{}]] (redirecció)\n".format(tit)
informeno=informeno+linia
continue
except pywikibot.NoPage:
linia=u"*[[{}]] (esborrada)\n".format(tit)
informeno=informeno+linia
continue
llarg0=len(text)
textnet=re.sub(re_trad,u"",text)
textnet=re.sub(re_sta,u"",textnet)
textnet=re.sub(re_usr,u"",textnet)
textnet=re.sub(re_span1,u"",textnet)
textnet=re.sub(re_span2,u"",textnet)
textnet=re.sub(re_negreta,u"",textnet)
textnet=re.sub(re_cometes,u"",textnet)
textnet=re.sub(re_imatge,u"",textnet)
textnet=textnet.replace(u"\n","")
llargnet=len(textnet)
hihatrad=re.search(re_trad,text)
if hihatrad and llargnet < 35:
print tit, u"Només etiqueta"
linia=u"*[[{}]] (només conté l'etiqueta de còpia o traducció)\n".format(tit)
informeno = informeno + linia
elif u"{{discussió arxivada}}" in text:
print tit, u"Discussió arxivada"
linia=u"*[[{}]] (discussió arxivada)\n".format(tit)
informeno = informeno + linia
else:
informe = informe + linia
print tit,llarg0,llargnet
informe=informe+informeno
paginforme.put(informe,u"Robot inclou discussions recents")
pywikibot.stopme()
if __name__ == "__main__":
site=pywikibot.getSite('ca')
paginforme=pywikibot.Page(site,u"Viquiprojecte:Discussions desateses/discussions")
pagweb=[]
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=1&rclimit=150&rctype=new") #últimes 150 pàgines de discussió noves
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=15&rclimit=6&rctype=new") #últimes pàgines de categoria discussió noves
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=11&rclimit=6&rctype=new") #últimes pàgines de plantilla discussió noves
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=13&rclimit=5&rctype=new") #últimes pàgines
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=101&rclimit=5&rctype=new") #últimes pàgines
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=103&rclimit=5&rctype=new") #últimes pàgines
pagweb.append("https://ca.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcnamespace=829&rclimit=4&rctype=new") #últimes pàgines
main()