Nonciclopedia:Bot/Makelist/makelist preset.py

Vai alla navigazione Vai alla ricerca
Versione 2.1
piccoli aggiustamenti, ora funziona bene

Attenzione!

  • Non copiare il testo qui sotto, apri la pagina e copia direttamente il sorgente da dopo <pre><nowiki> a prima della chiusura dei due tag, in fondo al testo.
  • Il nome esatto del file è makelist_preset.py, se non lo scrivi correttamente il bot non salva le pagine e te ne accorgi solo alla fine di tutta la ricerca.
# -*- coding: utf-8  -*-
###########
import wikipedia, pagegenerators
import re
###########

# NON COMMENTARE QUESTE VARIABILI Per azzerarle, scrivere " nomevariabile = '' "
# 	Espressioni per la ricerca. La sintassi è
#	r"espressione",
#	[r"espressione",soglia],
# 	**** ATTENZIONE: Mettere SEMPRE la 'r' prima delle virgolette, la virgola dopo l'espressione e le parentesi quadre se si specifica una soglia
#
#	Esempio:
#Espressioni = [
#	r"\b[Tt]ruzz\w+",
# 	[r'\b[Cc]huck(?= [Nn]orris)", 5], 
#	r"Germano\sMosconi",
#	]

Espressioni = [
]

Espressioni_AND = [
]

Espressioni_NOT = [
]

# impostare a True per non distinguere tra maiuscole e minuscole.
# NB: Anche una singola regex può essere case insensitive, se si aggiunge "(?i)" all'inizio
NoCase = False

# impostare a True per utilizzare il formato regex "verbose", in cui gli spazi non vengono inclusi nel filtro e permettono una scrittura più agevole
# NB: Questa modalità può essere applicata anche ad una singola regex aggiungendo "(?x)" all'inizio
Verbose = False

# sostituire con un generatore standard ("-start", "-cat" ecc) Es:
#	Generatore = "-start:!"
Generatore = ''

# sostituire con lista dei namespace. I nomi (o i numeri) devono essere inclusi tra virgolette o apici. Es:
# 	Namespace = ['0', 'NonCitazioni']
Namespace = []

# includi solo le pagine il cui titolo (senza namespace) è positivo per questa regex. È possibile inserire più espressioni separate da |
RegexTitolo = u''

# filtro di esclusione. Sostituire con uno o più generatori standard("-cat", "-links" ecc) separati da virgole. Es:
#	Escludi = ['-catr:Manuali', '-transcludes:template:manuali']
Escludi = []

# lista di pagine da escludere. Occhio alle maiuscole. Scrivere anche il namespace.
# BUG: i caratteri non ansi generano errore. Usare il parametro da riga di comando
EscludiPagine = []

# escludi le pagine il cui titolo (senza namespace) è positivo per questa regex. È possibile inserire più espressioni separate da |
EscludiRegexTitolo = u''

# pagina su cui salvare
Destinazione = ''

# modalità di salvataggio. 'a' per accodare,  'u' per aggiornare una lista, 'w' per sovrascrivere, 'f' per salvare su file
ModoSalvataggio = 'w'

# Formati della pagina. Per utilizzare quelli di default, sostituirli con  " = '' "
# formato dell'intestazione della pagina di report. Per disattivarla, dare valore 'u' a ModoSalvataggio
Intestazione = ''

# testo nell'intestazione.
Commento = ""

# formato di ogni rigo della lista.
FormatoLista = ''

# formato di ogni risultato di ricerca della lista
FormatoRisultati = ''

# Separatore risultati della ricerca
SeparatoreFrasi = ' // '

# nome del file temporaneo. Per non salvare, scrivere '' o False
FileTemporaneo = 'makelist-tmp.txt'

# nome del file su cui salvare la ricerca (solo se ModoSalvataggio = 'f'). ATTENZIONE: Il file verrà sovrascritto!
File = 'makelist.txt'

#######################

class PresetValues:
	def __init__ (self):
		self.ORs = re_convert(Espressioni)
		self.NOTs = re_convert(Espressioni_NOT)
		self.ANDs = re_convert(Espressioni_AND)		
		#self.flags = re.UNICODE
		self.flags = 0 #Modificalo a tuo rischio e pericolo, perdi un sacco di ricerche.
		self.dest_name = Destinazione
		site = wikipedia.getSite()
		self.gen_name = ''
		if NoCase:
			self.flags = self.flags | re.IGNORECASE
		if Verbose:
			self.flags = self.flags | re.VERBOSE		
		if Generatore:
			genFactory = pagegenerators.GeneratorFactory()
			if genFactory.handleArg(Generatore):
				self.gen_name = Generatore
		self.exc_gen = Escludi
		self.exc_pages = EscludiPagine
		self.exc_title_re = EscludiRegexTitolo
		self.namespaces = Namespace
		self.title_re = RegexTitolo
		self.list_heading = Intestazione
		self.list_format = FormatoLista
		self.list_match_format = FormatoRisultati
		self.match_separator = SeparatoreFrasi
		self.comment = Commento
		if ModoSalvataggio in ['a', 'w', 'u', 'f', 'A', 'W', 'U', 'F']:
			self.save_mode = ModoSalvataggio.lower()
		else:
			self.save_mode = False
		self.tmpfile = FileTemporaneo
		self.file_name = File

def re_convert (array1):
	array2 = []
	for i in range(len(array1)):
		if type(array1[i][1]) is int: 	# list stringa + intero
			array2.append(array1[i])
		else:							# solo stringa: [1] è il secondo carattere
			array2.append([array1[i],1])
	return array2
	
def preload():
	PreSet = PresetValues()
	return PreSet