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.

41 commenti:

  1. 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)

    RispondiElimina
  2. like a Jollino, stavo scrivendo la stessa cosa.

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

    RispondiElimina
  4. classico caso di sviluppo software collaborativo :)

    RispondiElimina
  5. 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.

    RispondiElimina
  6. 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..)

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

    RispondiElimina
  8. @metil non credo, sicuramente @anonimo 10.04

    RispondiElimina
  9. @Jollino: inserito il tuo suggerimento. Grazie.

    RispondiElimina
  10. 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.

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

    RispondiElimina
  12. 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.

    RispondiElimina
  13. 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)

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

    RispondiElimina
  15. 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

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

    RispondiElimina
  17. 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.

    RispondiElimina
  18. 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!

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

    Ciao e grazie!

    RispondiElimina
  20. 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!

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

    RispondiElimina
  22. 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 :)

    RispondiElimina
  23. 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?

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

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

    RispondiElimina
  26. Fruito sul Guardiano cieco

    :-D

    Fichissimo.

    M.

    RispondiElimina
  27. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  28. 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.

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

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

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

    RispondiElimina
  32. 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

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

    Fatto e citato. Grazie infinite.

    RispondiElimina
  34. a quando un generatore di frasi di Monti? tipo: Con l'abolizione della schiavitù camice di cotone più care per tutti, con lo statuto dei lavoratori ...

    RispondiElimina
  35. Come si fa con Wordpress? Intendo Wordpress.org, non .com - esiste un plugin? Il codice così non funziona

    RispondiElimina
  36. Grazie: http://tafazzi.blogspot.it/2014/03/generatore-automatico-di-fonti-di.html

    RispondiElimina

Nota. Solo i membri di questo blog possono postare un commento.