Discussioni progetto:Bot/Archivio/2008-2014

Da Wikisource.
Jump to navigation Jump to search

I programmi[modifica]

Qui i primi programmi spostati sul progetto. Sto impazzando per inserire in automatico la data di modifica della pagina che li contiene per aiutare i bottaroli così da capire se il codice sia stato aggiornato e quando. Chi ha idee sul come farlo si faccia avanti! -- iPorkscrivimi 22:03, 3 gen 2008 (CET)

Icona[modifica]

Cari Botolatori,

ho trovato questa icona e mi è piaciuta:

Bot icon.svg
  • è in svg
  • è pensata proprio come icona e non come immagine
  • rappresenta un roboto e delle doppie quadre
  • non è del tutto fuori luogo con i colori del progetto (colori che peraltro possono essere cambiati all'occorrenza...)

Che ve ne pare? - εΔω 10:42, 4 gen 2008 (CET)

Sinceramente preferisco gli ingranaggi colorati, così da un tocco di colore. L'icona con il robot è carina ma IMO dovrebbe essere in negativo, cioè con il robot colorato e lo sfondo trasparente. Ovviamente de gustibus! --Accurimbono (disc) 13:42, 4 gen 2008 (CET)
Bella come immagine, poco usable come icona. Potremmo inserirla qui e nella pagina di aiuto. Che ne dite? -- iPorkscrivimi 12:47, 14 gen 2008 (CET)
Mi piace molto l'immagine, forse però davvero come icona non va bene. Se magari facciamo una prova... (io ora sono occupato con dei bot reali ;-)) Aubrey McFato 12:59, 1 feb 2008 (CET)

Nuovo lavoro per i bot: sostituzione {{Bibbia}} con il template {{Intestazione Bibbia}}[modifica]

A seguito dell'aggiornamento del template per le intestazioni del progetto Bibbia c'è da fare la sostituzione {{Bibbia}} con il template {{Intestazione Bibbia}}. Chi mastica un po' di regex si faccia avanti ^___^ -- iPorkscrivimi 12:46, 14 gen 2008 (CET)

Nuovo lavoro per i bot: sostituzione {{Generale}} con il template {{Intestazione}}[modifica]

Prosegue l'opera di aggiornamento dei template intestazione. C'è da fare la sostituzione {{Generale}} con il template {{Intestazione}}. Chi mastica un po' di regex si faccia avanti -- iPorkscrivimi 10:54, 3 feb 2008 (CET)

Coordinamento sostituzione template {{Opera}}[modifica]

Ho bisogno di aiuto per compilare le liste delle pagine da modificare per la sostituzione del template {{Opera}}. Qui ho creato una pagina per coordinare il lavoro. Se è poco chiara chiedete e modificate. Se riuscite a darmi una mano riusciamo a fare le cose in tempi più veloci. Aubrey McFato 16:08, 3 feb 2008 (CET)

Nuovo lavoro per i bot: sostituzione Tesi con il template {{Intestazione tesi}}[modifica]

Prosegue l'opera di aggiornamento dei template intestazione. C'è da fare la sostituzione Tesi con il template {{Intestazione tesi}}. Chi mastica un po' di regex si faccia avanti. -- iPorkscrivimi 18:05, 3 feb 2008 (CET)

✔ Fatto -- iPorkscrivimi 10:13, 4 feb 2008 (CET)

Nuovo lavoro per i bot: sostituzione {{Canzone}} con il template {{Intestazione CantaStoria}}[modifica]

Prosegue l'opera di aggiornamento dei template intestazione. C'è da fare la sostituzione {{Canzone}} con il template {{Intestazione CantaStoria}}. Chi mastica un po' di regex si faccia avanti. -- iPorkscrivimi 09:41, 5 feb 2008 (CET)

Io ho il bot pronto, devo soltanto testarlo. All'inizio pensavo di farlo andare su tutti i canti che usano il template {{canzone}}, ma c'è il problema dei secoli. Il fatto è che moltissimi canti, da una rapida occhiata, non hanno neppure l'anno (oltre che gli autori), e soprattutto non hanno categorie temporali (canti del XX secolo, canti del XIX secolo)... Se vogliamo fare le cose bene bisognerebbe passarli uno ad uno, senza bot: se vogliamo il bot non mettiamo i secoli oppure si fa una divisione dei canti in liste per secolo (che io non saprei fare). Che dici ;-) ?Aubrey McFato 14:20, 5 feb 2008 (CET)
Hai visto bene. Io direi di sostituire il template lasciando il secolo non indicato. Li ripasso poi io e li sistemo. -- iPorkscrivimi 17:02, 5 feb 2008 (CET)
Ok, vado con la mega sostituzione. Tu dacci un'occhio ;-) Aubrey McFato 17:05, 5 feb 2008 (CET)

Automazione![modifica]

Grazie a Pietrodn stiamo facendo in modo che tutti i programmi che gestiscono il sito (conteggi autori, aggiornamento pagine di servizio con gli indici, conteggi e tabelle per il nuovo SAL, etc.) vengano gestiti in remoto in modo automatico. In pratica una volta al giorno (verso l'una di notte) il bot di pietro agirà in automatico tutti i giorni. Così facendo avremo sempre le pagine aggiornate e potremo usare i programmi solo all'occorrenza. Appena il sistema parte facciamo una festicciola in chat per il traguardo raggiunto! -- iPorkscrivimi 00:09, 18 feb 2008 (CET)

Ottima idea, andiamo sempre meglio. Magari potremo anche dare un rifinitura al bot per le statistiche di manutenzione (quello che vovrebbe dare i numeri al {{Memento}}) e far finalmente partire anche quello: se è ritenuto utile, ovviamente. ((ma secondo me si, ho qualche idea al riguardo)). Aubrey McFato 12:00, 18 feb 2008 (CET)

I programmi nuovi[modifica]

Ho rinominato i programmi per i bot, così hanno la stessa forma, e ne ho aggiunti di nuovi che stiamo usando per gli elenchi dei testi in base al SAL. Come vedete dall'elenco ora è indicato quali funzionano in automatico e quindi vanno usati a mano solo quando serve. -- iPorkscrivimi 09:23, 2 mar 2008 (CET)

domanda[modifica]

Questo è stato sostituito e reso obsoleto da quest'altro? --Accurimbono (disc) 08:59, 9 mar 2008 (CET)

Si. Ora l'ho cancellato. -- iPorkscrivimi 10:07, 9 mar 2008 (CET)
Grazie, dopo un mio bel periodo di latitanza ho visto che sono stati fatti molti progressi nel SAL 2.0, ho sistemato i link ai bot nella mia pagina utente e l'ho aggiornata nelle intestazione e nell'archivio discussioni ispirandomi spudoratamente a te! ;) --Accurimbono (disc) 10:13, 9 mar 2008 (CET)
Visto ;o) Per i bot dove è indicato si nel'automatico significa che vengono lanciati ogni notte in modo automatico e che quindi si usano a mano solo all'occorrenza. -- iPorkscrivimi 11:56, 9 mar 2008 (CET)
Lanciati di notte da chi? Ci appoggiamo ad un server? --Accurimbono (disc) 13:17, 9 mar 2008 (CET)
Ho letto sopra, ci pensa Pietrodn. --Accurimbono (disc) 13:18, 9 mar 2008 (CET)

Due bot per i testi antichi[modifica]

Mi sono imbattuto nei problemi di normalizzazione della grafia dei testi antichi e se sapessi scrivere un bot (il mio python ha la ruggine) scriverei innanzitutto due bot per la normalizzazione e restituzione della grafia originale delle lettere u/v. [....]--Alex brollo (disc.) 13:05, 21 ago 2008 (CEST)

