22 settembre 2009

Generatore automatico di proclami di Berlusconi: eccovi il codice


Siccome me lo avete chiesto in tanti, e visto che non mi piace tenermi il divertimento tutto per me, ho deciso di spiegarvi come fare a creare un generatore casuale di frasi personalizzabile a vostro piacimento.
Occorre premettere che se siete utenti di Blogspot il codice funzionerà così com'è soltanto se lo inserite in una colonna laterale, mentre per farlo andare anche nel corpo dei post occorre prima effettuare una piccola modifica "strutturale": andate nelle impostazioni del vostro blog, e sotto la linguetta "Formattazione", alla voce "Converti interruzioni di riga", scegliete "No"; ciò è necessario per fare in modo che nei post non venga inserito automaticamente il codice che manda il testo a capo ogni volta che c'è un'interruzione di riga, ed evitare quindi che il funzionamento dello script venga pregiudicato. E' bene avvertirvi, tuttavia, che da quel momento Blogspot, quando scriverete un post, non andrà più a capo automaticamente ogni volta che digitate "INVIO": sarete voi, nella visualizzazione HTML del post, a dover inserire manualmente il tag <br> ogni volta che vorrete andare a capo.
Ciò premesso, eccovi l'agognato codice, in una versione semplificata a scopo dimostrativo:

<script language="javascript" type="text/javascript"> <!--
Words1 = new Array("Sono certamente","Sono sicuramente","Sono assolutamente");
Words2 = new Array("veterinario ginecologo","percussionista","contorsionista");
Words3 = new Array("sia mai vissuto","ci sia mai stato","sia mai nato");
Words4 = new Array("in Armenia", "in un ring di wrestling","nel mondo dei Pokemon");
Words5 = new Array("dalla fine della seconda guerra mondiale","dall'inizio dell'era industriale","dalla grande crisi del '29");
Words6 = new Array("un provocatore", "un disfattista", "un farabutto");
Words7 = new Array("dignità", "vergogna", "amor proprio");
Words8 = new Array("dei comunisti", "delle sinistre", "dei marxisti");
document.write(
Words1[Math.floor((Math.random() * 100000) % Words1.length)] +
' il più grande ' +
Words2[Math.floor((Math.random() * 100000) % Words2.length)] +
' che ' +
Words3[Math.floor((Math.random() * 100000) % Words3.length)] +
' ' +
Words4[Math.floor((Math.random() * 100000) % Words4.length)] +
' ' +
Words5[Math.floor((Math.random() * 100000) % Words5.length)] +
'. Chi lo nega è ' +
Words6[Math.floor((Math.random() * 100000) % Words6.length)] +
' senza ' +
Words7[Math.floor((Math.random() * 100000) % Words7.length)] +
' al soldo ' +
Words8[Math.floor((Math.random() * 100000) % Words8.length)] + ".\n" );
--></script>
Come vi dicevo, si tratta di una versione "ridotta" del generatore originale: sono sicuro che non avrete difficoltà a capire come funziona, eccezion fatta per un paio di cosette che vi spiego qui di seguito.
Potete aumentare, ovviamente, il numero delle parole possibili per ciascuna parte della frase: basta aggiungerle nell'array giusto nella parte superiore, con la stessa sintassi delle altre, e quindi tra virgolette e precedute dalla virgola.
Ad esempio, volendo aggiungere all'array numero 2 (quello delle professioni) un elemento in più, basterà fare così:

<script language="javascript" type="text/javascript"> <!--
Words1 = new Array("Sono certamente","Sono sicuramente","Sono assolutamente");
Words2 = new Array("veterinario ginecologo","percussionista","contorsionista","saltatore in alto");
Words3 = new Array("sia mai vissuto","ci sia mai stato","sia mai nato");
Words4 = new Array("in Armenia", "in un ring di wrestling","nel mondo dei Pokemon");
Words5 = new Array("dalla fine della seconda guerra mondiale","dall'inizio dell'era industriale","dalla grande crisi del '29");
Words6 = new Array("un provocatore", "un disfattista", "un farabutto");
Words7 = new Array("dignità", "vergogna", "amor proprio");
Words8 = new Array("dei comunisti", "delle sinistre", "dei marxisti");
document.write(
Words1[Math.floor((Math.random() * 100000) % Words1.length)] +
' il più grande ' +
Words2[Math.floor((Math.random() * 100000) % Words2.length)] +
' che ' +
Words3[Math.floor((Math.random() * 100000) % Words3.length)] +
' ' +
Words4[Math.floor((Math.random() * 100000) % Words4.length)] +
' ' +
Words5[Math.floor((Math.random() * 100000) % Words5.length)] +
'. Chi lo nega è ' +
Words6[Math.floor((Math.random() * 100000) % Words6.length)] +
' senza ' +
Words7[Math.floor((Math.random() * 100000) % Words7.length)] +
' al soldo ' +
Words8[Math.floor((Math.random() * 100000) % Words8.length)] + ".\n" );
--></script>
Tutto chiaro? spero di sì.
Ovviamente, non esitate a contattarmi (nei commenti, per favore, in modo che la cosa sia utile a tutti) se avete difficoltà, e ricordatevi di fare in modo che il vostro generatore mantenga sempre una coerenza sintattica e grammaticale (con un po' di pratica dovreste farcela).
Ah, un'altra cosa. Se vi va, questo post potrebbe diventare l'inizio di una specie di contest: divertitevi a creare il vostro generatore, e quando l'avrete messo su fatemelo sapere (magari linkando questo post), in modo che io lo sappia e possa fare, tra un po', una panoramica riassuntiva delle vostre creazioni.
Buon divertimento a tutti!

---
P.S. Grazie a Jollino per aver inserito nei commenti un prezioso suggerimento migliorativo dello script.

38 commenti:

Jollino ha detto...

Semplice e funzionale, bravo.
Posso però permettermi una piccola miglioria? Puoi evitare di cambiare manualmente il secondo termine dell'operatore modulo usando il metodo length di Array.

Invece di:
Words1[Math.floor((Math.random() * 100000) % 3)]
puoi usare:
Words1[Math.floor((Math.random() * 100000) % Words1.length)]

In questo modo lo script si "autoadatta" ai contenuti degli array e sei libero di modificarli a piacimento senza rischiare di dimenticarti di cambiare anche il modulo (cosa che a me succederebbe _sempre_ :D)

9peppe ha detto...

like a Jollino, stavo scrivendo la stessa cosa.

Metilparaben ha detto...

Grazie per il suggerimento, che in effetti migliora parecchio lo script. :-)

NicPic ha detto...

classico caso di sviluppo software collaborativo :)

Anonimo ha detto...

molto ma molto simpatica questa dotta (solo in informatica) dissertazione. non intendendomene molto di linguaggio macchina ho solo intuito. beh, per Berlusconi ci vuole un programma discretamente sofisticato, per Prodi bastava una fotocopiatrice, con protezione contro la saliva.
per Franceschini e Bersani pure, visto che dicono sempre le setsse cose, non c'e' da spremersi. almeno B. fa le gaffes.

Anonimo ha detto...

evidentemente abbiamo a ché fare con un "matusa" :)
Il linguaggio macchina viene ormai adoperato solo da chi con la macchina ci "parla" sul serio! questo è javascript.
spero che chi legifera attualmente non abbia le stesse competenze informatiche (ma temo che, viste le ultime proposte di legge su Internet ed affini, questa speranza sia vana..)

Metilparaben ha detto...

Perdonami, ultimo anonimo: il "matusa" è rivolto a me?

9peppe ha detto...

@metil non credo, sicuramente @anonimo 10.04

Metilparaben ha detto...

@Jollino: inserito il tuo suggerimento. Grazie.

Jollino ha detto...

A disposizione, il bello dell'open source è questo. :)

Visto che ti piace il genere, dai un'occhiata anche a Polygen (http://polygen.org/). È più complesso di uno script in JS perché lavora con delle grammatiche vere e proprie, ma con un po' di pazienza si possono tirare fuori cose magistrali.

Metilparaben ha detto...

By the way, Jollino, tu sei un esperto di javascript e roba simile?

Jollino ha detto...

Esperto è un parolone, mi occupo più di PHP e MySQL (o quanto meno mi pagano per farlo). JS lo sto imparando ora, usando principalmente jQuery.

Metilparaben ha detto...

Mi scrivi a metilparabenCHIOCCIOLAgmail.com?

Jollino ha detto...

Fatto!

Etuardu ha detto...

Ciao, anche io volevo suggerirti polygen ma ho visto che non esistono versioni in javascript, quindi ne ho costruita io una versione (molto semplificata), questo è il codice: http://paste2.org/p/433019
In quel modo è facile testare e modificare la grammatica, se si vuole stampare direttamente la stringa si può nascondere la textarea e modificare la funzione di stampa (dovrebbe essere abbastanza intuitivo)

Socrathe ha detto...

Grazie A Metilparabenper il sorgente in JS.
Grazie anche a Etuardu per il suo contributo, da provare.

Menelao ha detto...

