Usuari:Rebot/Discussions

# -*- coding: utf-8 -*-
# Actualitza Viquiprojecte:Discussions desateses/discussions

import sys
import pywikibot
import re,urllib.request, json,time
from pywikibot import pagegenerators

site=pywikibot.Site('ca')
paginforme=pywikibot.Page(site,u"Viquiprojecte:Discussions desateses/discussions")
#paginforme=pywikibot.Page(site,u"Usuari:PereBot/taller") #per proves
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

#print(pagweb)

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(r"(\=\=(.*?)\=\=\n*)*\{\{([Tt]radu[iï]t|[Cc]opiat) de.*?\}\}")
re_sta = re.compile(r"\{\{STA\|.*?\}\}")
re_usr = re.compile(r"\[\[(Usuari|\{\{ns:2\}\}).*?\]\]")
re_span1 = re.compile(r"<(span|font).*?>")
re_span2 = re.compile(r"</(span|font)>")
re_negreta = re.compile(r"'''")
re_cometes = re.compile(r"''|\n")
re_imatge = re.compile(r"--.?\[\[(File|Fitxer).*?\]\]") # imatge a la signatura

for urlweb in pagweb:
        pllista=urllib.request.urlopen(urlweb) 
        print("obert")
        try:
                pbrut=pllista.read().decode('utf-8')
        except:
                print ("error en llegir. esperant")
                time.sleep(60)
                try:
                        pbrut=pllista.read().decode('utf-8')
                except:
                        print ("error en llegir. esperant")
                        time.sleep(100)
                        try:
                                pbrut=pllista.read().decode('utf-8')
                        except:
                                print ("error en llegir. esperant")
                                time.sleep(200)
                                pbrut=pllista.read().decode('utf-8')
        jpag=json.loads(pbrut)
        #print ("jpag:",jpag)
        dpags=jpag["query"]["recentchanges"]
        #print ("dpags:",dpags)
        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.exceptions.IsRedirectPageError:
                        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("{{VPBDN}}","")
                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
                elif llargnet < 10:
                        print (tit, u"Discussió curta")
                        linia=u"*[[{}]]\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")

print(informe)
print(informeno)
print("final")

Agafat de Viquiprojecte:Discussions desateses/discussions/codi. Pau Cabot · Discussió 11:16, 8 abr 2023 (CEST)