Ci ho pensato meglio, [....] --Alex brollo (disc.) 00:05, 7 ago 2008 (CEST)
Ci ho pensato meglio ancora. La conclusione è che non ci penso più. Mi sono convinto che ogni manipolazione del testo, anche con le migliori intenzioni, va fatta fuori it.wikisource. Comunque la cosa mi è servita per riprendere in mano il vecchio, caro python... Quindi è stata utile. --Alex brollo (disc.) 15:22, 20 ago 2008 (CEST)

Dizionari dei testi[modifica]

Una piccola e veloce routine python (primordiale) che ho scritto accetta un testo e restituisce la lista ordinata delle parole complete e delle "non parole" (sequenze di caratteri non alfabetici) che vi sono interposte. Riconcatenando gli elementi della lista si ottiene il testo iniziale tal quale. Non ce le ho qui, ma aggiungerò al messaggio le poche righe di codice che fanno ciò. Sono così arrugginito che quelle poche righe mi sono costate sangue. Sono scritte nel python del tutorial... senza alcun modulo aggiunto. Al peggio, chi conosce bene pyhton si farà qualche bella risata. :-(

Passo successivo, molto facile: creare una lista ordinata delle diverse parole presenti nel testo (ossia, il suo dizionario).

Da qui la fantasia spazia. Si possono facilmente identificare e visualizzare in un secondo testo le parole "nuove", un grande aiuto a pescare i più insidiosi errori di trascrizione dei testi antichi (es: "avremo" invece di "havremo", "a" invece di "à", "ora" invece di "hora"....) che nessun dizionario pesca perchè ritiene la parola giusta e adatta all'italiano; ma anche, audacemente, ipotizzare sostituzioni di massa di parole con altre (Edo non leggere) per vari livelli di normalizzazione o addirittura modernizzazione automatizzata. Si possono passare i vocabolari agli amici di wikizionario... si possono estrarre, identificandole facilmente fra le parole con iniziale maiuscola, nomi di luoghi e di personaggi... si possono elencare le più inusuali istanze dell'uso dell'apostrofo... si possono produrre statistiche sulla frequenza delle parole... forse si potranno elencare le parole con tilde... ecc. ecc. ecc.

Sperimentalmente, se nessuno obietta, creerò nelle pagine in formato testuale una sottopagina "Dizionario" che contiene il relativo vocabolario, ossia l'elenco di tutte le parole separate da un semplice spazio (così una passata con la funzione split di python ricostruisce la lista senza tante storie).--Alex brollo (disc.) 12:33, 19 ago 2008 (CEST)

Siccome ogni promessa è debito, ecco il codice che - richiamato con dict("nome file input (testo)", "nome file output (testo)") esegue le seguenti cose:
  • legge il testo contenuto in file input,
  • trasforma il testo in una lista di elementi, parole e non-parole,
  • prepara una lista ordinata delle differenti parole (il "dizionario) e la scrive su file output,
  • restituisce un messaggio con il numero degli elementi nella lista e del dizionario.
La routine fa tutto ciò in meno di un secondo per un testo di circa 4000 elementi.
# -*- coding: cp1252 -*-

# legge un file testo e richiama splitter()
def dict(f_input="testo.txt",f_output="vocabolario.txt"):
    f=open(f_input)
    testo=f.read()
    f.close()
    global caratteri
    caratteri="ABCDEFGHILMNOPQRSTUVZJKXYWabcdefghilmnopqrstuvzjkwyx_'ìèòàù&"
    lista=splitter(testo)
    voc=list_to_voc(lista,f_output)
    return voc

# trasforma un testo in una lista di elementi 
def splitter(testo):

    #inizializzazioni
    parole=[]
    elem=""
    ft=len(testo)
    
    #caricamento primo carattere
    tc=(testo[0:1] in caratteri)

    #scorrimento e analisi
    for i in range(ft): 
        elem=elem+testo[i:i+1]
        if not tc == (testo[i+1:i+2] in caratteri): #se il successivo carattere appartiene a altro tipo
            parole.append(elem) # aggiorna lista
            elem=""             # svuota elemeno corrente
            tc=not tc           # e cambia tipo

    # caricamento dell'ultima parola
    parole.append(elem)
    return parole

# crea la lista delle diverse parole  (vocabolario)
def list_to_voc(lista,f_output):
    voc=[] # inizializzazione
    for i in range(len(lista)):
        if lista[i][0:1] in caratteri and not lista[i] in voc:
            voc.append(lista[i])
    # ordinamento alfabetico
    voc.sort()

    #scrittura file output (vocabolario)
    f=open(f_output,"w")
    for i in range(len(voc)):
        f.write(voc[i]+" ")
    f.close()
    print "Il testo contiene "+str(len(lista))+" parole e il vocabolario contiene "+str(len(voc))+" parole."
    return 
Allo scopo di testare la cosa, creo Il cavallarizzo/Dialogo 1/Voc e ci carico il vocabolario di Dialogo 1. --Alex brollo (disc.) 22:19, 19 ago 2008 (CEST)
Non riesco a vedere il numero di parole contate... Sarebbe molto utile riuscire in qualche modo a tenere tracci di quante volte una parola viene citata in una pagina: insomma, riuscire a calcolare le ricorrenze. Fatto per una pagina non so se sia difficile farlo per una testo intero (forse si tratta soltanto di semplici somme di numeri). Forza che facciamo cose belle ;-) Aubrey McFato 22:50, 19 ago 2008 (CEST)
La cosa non dovrebbe essere affatto difficile... basta trasformare voc da lista a dizionario. Due o tre righe di codice in più. Nessun limite ragionevole alla lunghezza dei testi e all'ampiezza dei dizionari/delle liste, python è parco nell'uso della memoria. Nel testo-vocabolario non è riportato il numero delle parole, è un messaggio di output video del programma (giusto per sapere cos'ha combinato in quella frazione di secondo che ci mette a finire il lavoro). Ma posso stampare una testata con qualche statistica che stia in una o due righe. L'analisi delle ricorrenze no, quella non la pubblicherei ... la sciverei su un secondo file output. --Alex brollo (disc.) 00:12, 20 ago 2008 (CEST)


Ecco la nuova versione:

# -*- coding: cp1252 -*-

# legge un file testo e richiama splitter()
def dict(f_input="testo.txt",f_output="vocabolario.txt"):
    f=open(f_input)
    testo=f.read()
    f.close()
    global caratteri
    caratteri="ABCDEFGHILMNOPQRSTUVZJKXYWabcdefghilmnopqrstuvzjkwyx_'ìèòàù&"
    lista=splitter(testo)
    voc,stat=list_to_voc(lista,f_output)
    return (voc,stat)

# trasforma un testo in una lista di elementi 
def splitter(testo):

    #inizializzazioni
    parole=[]
    elem=""
    ft=len(testo)
    
    #caricamento primo carattere
    tc=(testo[0:1] in caratteri)

    #scorrimento e analisi
    for i in range(ft): 
        elem=elem+testo[i:i+1]
        if not tc == (testo[i+1:i+2] in caratteri): #se il successivo carattere appartiene a altro tipo
            parole.append(elem) # aggiorna lista
            elem=""             # svuota elemeno corrente
            tc=not tc           # e cambia tipo

    # caricamento dell'ultima parola
    parole.append(elem)
    return parole

# crea la lista delle diverse parole  (vocabolario)
def list_to_voc(lista,f_output):
    voc=[] # inizializzazione
    stat={} 
    for i in range(len(lista)):
        if lista[i][0:1] in caratteri:
            if not lista[i] in voc:
                voc.append(lista[i])
                stat[lista[i]]=1
            else:
                stat[lista[i]]=stat[lista[i]]+1
    # ordinamento alfabetico
    voc.sort()

    #scrittura file output (vocabolario)
    f=open(f_output,"w")
    f.write("Il testo contiene "+str(len(lista))+" parole e il vocabolario contiene "+str(len(voc))+" parole.\n\n")
    for i in range(len(voc)):
        f.write(voc[i]+" ")
    f.close()
    f=open("stat.txt","w")
    for i in range(len(voc)):
        f.write(voc[i]+"\t"+str(stat[voc[i]])+"\n")
    f.close()
    print "Il testo contiene "+str(len(lista))+" parole e il vocabolario contiene "+str(len(voc))+" parole."
    return voc,stat

Questa scrive una testatina sul file di output principale (default vocabolario.txt) e in più scrive la lista con il numero di ricorrenze su stat.txt, pronta a essere copincollata su excel per giocarci. Ho approfittato per rimediare a una svista (anche il carattere & è una parola) --Alex brollo (disc.) 01:00, 20 ago 2008 (CEST)

Routine di evidenziazione parole sospette[modifica]

Questa routine, da aggiundege al programma precedente, esegue il confronto fra un testo e un vocabolario, e produce un nuovo testo in cui tutte le parole "nuove" (sospette), rispetto al vocabolario, sono marcate da Template:?.

def ki(filetesto="testo.txt",filevoc="vocabolario.txt",fileoutput="testo1.txt"):
    global caratteri
    caratteri="ABCDEFGHILMNOPQRSTUVZJKXYWabcdefghilmnopqrstuvzjkwyx_'ìèòàù&"
    nw=0
    f=open(filetesto)
    testo=f.read()
    f.close()
    f=open(filevoc)
    voc=f.read()
    f.close()
    voc=voc.split()
    lista=splitter(testo)
    for i in range(len(lista)):
        if lista[i][0:1] in caratteri:
            if not lista[i] in voc:
                nw=nw+1
                lista[i]="{{?|"+lista[i]+"}}"
    f_output=open(fileoutput,"w")
    for i in range(len(lista)):
        f_output.write(lista[i])
    f_output.close()
    print "Sono state individuate "+str(nw)+" parole sospette; il testo è su "+fileoutput
    return

Primo risultato: la pagina Pagina:Il cavallarizzo.djvu/221, dove le parole in arancio sono quelle "marcate" da questa routine. --Alex brollo (disc.) 07:25, 21 ago 2008 (CEST)

Dizionario personale su Firefox[modifica]

Ho appena scoperto che il controllo ortografico di Firefox aggiunge le parole personali nel file persdict.dat che risiede in una cartella di sistema ed è liberamente editabile (le parole però devono essere suddivise da un solo carattere \n "alla linux"). :-)

Se esistesse la possibilità di caricare su Firefox un dizionario vuoto il controllo ortografico si appoggerebbe solo a persdict.dat... :-) :-) Pensate anche voi quello che penso io? --Alex brollo (disc.) 13:40, 21 ago 2008 (CEST)