Complimenti, sei finito sul quotidiano "Il fatto quotidiano", il giornale creato da marco travaglio, padellaro & co.
ti allego lo screen dell'articolo dal pdf e, se vuoi altro, puoi contattarmi via mail.
PS: puoi trovarlo anche domani (23/09) in edicola!
Ciao!

http://img43.imageshack.us/img43/2294/ilfattoquotidiano.png

mannick ha detto...

Ho letto anch'io sul fatto di Travaglio. Bella idea :-)

StefsTM ha detto...

Grazie, grazie, grazie! Una volta dovevo scrivere l'Oroscopo a mano.
http://dailystefstm.blog.com/2008/12/12/loroscopo-natalizio-di-stefstm/

Adesso ci pensa il generatore di Oroscopi giornalieri.

fablues ha detto...

Carino.. ma come si usa?
Io, andando a naso visto che non ne capisco niente, ho copiato le istruzioni nel blocco note, ho salvato e poi ho cambiato l'estensione da .txt a .htm. Girava!

darkholder ha detto...

Appena sfruttato nel mio blog per una piccola autocelebrazione (auto-citarmi berlusconi nel blog non lo reggo proprio :D)

Ciao e grazie!

9peppe ha detto...

@darkholder link!

Patrizia Poloni ha detto...

Grazie mille!!
Io di queste "cose super informatiche" non ci capiso niente, ma è stato semplicissimo inserirlo nel mio blog seguendo le tue istruzioni (citando la fonte ovviamente).

Complimenti per lo splendido blog che ho scoperto da poco!

dipsomante ha detto...

Bello, bello... Posso scippartelo e farne un widget per i Symbian 5.0 (Nokia 5800, 5330, N97 e Samsung Omnia? Sì?)

ciliegio estremo ha detto...

ciao!
grazie per la condivisione di questo strumento che ti ho invidiato da sempre :D

una cosa: non riesco ad integrarlo in Blogger! nel senso che mi dà già la frase pronta mentre mi piacerebbe che ci fosse il tasto apposito (tipo un "Generate") per crearle a ripetizione nel caso si fosse insoddisfatti.

Grazie ancora per il codice :)

Wally ha detto...

Vorrei farci un programmino freeware.
Lo so che potrei cambiare le frasi, ma è già perfetto così (al limite ne aggiungerei).
Se ti menziono, mi dai il permesso?

ArMyZ ha detto...

;-) anche sul secoloxix :-)

ArMyZ ha detto...

Un piccolo aggiornamento utile potrebbe essere la parametrizzazione utile a caricare il contenuto delle frasi da 8 file diversi aggiornabili separatamente.

9peppe ha detto...

@ArMyZ non direi, diminuirebbero troppo le possibilità di utilizzo su blog non self-hosted. però se ne può creare un'altra versione.

M. ha detto...

Fruito sul Guardiano cieco

:-D

Fichissimo.

M.

Tommy David ha detto...
Questo commento è stato eliminato dall'autore.
Tommy David ha detto...

Mille grazie per il codice!
C'ho appena fatto un generatore di filosofia...

OpinionLiver ha detto...

ho fabbricato un generatore di dichiarazioni di Tremonti sullo scudo fiscale...geniale, su blogspot gira ma su wordpress no...come fare?
e poi ho provato a cambiare grandezza e colore dei caratteri...ma non ci riesco!!!
grazie cmq
metilparaben genio assoluto il miglior pubblicatore di fantacazzate dall'avvento del pollice opponibile. Chi osa negarlo non è altro che un plastico al soldo di Bruno Vespa.

Tommy David ha detto...

@OpinionLiver A me su Wordpress gira. Ma forse su Wordpress.com c'è qualche filtro contro i javascript...

Jollino ha detto...

Wordpress.com purtroppo non permette di usare javascript. Wordpress (il software) invece ovviamente non si fa problemi. :)

OpinionLiver ha detto...

grazie....lo sospettavo...cmq il generatore è presente su blogspot al mio nickname....eheheh troppo divertente aggiornarlo

Niccolò Masiani ha detto...

Ho creato anche io il mio "Generatore di Frasi", grazie al prezioso codice di Metilparaben!

L'ho impostato sulle dichiarazioni del Vescovo Emerito di Grosseto Giacomo Babini riguardanti il concerto di Elton John a Trani...

http://www.losparlatore.it/2010/08/generatore-di-frasi-di-giacomo-babini.html

nonholetag ha detto...

http://non-ho-le-tag.blogspot.com/2010/11/blog-post_6476.html

Fatto e citato. Grazie infinite.

Posta un commento

Leggi qua come fare per commentare su questo blog