import pywikibot
import time

def llistar_articles_i_mancances(usuari, pagina_desti):
    site = pywikibot.Site("ca", "wikipedia")
  
    # Defineix el nombre d'edicions
    edicions = 5000

    # Inicia el comptador de temps
    start_time = time.time()

    # Obtén la llista d'articles creats per l'usuari
    contributions = site.logevents(user=usuari, logtype="create", total=edicions, namespace=0)

    # Crea el contingut amb la cadena de format
    contingut = "\n\n== [[Usuari:{}]] ==\n\nRevisats els darrers {} articles creats. ".format(usuari, edicions)
    contingut += "Generat el {}.\n\n".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))  # Afegir timestamp

    processed_articles = set()  # Set per fer un seguiment dels articles processats

    for contribution in contributions:
        page = contribution.page()
        article_title = page.title()
        # Només processa l'article si no és ja al conjunt
        if article_title not in processed_articles:
            pag = pywikibot.Page(site, article_title)
            plantilles_presents = cercar_plantilles_presents(pag)
            if plantilles_presents:
                # Afegeix les plantilles trobades amb el format demanat
                contingut += "# [[{}]] ".format(article_title)
                for plantilla in plantilles_presents:
                    # Formata cada plantilla amb el codi wiki correcte
                    contingut += " {{tl|" + plantilla + "}}"
                contingut += "\n"
            # Afegeix el títol de l'article al conjunt d'articles processats
            processed_articles.add(article_title)

    # Finalitza el comptador de temps
    end_time = time.time()

    # Calcula el temps transcorregut
    elapsed_time = end_time - start_time

    # Arrodoneix el temps transcorregut al nombre enter més proper
    elapsed_time_rounded = round(elapsed_time)

    # Afegeix el temps transcorregut a la cadena de contingut
    contingut += "\nEl programa ha tardat {} segons.\n\n\n".format(elapsed_time_rounded)

    # Obtén el contingut actual de la pàgina de destí
    pagina_desti_page = pywikibot.Page(site, pagina_desti)
    contingut_pagina_desti = pagina_desti_page.text

    # Concatena el contingut actual amb la nova informació
    contingut_pagina_desti += contingut  # Afegeix el contingut nou al contingut existent

    # Desa la llista a la pàgina especificada
    pagina_desti_page.text = contingut_pagina_desti
    pagina_desti_page.save(summary="Actualitzant la llista d'articles creats per l'usuari {} amb avisos.".format(usuari))

def cercar_plantilles_presents(pagina):
    # Llista de plantilles que vols cercar
    plantilles_a_cercar = ["Cal citació", "CC", "CN", "Copyvio", "Currículum", "EE", "Falta verificar admissibilitat", "Falten referències", "FR", "FVA", "Fusió", "Fusió a", "Fusió des de", "Incomplet", "MEI", "Millorar", "Millorar enllaços interns", "Millorar introducció", "Millorar format" "Millorar ortografia", "Millorar referències", "Millorar text", "Millorar traducció", "MF", "MR", "MT", "Neutralitat", "Obsolet"]

    # Obtén el contingut de la pàgina
    contingut = pagina.text

    # Comprova si la pàgina està a l'espai de noms principal
    if pagina.namespace() == 0:
        # Cerca les plantilles presents
        plantilles_presents = [plantilla for plantilla in plantilles_a_cercar if "{{" + plantilla + "|" in contingut or "{{" + plantilla + "}}" in contingut]
    else:
        plantilles_presents = []

    return plantilles_presents

if __name__ == "__main__":
    usuari = input("Nom d'usuari: ")
    pagina_desti = "Usuari:Rebot/Creats"
    llistar_articles_i_mancances(usuari, pagina_desti)