Richiesta bot per liste di pagine Indice: classificate per SAL[modifica]

Le opere dei vari progetti sono listate da un bot che le classifica per SAL. Non ho trovato una lista di opere con testo a fronte (pagine Indice:, elencate nella Categoria:Sommari) da richiamare nel Progetto:Trascrizioni. Sarebbe molto utile che le opere in corso di trascrizione fossero anche classificate per grado di difficoltà; non escluderei di usare la lista eventualmente creata e aggiornata dal bot per inserire i dati in una tabella con alcuni campi aggiuntivi (grado di difficoltà, primo contributore, note). Penso che la cosa potrebbe essere utile, soprattutto per i newbies che "cercano lavoro". --Alex brollo (disc.) 15:31, 20 ago 2008 (CEST)

Credo che faccia parte delle cose da fare di iPork: prima di quest'estate le pagine Indice erano molte meno e si è deciso di darci sotto solo da poco, quindi devono ancora entrare nella rivoluzione SAL 2.0. Tu ricordalo ad iPork e vedrai che le inserisce nella nuova struttura. --Aubrey McFato 20:14, 20 ago 2008 (CEST)

Archivio storico dei permessi accordati ai bot[modifica]

sto per creare una pagina in cui a partire dai vari log cerco di ricostruire le procedure di attivazione dei primi bot. Lo ritengo un atto dovuto in vista della progressiva regolarizzazione del flagging dei prossimi bot. Se gli utenti attivi possono scrivere qui sotto come è avvenuto il flagging (tramite colloquio via chat, previa "prova su strada" loggati come utenti e non come bot ecc.) sarebbe utile perché sia messo in chiaro. Il fatto che si chiuda un periodo non implica che se ne debba perdere la memoria. - εΔω

Alebot cerca un tutor[modifica]

La mia idea sarebbe di usare Alebot in modo leggermente anomalo: non per attività ripetitive di verifica/correzione di massa, ma per letture di massa seguite da elaborazione esterna con python dei dati estratti (ed eventuale scrittura dei risultati). In pratica, le routine pywikipedia non saranno lanciate come tali, ma saranno piuttosto integrate in un programma, o meglio in un ambiente python e fungeranno quindi come "interfaccia verso wiki" piuttosto che come script autonomi. In pratica, se le cose funzionano come immagino, pywikipedia mi risparmierà tediosi copia-e-incolla.

Problema: mi troverò di fronte a problemi un po' inconsueti fra i bottolatori, e se possibile avrei bisogno dell'aiuto di qualcuno di voi che maneggi python senza difficoltà, e con pazienza verso chi (io) usa python ma con un approccio do-it-yourself pieno di grossi buchi. :-( .

Primo vergognoso problema: ho impostato UTF-8 come codifica console nell'user-config; carico senza colpo ferire una pagina in una variabile stringa; ma quando tento di scriverla su un file testo, con il metodo .write, python si rifiuta per problemi di codec. Proverò con prickle, ma io ho bisogno assoluto di maneggiare i testi in modo semplice e intuitivo... DEVO riuscire a leggere e scrivere file testo senza intoppi, sia da python che da Blocco note o da qualsiasi banalissimo programma di gestione di file testo. Come se ne esce? Dove sto sbagliando? E se non qui: dove mi consigliate di porre domande di questo tipo?--Alex brollo (disc.) 12:36, 4 ott 2008 (CEST)

Credo che il problema sia blocco note, in realtà... Non codifica in UTF-8, secondo me. Quando io provai per la prima volta il bot, avevo un problema simile, e Qualc1 mi disse di cambiare editor (allora c'era EmEditor libero) e con quello potevo controllare la codifica delle mie pagine. Pur troppo è tutto quello che so, sarebbe bello passasse di qua Qualc1, ma latita da un bel po'. --Aubrey McFato 13:02, 4 ott 2008 (CEST)
Temo che il problema sia più sottile: qualcosa nei gangli di Python. Sto studiando il manuale in aree sconosciute (modulo codecs). Il problema sta nella codifica ascii di default per la scrittura su file txt. Devo capire questa cosa perfettamente! Il modulo codecs è promettente. --Alex brollo (disc.) 19:41, 4 ott 2008 (CEST)

Alebot e Unicode: busillo risolto[modifica]

Risolto il problema unicode. Fermo restando che il mio PC (la mia "console") ragiona in latin-1, quando riceve un file in lettura da wiki riceve un oggetto unicode oggetto, che va trasformato in una stringa latin-1 con questo codice:

oggetto=oggetto.encode("latin-1")

A questo punto oggetto è una normale stringa e può essere concatenata, confrontata, stampata e salvata in file txt. Prima di scrivere oggetto (o qualsiasi altra cosa letta da file txt locale, o scritta a tastiera) su wiki occorre fare la trasformazione inversa:

oggetto=unicode(oggetto,"latin-1")

Sembra facile, ma ce ne ho messo.... --Alex brollo (disc.) 08:50, 10 ott 2008 (CEST)

Pia illusione[modifica]

Non avevo risolto affatto. Il primo carattere non previsto da Latin-1 mi ha rigettato nello sconforto.

Al momento - lo scrivo per futura memoria e per evitare mali di testa a chi facesse il mio stesso percorso - ho rilevato che:

  1. se importo un testo mediante copia-e-incolla da wiki in ambiente python, questo testo risulta automaticamente codificato in cp1252 (la mia "codifica di console");
  2. se lo leggo via bot con get(), risulta essere una stringa unicode;
  3. se voglio salvare una stringa unicode in un file, devo codificarla in utf-8;
  4. se voglio trasformare una stringa non unicode in una stringa unicode, devo tener conto di com'è codificata; per non fare una enorme confusione, se la devo memorizzare in un file è meglio trasformarla in utf-8: cp1252 -> unicode -> utf-8.

Riscriverò tutto, in modo da maneggiare solo ed esclusivamente stringhe unicode, e trasformarle solo e unicamente in utf-8 nel caso di salvataggio su file. --Alex brollo (disc.) 08:51, 7 nov 2008 (CET)

Bot che leggono la propria pagina discussione[modifica]

Ai bottolatori una domanda. E' mai stata battuta la strada di far leggere a un bot i messaggi che gli vengono inviati nella pagina di discussione? Potrebbe essere un interessante sistema per controllare l'azione di un bot "attivo ma dormiente", che però ogni tot tempo dia un'occhiata se pende qualche richiesta... --Alex brollo (disc.) 08:51, 7 nov 2008 (CET)

Qui su Source no. Interessante idea, cmq. Più che la pagina di discussione, forse dovrebbe leggere Wikisource:Richieste ai bot. Ma credo che su Pedia siano molto più scafati rispetto a noi, (e su Botwiki come ti sarai accorti non c'è nessuno ;-)). :Anche la chat IRC di Wikipedia può essere utile (spesso vado là a chiedere qualcosa: #wikipedia-it) o addirittura la chat dei botolatori (#botolatori o qualcosa del genere, c'è nelle pagine pediane). --Aubrey McFato 10:29, 7 nov 2008 (CET)
Si, su Botwiki-bar ho trovato un severo ammonimento a non floodare il bar con discussioni non pertinenti. :-)
Effettivamente anche quelle pertinenti non è che siano seguitissime... ;-)
Vista la pagina, che mi suggerivi, ma come hai intuito, io non indendevo una richiesta al manovratore, ma una richiesta proprio al bot... in una lingua comprensibile al bot, tutta da inventare; ci penseremo se avremo tempo (cioè: mai ;-) ). Comunque, certo, la pagina è quella giusta... i bot quella dovrebbero leggere alla ricerca di messaggi "comprensibili". --Alex brollo (disc.) 23:10, 7 nov 2008 (CET)

