Parte 1/4, Parte 2/4, Parte 3/4
Introduzione:
L’ultimo script che vi presento non si interfaccia direttamente con Apple Mail, bensì funge da strumento di supporto al primo script,trasformando il file CSV prodotto da quest’ultimo in un “cloud text”, ovvero in un file di testo da usare per ricavare un tag cloud.
Lo script csv2cloudtext.sh:
Mettiamo caso che abbiate a disposizione una lista di parole e la relativa ricorrenza, nella forma:
inutile,5
microcefalo,3
tronista,2
violenza,1
e desideriate automaticamente ricavarne un file di testo strutturato come segue:
inutile
inutile
inutile
inutile
inutile
microcefalo
microcefalo
microcefalo
tronista
tronista
violenza
da incollare in servizi come Tagcrowd.com (quello che adopero io) per ricavarne un ben più leggibile tag cloud, ovvero una nuvola grafica in cui le parole vengano evidenziate in proporzione alla loro ricorrenza.
Ecco, il mio script fa esattamente questo.
Io lo utilizzo esclusivamente sui files “_words-list.csv” generati dal mio script “mail2topwordslist.sh”, ma può essere adoperato senza problemi su qualsiasi CSV che segua lo schema “nome,quantità”.
Prima di dare il vostro file CSV in pasto allo script, vi consiglio di dargli una ripulita a mano da parole/caratteri inutili etc, e di fissare una soglia (es. 250) sotto la quale rimuovere tutte le parole, perchè comunque non verrebbero visualizzate nel tag cloud.
Lo script salva il cloudtext in un file di testo nella stessa cartella da cui viene lanciato. Per eseguirlo, da Terminale entrate nella cartella dello script e date i comandi:
chmod +x csv2cloudtext.sh #per dargli i permessi di esecuzione sh csv2cloudtext.sh #per lanciarlo
Il codice sorgente
Ecco il codice dello script. Commenti, variabili e messaggi a schermo sono in inglese per renderlo comprensibile anche all’estero qualora servisse a qualche straniero.
#!/bin/sh
# eldino's csv2cloudtext 1.0
# this script takes a csv file as input and create
# a text file that is easily usable to obtain a tag cloud
# get the folder from which the script is running
# source: http://www.mydatabasesupport.com/forums/shell/176524-currently-executing-script-path.html
prog_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) && prog_path=$prog_path/$(basename -- "$0")
scriptFolder=$(echo $(dirname $prog_path)/)
# define temp csv file
temp_csv="$scriptFolder/temp_csv.txt"
# functions
# create a copy of the csv in the script folder and
# add a blank line to the end of it that will act
# as "stop point" for the script
add_stop_to_csv () {
cat $* > $temp_csv
echo "" >> $temp_csv
}
gimme_csv () {
IFS=","
exec < $*
while read word quantity
do
echo "$word $quantity"
if [ -n "$quantity" ]
then
x=0;
while [ "$x" -lt $quantity ]; do
echo $word >> $scriptFolder/cloud_text.txt
x=$(expr $x + 1)
done
fi
done
}
# routine
clear
echo "eldino's csv2cloudtext 1.0"
echo "---------------------------------------------------"
rm -f $scriptFolder/cloud_text.txt
echo
echo "Type the path to the .CSV file or just drag 'n' drop it:"
read file_csv
echo
add_stop_to_csv $file_csv
gimme_csv $temp_csv
rm -f $scriptFolder/temp_csv.txt
echo "Ok!"
Screenshots:
Di seguito posto qualche screenshot dello script in funzione, tanto per darvene un’idea


[...] Post & sourcecode here [...]