#!/usr/bin/env python# -*- coding: utf-8 -*-importre,wikipediadefmain():args=wikipedia.handleArgs()site=wikipedia.getSite('it','wikiquote')genPage=wikipedia.Page(site,"Utente:Nemo bis/Elenco titoli")foriingenPage.linkedPages():iText=i.get()#Prendo i titoli dei paragrafi dedicati a un'opera che contengano anche un incipit:opereconincipit=re.findall(r"(?m)^==\s*(''|''''')\s*(.*?)\s*\1\s*==(?:\s*\n)+===\s*(\[\[)?[Ii]ncipit(\]\])?\s*===",iText)#Prendo il titolo dell'opera dai paragrafi dedicati a una sola opera di cui c'è solo l'incipit [non bisogna eliminare il primo gruppo perché se ce n'è solo una restituisce una lista di caratteri[:# incipitsingoli = re.findall(r"(?m)^==(\[\[)?[Ii]ncipit(\]\])? di ''([^']+)''==", iText)incipitsingoli=re.findall(r"(?m)^==\s*\[\[[Ii]ncipit\]\]\s*d(i|e|el|ello|ella|ei|egli|elle)\s*''\s*(.*)\s*''\s*==",iText)#Prendo tutto il testo del paragrafo che contiene un elenco di incipit. Il contenuto del paragrafo è definito come tutto ciò che è l'apertura o chiusura di un'intestazione di terzo livello oppure non è un = (sono quindi escluse le intestazioni di quarto livello). Butto via tutto ciò che viene prima e tutto ciò che viene dopo a partire dalla prima intestazione di secondo livello, il primo === e il contenuto dell'ultimo paragrafo di terzo livello a partire dalla chiusura dell'intestazione.paragrafoincipitmultipli=re.subn(r"(?m)\A[\w\W]+^==\s*\[\[[Ii]ncipit\]\] di alcune opere\s*==\n===(?P<paragrafo>(===|[^=])+)===(?:\s*\n)[^=]+(?:^==[^=]+==(?:\s*\n)+)[\w\W]+\Z",r"\g<paragrafo>",iText,1)#Estraggo i titoli dalle intestazioni di terzo livello, separati da tutto ciò che sta fra la chiususra di un'intestazione e l'apertura della successiva (comprese).incipitmultipli=['Vuoto']ifparagrafoincipitmultipli[1]>0:incipitmultipli=re.split(r"(?m)===(?:\s*\n)*[^=]+^===",paragrafoincipitmultipli[0])#(?<=\s*''\s*.*\s*''\s*) sre_constants.error: look-behind requires fixed-width pattern#Stampo i titoli trovati, se ce ne sono.if(len(opereconincipit)>0orlen(incipitsingoli)>0orlen(incipitmultipli)>1):wikipedia.output("*[["+i.title()+"]]")forjinopereconincipit:wikipedia.output("**''"+j[1]+"''")forkinincipitsingoli:wikipedia.output("**''"+k[1]+"''")#Solo se ci sono almeno due elementi ho trovato un paragrafo e ne ho estratto dei titoli.iflen(incipitmultipli)>1:forlinincipitmultipli:wikipedia.output("**"+l)if__name__=="__main__":try:main()finally:wikipedia.stopme()