Progetto avviato[modifica]

Dal dire al fare c'è di mezzo python. :-)

Alebot ha cominciato a leggere i messaggi nella sua pagina di discussione, ed è in grado di rispondere con un messaggio di cortesia, se non riconosce la domanda; e di fare qualcosa, se la domanda è appropriata. Risponde nella pagina di discussione di chi ha inviato il messaggio: ricordatevi quindi di firmarlo. Al momento i messaggi "capiti" sono quelli in cui c'è una parola chiave verbale: leggi, o esamina, o controlla (seguiti da uno spazio) e un complemento oggetto del verbo, consistente in un wikilink formalmente corretto a una pagina Autore. Non è molto, ma - come sa chi programma - le cose complicate si costruiscono partendo da quelle semplici.

Ora, non c'è alcun limite al tipo di richieste che nel tempo Alebot potrebbe imparare a riconoscere, nè c'è alcun limite alle azioni che potrebbe fare a seguito di una singola richiesta. Qualcuno di voi vuol fare uno sforzo di fantasia e buttare là un po' di proposte? --Alex brollo (disc.) 18:25, 16 nov 2008 (CET)

Tu sei tutto matto :-D. Questa nuovo progetto mi sembra molto furbo, potrebbe sveltire in maniera significativa le richieste ai bot, e se si decide insieme la pagina da utilizzare e un minimo di comandi la cosa diventa veramente molto interessante. Anche perchè se il buon Alebot venisse gestito assieme agli scipt di Bimbot sull tool serverr potrebbe risolvere le cose dalla sera alla mattina. Fra le cose che mi vengono in mente, aggiornamento della tavbella autori o di altri dati che non necessitano un aggiornamento giornaliero (della serie, si può decidere di aggiornare ogni tot giorni sempre ma anche lasciare la possibilità di un aggiornamento on demand).
Poi potrebbe essere utile per le statistiche dei libri (contare le parole di un libro, o di una categoria). Ovviamente quello si potrebbe fare per tutti i libri, e tutte le categorie, ma sicuramente servirebbero aggiornamenti, e quello potrebbe essere fatto. (ma i bot in quella direzione devono essere sviluppati ancora bene....) Altre idee per ora non ne ho. Questo discorso di ottimizzazione mi sembra interessante, comunque :-)

--Aubrey McFato 23:10, 16 nov 2008 (CET)

Recentemente ho provato un'ebbrezza simile su commons. per ruotare due immagini da me scorrettamente caricate mi è bastato inserire un template {{Rotate|180}} e nel giro di un giorno un bot le ha automaticamente scaricato, ruotato e ricaricate. Questo è un altro spunto interessante. - εΔω 23:29, 16 nov 2008 (CET)
-> Aubrey: la parola corretta per definirmi è "molto pigro", di quella pigrizia dei programmatori mancati, che fa perdere quattro notti per la soddisfazione di risparmiare cinque minuti di lavoro. ;-) Attivati gli script di Alebot sul mio PC, la procedura per attivare la lettura dei messaggi e ciò che ne consegue è piuttosto semplice (da vero pigro): scrivo sulla riga di comando "messaggi()". Il resto lo fa lui. --Alex brollo (disc.) 11:59, 17 nov 2008 (CET)

La soddisfazione di scoprire l'acqua calda.... ;-)[modifica]

Ho fatto la conoscenza con il bot di ThomasV su en.source... bene, lui ed un altro sono bot interattivi; ossia, sono in grado di ricevere richieste degli utenti ed eseguirle direttamente. Guarda un pò, con un messaggio nella loro pagina di discussione... ovviamente fanno cose fenomenali e notificano molto bene quello che stanno facendo e che hanno fatto; Alebot non ci arriverà mai e nemmeno serve provarci; un paio di messaggi, e il sistema potrebbe essere implementato anche da noi nella sua versione perfezionata, anche se lo vedo un tantinello rischioso; ma la soddisfazione di aver intuito la strada, quella almeno resta! :-) --Alex brollo (disc.) 22:28, 13 dic 2008 (CET)

Bot interattivo: cercasi manovratori[modifica]

Lo stato dell'arte[modifica]

Dopo alcuni test, sono pronti alcuni script per il "bot interattivo": uno script python abbastanza semplice, costituito da un ciclo di attesa della lunghezza di n secondi ripetuto per m volte che viene richiamato da un prompt python semplicemente come >>> go(n,m); alla fine dell'attesa di n secondi viene lanciato uno script di lettura di una pagina dove sono eventualmente state scritte delle "richieste"; vengono cercate le richieste non ancora soddisfatte; una a una vengono evase, e alla fine tutte le richieste eseguite sono marcate come fatte in modo da non essere ripetute alla ricerca successiva. Il ciclo viene ripetuto per m volte, poi termina. Una a una sto aggiungendo le procedure della roadmap autori. In linea di massima, scriverò solo routine che intervengano "un caso alla volta": niente azioni di massa, molto pericolose. Inoltre, nonostante la presenza di un bot interattivo possa far immaginare procedure di elaborazione innovative, io per ora non suggerisco alcuna innovazione, ma solo integrazione e automatizzazione, utilizzando la rete di automatismi via template + Bimbot esistente tal quale. Vedi Utente:Alebot e sua pagina di discussione che funge da "pagina delle richieste".

