Usuari:Rebot/Sensecat
Aparença
# Programa que busca els articles sense categoria manual que no són ni desambiguacions ni redireccions import re import pywikibot import time from pywikibot import pagegenerators def miracatfiltre(cat, catprevies=[], filtre=""): articles = list(cat.articles(recurse=False)) categories = list(cat.subcategories(recurse=False)) for scat in categories: pywikibot.output(scat) if scat not in catprevies: catprevies.append(scat) if filtre == "": nopassa = False print("Filtre desactivat") else: nopassa = re.search(filtre, scat.title) if not nopassa: pywikibot.output("Sí que es llegeix %s" % scat) noucats, nouarts = miracatfiltre(scat, catprevies + categories, filtre) categories += noucats articles += nouarts else: pywikibot.output("No es llegeix %s" % scat) else: pywikibot.output("Aquesta ja la tinc vista") articles = list(set(articles)) return categories, articles def principal(): timestamp = time.strftime('%d-%m-%Y') catbuscar = "Articles sense categoria" noarticles = "20000" gen = site.recentchanges(total=int(noarticles), namespaces=[0]) processed_titles = set() # set to keep track of processed titles comptaarticles = comptanoprincipal = comptador = 0 resum = "" for rc in gen: pag = pywikibot.Page(site, rc['title']) if pag.namespace() == 0 and pag.title() not in processed_titles: processed_titles.add(pag.title()) # add title to set of processed titles comptador += 1 print(comptador, pag) if pag.exists() and not pag.isRedirectPage() and not pag.isDisambig(): text = pag.text if not re.search(r"\[\[ ?[Cc]ategoria ?:", text): comptaarticles += 1 pywikibot.output("{} no té categories".format(pag.title())) resum += "#{}\n".format(pag.title(as_link=True)) else: print("No és a l'espai principal o ja està processada") comptanoprincipal += 1 if resum == "": resum = "Totes les pàgines tenen categories\n\n" paginforme = pywikibot.Page(site, "Usuari:Rebot/Articles sense categories") #Pàgina on voleu l'informe. Ha d'existir. informe="\n=={}==\n\n".format(catbuscar) informe+="{}".format(resum) informe+="Revisats {} articles\n\n".format(comptador) informe+="Trobats {} articles sense categoria\n\n".format(comptaarticles) informe+="Hi ha {} pàgines que no són a l'espai principal o ja estan processades\n\n".format(comptanoprincipal) informe+="\n--~~~~" pywikibot.output(informe) paginforme.text = informe # Set the text of the page to the new content paginforme.save(summary=catbuscar, force=True) # Overwrite the existing content with the new content if __name__ == "__main__": site = pywikibot.Site("ca") principal() pywikibot.stopme()
Adaptat de Usuari:PereBot/robot articles sense categoria. Traduït de python2 a python3. Pau Cabot · Discussió 19:47, 8 abr 2023 (CEST)