Nonciclopedia:Bot/Makelist

Vai alla navigazione Vai alla ricerca
makelist.py
Il file eseguibile
makelist_preset.py
Il file di configurazione

Makelist è un bot capace di effettuare delle ricerche sulla base di espressioni regolari e criteri avanzati. Le liste generate vengono salvate su un file temporaneo in locale e su una pagina del sito, e possono essere riutilizzate in vari modi (ad es. date a bot "applicativi" come replace).


Le regex

Makelist supporta 3 tipi di regex: semplici (OR), AND e NOT. Perché una pagina venga conteggiata, non deve corrispondere a nessuna espressione NOT e deve soddisfare tutte le espressioni AND e almeno una delle espressioni semplici.

Ad ogni espressione è associata una soglia, che rappresenta il numero minimo di occorrenze dell'espressione affinché la condizione sia soddisfatta. Quando non viene specificata, la soglia è sempre 1.

Parametri

Linea di comando

I parametri obbligatori per il bot sono: un generatore (massimo uno), almeno un'espressione di ricerca (di qualsiasi tipo) e una pagina di destinazione.

Makelist supporta quasi tutti i generatori utilizzati da altri bot come replace e add-text ("-start:", "-linksfrom:", "-cat:" ecc; per l'elenco completo, digitare "makelist.py -help"). In più, possiede due filtri opzionali: "-ns:" e "-regex:". Il primo indica di analizzare solo le pagine appartenenti al dato namespace (può essere ripetuto per includere più namespace); il secondo specifica un'espressione regolare per filtrare le pagine in base ai titoli (namespace escluso).

Le espressioni vengono scritte con questa sintassi:

"espressione semplice" "espressione semplice",,soglia
-and:"espressione" -and:"espressione",,soglia -not:"espressione",,soglia

dove "soglia" è un numero intero maggiore di 0.
Non c'è un limite preciso al numero di espressioni che possono essere fornite, purché ne venga specificata almeno una.

La pagina in cui salvare la ricerca è indicata dal parametro "-dest:" seguito dal nome della pagina.

Parametri opzionali:

  • "-nocase" Se specificato, le espressioni non distinguono tra maiuscole e minuscole
  • "-comment:" Permette di dare una descrizione della ricerca che verrà scritta nell'intestazione della pagina.
  • "-append" Indica al bot di salvare in coda alla pagina, preservandone il contenuto.
  • "-rewrite" Il contrario di "-append": il bot sovrascrive il contenuto della pagina.
  • "-always" Non viene richiesta conferma prima di salvare la pagina (utile per le ricerche che richiedono molti minuti o ore)

makelist_preset.py

È il file di configurazione. Non è obbligatorio per far funzionare il bot, però è di grande aiuto e permette di evitare di scrivere regex troppo complesse sulla riga di comando. I nomi delle variabili sono abbastanza intuitivi e vengono descritti nei commenti; quasi tutti corrispondono a parametri da shell.

NB: I parametri espressi sulla riga di comando prevalgono sempre su quelli espressi nel file.

ATTENZIONE: NON CANCELLARE O COMMENTARE LE VARIABILI. Per neutralizzarle, bisogna eguagliarle ad un valore logico falso (0, '', False ecc)


Giochesse

  • La soglia per NOT è in realtà un massimo: specificando "espressione",,min -not:"espressione",,max si può ottenere gli articoli che contengono occorrenze di "espressione" in un intervallo tra min e max.
  • Il parametro "-regex" effettua la ricerca a partire dall'inizio del nome della pagina. Per aggirarlo, si può specificare ".+?...", sostituendo ai puntini il testo da cercare. Ad esempio, ".+?/X" trova tutte le pagine che possiedono una sottopagina di nome X.
  • Inoltre -"regex" è case insensitive. Per renderlo case sensitive, basta aggiungere "(?-i)" all'inizio della stringa.
  • Si può utilizzare il DPL per filtrare la ricerca escludendo categorie, namespace ecc.

Da fare

  • Aggiungere un filtro multiplo (positivo e negativo) sui titoli
  • Aggiungere filtro negativo "notlinksfrom" (permette di continuare una ricerca salvata su una pagina)
  • Aggiungere possibilità di salvare solo su file e di salvare senza sovrascrivere il file
  • ...

Bug

  • I caratteri non-ascii presenti nelle espressioni regolari (sia da shell che su file dei preset) non vengono codificati correttamente