Lo script può correre in qualsiasi PC collegato a Internet, in cui esista un bot python flaggato. Per ora gira sul mio, ma ovviamente gira solo quando il pc è acceso e lo script è stato lanciato; se fosse disponibile anche sui pc di altri bottolatori, la probabilità di trovare un bot interattivo attivo aumenterebbe di parecchio. Lo script occupa pochissime risorse in fase di pausa, e anche in caso di richieste in corso di elaborazione le risorse impegate sono minime; quindi si tratta di lanciarlo e lasciarlo correre come thread autonomo senza pensarci più. Ovviamente mi aspetto che nelle mani di altri utenti ne succedano di tutti i colori, ma sarebbe comunque utile che venisse testato.

Chi vuole fare la prova? --Alex brollo (disc.) 13:59, 27 gen 2009 (CET)

Io ;-). Non so se potrò ion questi giorni, ma dalla prossima settimana sarò più presente (se risolvo problemi di connessione del mio nuovo appartamento estone) ;-) Aubrey McFato 19:06, 27 gen 2009 (CET)
Benissimo. Dimmi quando sei pronto che ti mando gli script. Nel frattempo ci aggiungo un po' di documentazione (il tallone d'Achille" dei programmatori dilettanti pasticcioni ;-) ) --Alex brollo (disc.) 11:11, 28 gen 2009 (CET)

Il codice per il bot interattivo[modifica]

Ho pubblicato qui: Utente:Alebot/Scripts interattivi gli script python correnti che animano l'uso di Alebot come bot interattivo. Chi ha coraggio, pazienza e vivace senso dell'umorismo (i veri programmatori si rotoleranno dalle risa), è benvenuto a dare un'occhiata e se lo desidera a fare man bassa se trova qualche idea interessante da sviluppare. --Alex brollo (disc.) 08:18, 10 feb 2009 (CET)

Problema Bimbot: meglio prevenire che curare[modifica]

Bimbot (o altri bot "listatori") scorrono specifiche categorie e agiscono su quelle. Ho scoperto con raccapriccio che i miei test su tl|Autorecitato e tl|testocitato, seminati qui e là, hanno categorizzato pagine aliene che Bimbot ha incluso nelle liste che produce, con risultati abbastanza allarmanti. La pulizia è stata molto faticosa, ho dovuto svuotare varie pagine-sandbox e distruggere parecchi interessanti test. Conclusione: attenti a utilizzare templates, anche per prova o per dimostrazione, che generino categorie pericolose... --Alex brollo (disc.) 11:05, 27 mar 2009 (CET)

Io mi sono accorto da vario tempo che tu metti template ovunque per prova, e categorizzi le pagine sbagliate. Ma sinceramente non pensavo al Bimbot, che fa un casotto con le liste. Ok, adesso lo sappiamo ;-) --Aubrey McFato 14:36, 27 mar 2009 (CET)

category.py[modifica]

Ho cominciato a rovistare in pywikipedia (al momento Alebot ha usato solo le due funzioni leggi pagina e scrivi pagina). Ho aperto category.py e ho visto la luce. Ma ho fatto immediatamente una modifica (molto semplice): invece che far scrivere l'output su una pagina wiki, con sperpero di byte utili, lo memorizzo in un file locale (come file txt utf-8 o come file pickle). Chi è interessato, mi chieda.

Intravedo la possibilità di costruire uno strumento di intersezione di categorie, molto ma molto più potente di incategory, da utilizzare mediante richiesta a Alebot: se c'è qualche ardimentoso che vuole dissodare con me la questione, avrei piacere di parlarne in modo che non venga fuori il solito "scarafone bello a mamma sua" ;-) --Alex brollo (disc.) 11:43, 4 mag 2009 (CEST)

Sai che io ci sono, ma abbiamo bisogno anche di altre voci, soprattutto per la teoria, io e te ci siamo parlati più di una volta... --Aubrey McFato 13:19, 4 mag 2009 (CEST)
Brevissimo sunto per chi non ha seguito i voli pindarici fra me e Aubrey (parte online e parte offline).
L'intersezione di categorie permette di identificare le voci che appartengono contemporaneamente a più categorie. Esempio: se esiste una categoria generica Categoria:Testi del XIX secolo e un'altra categoria Categoria:Saggi, l'intersezione delle due categorie restituisce i Saggi del XIX secolo, senza bisogno che si crei una specifica categoria: Categoria:Saggi del XIX secolo.
Ora, esiste un meccanismo denominato incategory che permette l'intesezione di categorie, ma ha uno svantaggio colossale: legge le categorie che sono scritte materialmente nel codice delle pagine, e NON legge, invece, le categorie create "al volo" dai templates. Inoltre la sintassi è un pochino complessa (non molto, ma quanto basta a scoraggiare di primo acchito).
Conclusione: se una domanda ad Utente:Alebot con una sintassi ultrasemplice permettesse di ottenere in risposta un elenco di link, corrispondente all'intersezione di categorie, non mi sembrerebbe male, anche se sarebbe adatta solo per ricerche "non immediate" (per ora Alebot lavora solo quando io lo lancio).
Sperimentalmente, tale elenco potrebbe essere stampato sulla pagina discussioni utente dell'utente richiedente, o anche in sandbox; in futuro, è possibile (mi dice jayvdb) che Alebot spedisca la risposta via mail sfruttando peciale:EmailUser. --Alex brollo (disc.) 14:12, 4 mag 2009 (CEST)

Una possibile novità su Alebot (e non solo)[modifica]

Ipotizziamo che esista una categoria Categoria:Richieste al bot oppure un template: Template:Richieste al bot. Immaginiamo, nel primo caso, che la categoria venga richiamata in una pagina autore con la sintassi: [[Categoria:Richieste al bot|Roadmap ~~~~]] su una pagina Autore, o nel secondo caso con qualcosa di simile a {{Richieste al bot|Roadmap|~~~~}}, che genererebbe una categoria Richieste al bot. Questo meccanismo sarebbe del tutto equivalente alla corrispondente richiesta al bot interattivo Alebot sulla sua pagina di discussione, ma con due strepitosi vantaggi:

  1. sarebbe fatta direttamente sulla pagina per la quale si chiede l'intervento, semplificando la richiesta (non occorrerebbe nè spostarsi in un'altra pagina, nè linkare la pagina su cui si richiede l'intervento, perchè sarebbe implicita);
  2. il "trucco" di passare il contenuto della richiesta nel secondo campo di Categoria (quello usato, in sostanza, per far apparire le categorie in ordine alfabetico), permetterebbe di elencare le pagine in un'unica categoria, anche in presenza di richieste differenziate. Nel caso dell'uso di un template, i parametri opzionali potrebbero permettere di articolare la richiesta molto bene.

Concretamente, il bot, all'avvio della routine:

  1. leggerebbe la categoria Richieste al bot;
  2. una per una, leggerebbe le pagine che appartengono alla categoria, e recupererebbe il testo della chiamata originale alla categoria o il template e lo eseguirebbe;
  3. opzionalmente spedirebbe notifica dell'esecuzione all'utente richiedente con un messaggio in pagina discussione e/o una mail;
  4. finiti i lavori, cancellerebbe la chiamata alla categoria o al template nella pagina dove sono contenuto, facendo quindi sparire la pagina dalla categoria Richieste al bot.

Si potrebbe perfino integrare una o più richieste "di default" in una delle pagine standard da copiaincollare (tipo, il tl|Autore), attivando il meccanismo quasi all'insaputa dell'utente richiedente.

Comments? --Alex brollo (disc.) 08:54, 20 mag 2009 (CEST)

Alex, come al solito, ho bisogno di un esempio pratico per capire meglio. Lagrande (disc.) 07:54, 21 mag 2009 (CEST)
Hai presente il template {{OCR}} che si semina su una pagina bianca e che attiva il bot che lancia l'interpretazione della pagina quando il bot si attiva? Ecco, la stessa cosa... diciamo che compilata una nuova pagina Autore si semina qualcosa come {{Alebot|Roadmap}} e non ci si pensa più; oppure, caricato il djvu File:Opera omnia di Pinco Pallino.djvu su Commons, creata la pagina testuale Opera omnia di Pinco Pallino con la sua Intestazione e il suo Infotesto, e un Sommario non formattato, ci si semina un ipotetico {{Alebot|Roadmap opera}} e ci si ritrova con la pagina Indice Indice:Opera omnia di Pinco Pallino.djvu pronta, tutti gli schemi dei capitoli funzionanti, i sommari formattati sia in pagina Indice che in pagina testuale, gli Infotesto caricati e forse qualche altra cosetta. :-) --Alex brollo (disc.) 08:22, 21 mag 2009 (CEST)
Eccellente... avanti così, :O --Xavier121 09:51, 21 mag 2009 (CEST)
Attivato {{Alebot|Roadmap}} da usare in pagina Autore per l'esecuzione della roadmap e {{Alebot|Apostrofi}} da usare in pagina principale in ns0 oppure in pagina Indice per la conversione apostrofo dattilografico->tipografico nell'intera opera. Il sistema funziona ed è semplice. Le varie funzioni saranno mano a mano registrate nella pagina di Alebot e di Template:Alebot. --Alex brollo (disc.) 01:56, 22 mag 2009 (CEST)
E questo serve solo per l'intera opera? O può essere applicato ad una sola o a più pagine? Lagrande (disc.) 08:09, 22 mag 2009 (CEST)
Bella domanda! In questo momento, agisce solo sulle pagine principali e sulle pagine Indice, dopodichè agisce sull'intera opera. Ma da stasera, agirà anche solo sulla pagina dove è seminato, se si tratta di un capitolo (una sottopagina) o di una Pagina: . Grazie Lagrande del suggerimento! Adesso vedo se nel piccolo spazio dellicona di un pulsante aggiuntivo riesco a simboleggiare la chiamata al template... chi volesse aiutarmi creando un'iconcina mi farebbe un gran piacere! :-) --Alex brollo (disc.) 08:57, 22 mag 2009 (CEST)
Ecco il codice per un eventuale pulsante aggiuntivo che semina la chiamata a Apostrofi:
// Richiamo aggiusta apostrofi
if (mwCustomEditButtons) {
 mwCustomEditButtons[mwCustomEditButtons.length] = {
     "imageFile": "http://upload.wikimedia.org/wikipedia/commons/4/40/Apos_dact_typo.PNG",
     "speedTip": "Apostrofi",
     "tagOpen": '{{Alebot|Apostrofi}}',
     "tagClose": '',
     "sampleText": ""};
};

--Alex brollo (disc.) 09:44, 22 mag 2009 (CEST)

Caro, visto che ancora su queste cose mi sento "imbranata zuppa" (come si dice localmente) quando hai un bell'esempio realizzato me lo fai vedere, così copio da lì? Grazie. Lagrande (disc.) 12:35, 22 mag 2009 (CEST)
Non posso... tutta la procedura non lascia nessuna traccia! Conservami un autore senza roadmap o un'opera con gli apostrofi da correggere! Ma se vuoi avere un'idea, scorri la cronologia di Saggio di rime devote e morali e vedrai:
  1. una mia modifica che consiste nell'aggiunta di {{Alebot|Apostrofi}}
  2. una modifica di Alebot successiva che elimina {{Alebot|Apostrofi}}
Se poi vai in un sottocapitolo qualsiasi, es: Saggio di rime devote e morali/Al grato suon de' celestial strumenti, vedrai nella stessa data e ora una modifica di Alebot che ha convertito gli apostrofi da dattilografici a tipografici. Tutto qui. --Alex brollo (disc.) 13:22, 22 mag 2009 (CEST)


Mefistofelico: facciamo 31![modifica]

Ma visto che il buon Alebot crea le pagine indice, non può automaticamente inserire anche le pagine discussione con l'infotesto (quando corretamente compilato)? E' poi possibile nella pagina testuale, l'automatica creazione della pagina fonte, appena si transclude qualcosa? :) --Xavier121 11:36, 22 mag 2009 (CEST)

Per ora Alebot crea delle pagine Indice assai virtuali, nella mia testa :-).
Però, lo sai che c'hai ragione? Se verrà seguita in modo fedele una ipotetica "roadmap opera" in quattro passi:
    1. creazione e caricamento del file djvu
    2. creazione della pagina testuale principale con Intestazione e sommario Sommario (gioco di parole per suggerire che basta un sommario non formattato ;-) );
    3. creazione della pagina di discussione di detta pagina, contenente Infotesto
    4. aggiunta, in ciascuna voce Sommario sulla pagina del punto 2, dei numeri di pagina di inizio/fine della voce del sommario nel file djvu

allora quello che proponi, sì, è possibile, o perlomeno "gira" nel mio modello mentale di quello che voglio realizzare. I dati necessari ci sono tutti. Manca solo un "ritocco" nel caso dei capitoli che iniziano/finiscono a mezza pagina. --Alex brollo (disc.) 13:06, 22 mag 2009 (CEST)

Ho cominciato a lavorarci, ci vorrà un po' di tempo... le variabili sono parecchie e il codice è lungo da scrivere. --Alex brollo (disc.) 18:52, 23 mag 2009 (CEST)
Da 4 passi siamo arrivati a 2 passi soli:
  1. creazione e caricamento del file djvu
  2. compilazione di Alebot|Roadmap opera

Non è malaccio... :-) --Alex brollo (disc.) 16:15, 26 mag 2009 (CEST)

Piccola modifica di {{Alebot|Apostrofi}}[modifica]

Come da suggerimento di Lagrande, ho effettuato una piccola modifica del codice di {{Alebot|Apostrofi}}. Adesso il bot "capisce" se la pagina in cui si trova il template è una pagina Indice: o una pagina principale Main: (ns0), e un questo caso agisce sulla pagina ma anche su tutte le eventuali sottopagine; se invece la pagina è una sottopagina (un capitolo) in Main: - ns0 oppure se è una pagina Pagina: agisce solo su quella. Se la pagina non fa parte dei tre ns ns0, nsIndice, nsPagina il bot incrocia le braccia, e l'unica cosa che fa è eliminare il tl di chiamata. Per i veramente pigri il pulsante aggiuntivo che ho proposto sopra funziona molto bene: un click ed è fatta (meno di così ... ci sarebbe solo la chiamata automatica di default, magari "agganciata" al passaggio SAL 75% -> SAL 100%, prima sarebbe inutile). --Alex brollo (disc.) 18:50, 23 mag 2009 (CEST)

Interattività[modifica]

Ho semplificato all'osso (ma migliorato di gran lunga) la funzione "interattività". Sotto Progetto:Bot/Elenco dei bot/aubrey.py trovate un programma immediatamente attivo se ne copiate il codice (togliendo i tag pre ovvio) in un file .py qualsiasi (consiglio: aubrey.py) e lo salvate nella directory dove stanno gli script pywikipedia.

Lo script fa una cosa estremamente semplice ma carina. Esamina wikisource per vedere se c'è qualcosa da fare; se trova un elenco di lavori da fare, prende in carico il primo lavoro della lista, lo esegue, e marca la richiesta come fatta; e termina.

Nessun parametro: si lancia da una finestra DOS nella stessa directory con:

python aubrey.py

oppure dal prompt python con:

import aubrey

.

Il giochino è organizzato nel seguente modo (oggi, chissà come cambierà in futuro!). Il sistema si fonda su un template e due categorie.

  • Categoria:Bot calls (nascosta), contiene l'elenco delle pagine in cui ci sono richieste attive; viene consultata dal bot appena viene avviato;
  • Categoria:Bot jobs done (nascosta): contiene l'elenco delle pagine in cui ci sono richieste inattive (ossia: marcate come "eseguite")
  • Template:ToAlebot: viene usato per registrare una richiesta, scrivendo uno o più parametri. Ad esempio, l'unica richiesta, ad oggi, accettata è la seguente:
{{ToAlebot|table2wiki|done=yes}}

che significa: "esegui la trasformazione di tutte le tabelle contenute in questa pagina da codice HTML a codice wiki".

Il risultato (reale: questa è una richiesta attiva, verrà "eseguita" al primo lancio) è il seguente:. Passate con il mouse sopra la faccina, e vedrete la richiesta pendente. In inglese, mi spiace, è un bot che lavora dovunque. :-)

Nell'attimo in cui viene depositato in forma attiva, la pagina dove è contenuto compare in Categoria:Bot calls. Una volta che la richiesta sarà stata eseguita, al testo del template sarà semplicemente aggiunto "done=yes" e le cose si presenteranno così:Seems that the job has been done by Alebot:table2wiki; cambia faccina, cambia il messaggio visibile passandoci sopra il mouse, e la pagina sarà adesso elencata nella categoria Categoria:Bot jobs done. Qualcosa va storto, e bisogna riattivare la richiesta? Basta cancellare il "done=yes". :-)

Al momento, ho impostato un sacco di limitazioni; il lancio del bot esegue una richiesta alla volta, la prima della lista, e prevede che sulla stessa pagina vi sia una sola richiesta. Inoltre, se l'istruzione è incomprensibile, il bot considera ugualmente fatto il lavoro. Con il tempo, e soprattutto: in base ai suggerimenti degli altri eventuali utilizzatori, le cose cambieranno. --Alex brollo (disc.) 09:47, 3 set 2009 (CEST)

Vedo che Aubot ci ha provato, e pure con successo. :-P
Vado a modificare lo script...adesso nel tl verrano accettati due parametri nominali opzionali: user=nome dell'utente richiedente e page=pagina su cui si richiede di agire, che al momento non fanno nulla ma qualcosa faranno. Raccomando di caricare molto spesso la versione corrente di aubrey.py! Siamo alla 0.1. --Alex brollo (disc.) 18:56, 3 set 2009 (CEST)
Lo script mi piace moltissimo, di una facilità disarmante. Scusa se non ti ho detto subito che l'ho provato.
Sta sicuro che ci tengo dietro ;-) --Aubrey McFato 19:28, 3 set 2009 (CEST)

Allora si parte[modifica]

Lo stato dell'arte e la filosofia della cosa è: lo script fa tutto lui. I due nuovi parametri nominali hanno questo scopo:

  1. user = : serve al bot per sapere chi ha chiesto cosa. Nome "secco", senza Utente: e senza quadre. Sarà utilizzato, con calma, per spedire notifiche, inviare mail e quant'altro. Potrei ricavarlo comunque ma non ho voglia di trabajar, perchè il risultato - anche rovistando nella cronologia - potrebbe essere sbagliato.
  2. page = : servirà al bot per capire che l'azione è richiesta apponendo un tl|ToAlebot nella pagina xxx, ma va eseguita sulla pagina yyy. Quindi deve agire su yyy, ma poi anche su xxx per disattivare la richiesta. In un primo tempo yyy sarà il nome di una pagina, poi diventerà opzionalmente una lista e poi magari una categoria o un intero ns o tutti i progetti della famiglia wikisource in tutto il mondo... Chi pol dir. :-)--Alex brollo (disc.) 19:53, 3 set 2009 (CEST)
Vi sono varie funzioni utilissime che richiedono la rapida lettura del testo di migliaia di pagine. Un bot scarica una pagina dal sito in un secondo circa; nello stesso tempo, può leggere migliaia e migliaia di pagine, se già ne possiede una copia in locale. Quindi, gli script che "ripassano" un intero progetto non leggono affatto pagina per pagina il progetto, per cercare le pagine giuste: leggono un dump xml, e nello script xmlreader.py c'è tutto quello che serve per farlo. :-) L'ho appena "violato", e ho estratto un paio di routine che mi interessavano. Saranno anche loro montate nel bot. Prima su ekopedia, dove ho da risolvere un problemino analogo a quello del crosslink, poi, quando le cose saranno sgrezzate, qui. --Alex brollo (disc.) 00:04, 4 set 2009 (CEST)
Ammetto di non aver capito nulla di tutto ciò: che cosa c'è di nuovo rispetto ai soliti programmini pywikipediabot (oltre al fatto di averli scritti, naturalmente)? A quanto ho capito chi ha un bot può usare questi programmi (ottimo), chi non lo ha deve chiedere a qualcuno di farlo, anche se in modo semplificato. Scusate se sono tardo. --Nemo 00:32, 11 set 2009 (CEST)
L'automatismo è integrale. Se aubrey.py fosse in toolserver, funzionerebbe nella stessa identica maniera. Nessun bisogno di un "guidatore". Nè più nè meno del vecchio {{OCR}} di ThomasV... :-) --Alex brollo (disc.) 01:44, 11 set 2009 (CEST)

Momento di confusione maxima[modifica]

A seguito di un inconveniente sui bot ho scoperto (con enorme ritardo) le funzioni API e json, cose di cui non immaginavo l'esistenza, entrambe correlate con l'interazione con i server wiki da parte di bot vari; e ho anche scoperto che un piccolo, leggerissimo modulo python (wikitools) sostituisce gran parte del monumento pywikipedia, ed è proprio modellato su API e json.

Chi ha qualche esperienza di queste cose? Sono troppo avanti o troppo indietro? In ogni caso, avanti o indietro, sono del tutto disorientato. ;-) --Alex brollo (disc.) 10:37, 24 set 2009 (CEST)

Alebot interattivo: si riparte[modifica]

Molte cose sono cambiate dall'ultimo messaggio, meno che la mia conusione che rimane profonda. :-)

I profondi cambiamente nella struttura di Intestazione e la verifica della inefficienza dei precedenti modelli di "richiesta interattiva al bot", esperienze molto interessanti comunque, mi hanno indotto a fare piazza pulita e a ricominciare daccapo. Forse stavolta è la volta buona. Si riparte con l'ultimo tipo di interrogazione al bot mediante {{ToAlebot}}, che permette di ottenere elenchi provenienti dalla "intersezione di categorie". Al momento tali elenchi sono stampati di default in Wikisource:Pagina delle prove; ma si tratta solo di un test. L'idea è di lasciare il bot attivo per molte ore al giorno, in modo che la risposta alla query arrivi nel giro di uno-due minuti. Chi è interessato all'uso, ma soprattutto allo sviluppo della cosa, mi contatti; tenete conto che non ci sono limiti a quello che un bot potrebbe fare rovistando contemporaneamente nei server wiki e nell'hard disk "di casa sua" (dove, ad esempio, può leggere comodamente, in sequenza o ad accesso casuale, l'intero dump xml di source..). --Alex brollo (disc.) 14:32, 2 apr 2010 (CEST)

Io, ovviamente, posso offrire il mio bot, non ci metto niente ad accenderlo quando sto lavorando e mi ciuccia poche risorse (solitamente). --Aubrey McFato 11:15, 3 apr 2010 (CEST)
Compliimenti per la faccenda delle query! Anche se non riusciamo ad avere una pagina speciale, si potrebbe
  • (facile) fare una pagina in ns Wikisource ad hoc per queste cose, liberiamo Bimbot dalla questione delle liste o almeno rendiamo interattive anche loro, soprattutto se
  • (difficile) chiediamo di inserire Alebot nel toolserver!! O passiamo lo script a Bimbot, che è ancora più facile. Pensaci. --Aubrey McFato 11:44, 3 apr 2010 (CEST)

Avviso: Bug Alebot[modifica]

Ho bloccato la funzione di Alebot che aggiorna automaticamente Qualità delle pagine Indice sulla base della Qualità delle pagine, per ripetuto e inspiegato bug con erronea attribuzione di SAL 25% a Indice:Rime (Vittorelli).djvu. Appebna ne capisco il motivo, riattivo. --Alex brollo (disc.) 15:59, 27 set 2010 (CEST)

Il bug stava nella testa del guidatore di Alebot, non nel bot. Tutto a posto, tutto nella norma. :-) --Alex brollo (disc.) 20:22, 27 set 2010 (CEST)

Alebot su toolserver[modifica]

Ho il piacere di dirvi che, in qualche modo, sono in grado di far correre script python su toolserver ed anzi, proprio adesso una variante ultrasemplificata di Alebot corre proprio là.

Le funzioni che svolge sono solo tre e solo sul NsPagina:

  1. correzione apostrofi
  2. "semantizzazione" del SAL pagina
  3. "espansione" dei tag [[dc|....]], sviluppati specificamente per il Progetto:Dante Alighieri. In breve, scrivendo su qualsiasi pagina Pagina uno "pseudo-link" come questo: [[dc|Inferno|XX|20|40]] il bot, con un meccanismo che non è complesso ma che vi farei un dispetto a spiegarvi ;-), "carica" al posto del codice i versi da 20 a 40 del canto XX dell'Inferno, formattandoli in modo congruo per la versione contenuta nella pagina.

Attualmente la temporizzazione è di un lancio ogni 10 minuti. --Alex brollo (disc.) 00:10, 19 nov 2010 (CET)

Bot e Bibbia[modifica]

Dopo un po' di lavoro sul Progetto Bibbia sono riuscito a sviluppare uno script in PHP( è possibile farlo anche in Javascript) che sostituisce automaticamente il codice HTML preso da laparola.net con la formattazione wiki, in particolare con la formattazione per la Bibbia. Il codice è questo:

<?php
$capitolo = 5;
$testo = $_POST['testo'];
$tag = array('<strong>','<i>','</strong>','</i>','&nbsp;');
$replacetag = array('<br>{{v|'.$capitolo.'|','\'\'','}}','\'\'','');
$newtext= str_ireplace($tag, $replacetag, $testo);
echo 'Intestazione: {{IncludiIntestazione|sottotitolo=|prec=../capitolo_'.($capitolo-1).'|succ=../capitolo_'.($capitolo+1).'}}';
echo '<br><h1>Testo wikificato</h1>'.$newtext.'<br>[[Categoria:Testi sacri del cristianesimo]]';
?>
<html>
<head>
</head>
<body>
<form action="" method="post">
<textarea name="testo" cols="" rows=""></textarea>
<input type="submit" />
</form>
</body>
</html>

Trattasi di un semplice input di testo nel quale si inserisce il testo in HTML preso da laparola.net e, una volta settato il capitolo (via codice solo perchè l'avevo sviluppato per semplificare a me il lavoro ma sapete benissimo che si può rendere quel parametro, e anche tutti gli altri, decidibili dall'utente), genera automaticamente l'intestazione e sostituisce ai tag "li" e "strong" i versetti e inserisce anche la categoria. Mi chiedevo se fosse possibile creare un bot che eseguisse questa cosa sulle pagine dove l'utente non doveva far altro se non inserire l'HTML e il bot poi sostituiva. Oppure creare un pulsante nell'editor di testo che, una volta inserito il codice HTML preso da laparola.net, automaticamente lo sostituisce? (Sotto suggerimento di Candalùa) Aspetto una vostra risposte. Grazie, Samuele Papa (disc.) 19:53, 18 ago 2011 (CEST)

Entrambe le proposte sono più che fattibili, ma servirebbero ancora a distanza di così tanto tempo? --Ricordisamoa 10:46, 15 giu 2013 (CEST)

Obsolescenza di compat[modifica]

@Alex brollo, CandaluaÈ in atto una richiesta di commenti su MediaWiki.org sulla possibilità di dichiarare la vecchia versione "compat" (precedentemente "trunk") ufficialmente deprecata in favore di "core". Se usate script personalizzati per compat, fareste meglio ad aggiornarli. Avendo maturato una discreta conoscenza del framework, mi offro di assistervi nella migrazione. --Ricordisamoa 08:13, 4 mag 2014 (CEST)

Grazie Ricordisamoa! Potresti sistemare itsource in modo che usi core di default? E poi: haisottomano una pagina doc che illustri le differenze più pervasive fra core e compat e gli intoppi più comuni per chi era abituato al "vecchio compat"? Questi mesi sono stati terribili, perchè ci sono state quattro o cinque grosse e profonde modifiche tutte insieme (svn->git, toolserver->Labs, migrazione in eqiad, trunk->rewrite poi rinominati... un campionario di frustrazioni per quelli "a metà strada" come me)--Alex brollo (disc.) 07:17, 5 mag 2014 (CEST)
Ricordisamoa, quali sarebbero le conseguenze pratiche della deprecazione? Io ho degli script che sono praticamente immutati da anni; funzionano, a parte il recente bug sulla login, e sinceramente finché funzionano non ho molta voglia di migrare. Ci ho provato due giorni fa e sono rimasto piuttosto scoraggiato; con il ramo core il software sarà anche migliorato, ma ancora non vedo una documentazione delle API chiara, completa e comprensibile, e ho perso un mucchio di tempo per fixare cose stupide (esempio: un parametro che si chiamava "site" ora si chiama "source". Ma io non lo sapevo, e ricevevo un errore. Ho guardato il codice, e l'unico laconico commento diceva: "source: the source of the page". Ah beh, grazie tante!). Per cui alla fine, visto che compat ha ripreso a funzionare, ho rinunciato a migrare. Ora se compat viene deprecato sarò costretto a migrare per forza perché non funzionerà più, o posso continuare ad usarlo fintantoché gli script rimangono inalterati? Candalùa (disc.) 20:54, 5 mag 2014 (CEST)
@Alex brollo è sufficiente configurare il PYTHONPATH in modo che punti al branch "core", già presente su Tool Labs. Ma i manovratori devono aggiornare gli script (README-conversion.txt è un'utile guida). Le transizioni da SVN a Git, da Toolserver a Labs, da pmtpa a eqiad hanno aumentato a tal punto l'efficienza del sistema da rendere insignificanti gli sforzi necessari. @Candalua è meglio inserire i parametri di base come "source" (del costruttore Page, suppongo) come posizionali invece di nominali. Per deprecazione intendo, in sostanza, un avviso ai manovratori che il framework non è più aggiornato (di fatto non lo è più da quando alcuni nuovi script sono stati introdotti in "core") e potrebbe danneggiare i siti senza preavviso. Continuerà comunque a funzionare finché le API lato server non cambieranno. --Ricordisamoa 13:01, 6 mag 2014 (CEST)
Qui sta il punto.... per un certo tipo di utenti esperti, gli sforzi vengono considerati "insignificanti". Dalla marea di richieste di aiuto comparse in lista nel momento della migrazione a eqiad, tanto per fare un esempio, mi pare assodato che non solo per me, ma acnhe per qualcun altro gli sforzi sono invece "significanti". Altrochè se lo sono. Il fatto che si stenti a capirlo, ai "piani alti", è un grosso problema. Alle volte l'utente medio come me ha l'impressione di essere sottoposto ad un test: "se non trovi tutto ciò facile, va a zappare la terra o a collezionare francobolli e non impicciarti di software". Ti pare una bella cosa? --Alex brollo (disc.) 16:34, 6 mag 2014 (CEST)
Io soffro tuttora del passaggio a eqiad (leggi: i file .htaccess non funzionano più ò⁔ó) ma per facilitare la migrazione è stato approntato uno strumento totalmente automatico. E tutti i siti Wikimedia sono esperimenti, è assoldato che chiunque vi partecipi sappia mettersi in gioco. Ma ricordo che siamo in "Discussioni progetto:Bot". --Ricordisamoa 17:54, 6 mag 2014 (CEST)
Già... scusa lo sfogo OT. :-( --Alex brollo (disc.) 11:21, 7 mag 2014 (CEST)

ConteggioAutori.py[modifica]

Il template "Conteggio autori" è stato cancellato, suppongo che anche lo script omonimo non serva più. --Ricordisamoa 07:56, 12 ago 2014 (CEST)