Categorie

[upd:21-03-2012] Thunderbird su Ubuntu: usare gli ultimi articoli di un blog WordPress come firma

thunderbird-logoPremessa: la guida si riferisce a Ubuntu Linux e Thunderbird 7, ma può essere adattata ad altre distro e versioni del programma.

Vediamo come si fa ad inserire un link ad uno degli ultimi articoli del proprio blog nella firma di Mozilla Thunderbird.

 

 

 

Per prima cosa creiamo un file di testo contenente la firma “base” che vogliamo utilizzare in Mozilla Thunderbird, nel mio caso è la seguente:

*/Willy/* - *Contatti*: http://snipurl.com/contatti
* *FAQ* di /it-alt.comp.software.mozilla/: http://www.FAQmozilla.org
* *Gratuiki* - Software Free: http://gratuiki.willygroup.org

Salviamo il file in una posizione a cui possiamo accedere tranquillamente, ad esempio la cartella Documenti della nostra home: /home/UTENTE/Documenti/firma_no_blog.txt 1

Facciamone altre due copie e rinominiamole così: firma.old.txt e firma.txt

Lanciamo Mozilla Thunderbird ed andiamo a configurare la firma in Mozilla Thunderbird facendola puntare al nostro file firma.txt

Adesso siamo pronti per scrivere lo script, io solitamente creo gli script in una cartella all’interno della home e poi creo un link simbolico in /usr/local/bin che punta al file dello script

Supponiamo di aver salvato il file che conterrà il nostro script nella posizione: /home/UTENTE/Documenti/Script/feed per prima cosa lo rendiamo eseguibile, da terminale:

$ chmod +x /home/UTENTE/Documenti/Script/feed

Quindi andiamo a creare il collegamento all’eseguibile:

$ sudo ln -fs /home/UTENTE/Documenti/Script/feed /usr/local/bin/feed

Ora apriamo il file feed con un editor di testo (gedit/medit vanno benissimo, altrimenti se volete operare da terminale potete usare vi, nano o quello che più vi piace), ed inseriamo il codice:

#!/usr/bin/env bash
# File temporaneo dove verrà salvato il feed
FILE="/tmp/blogfeed.txt";
# Indirizzo del Feed RSS da utilizzare
FEED="http://blog.willygroup.org/feed"
# Numero degli ultimi post che si vogliono linkare :: "Inserisci un post a caso tra gli ultimi 5"
NUM_POST=5

# FILE TEMPORANEI PER TITOLI E LINK
TMP_TITOLI="/tmp/titoli.txt"
TMP_LINK="/tmp/link.txt"
# Nome utente
UTENTE="willy"

#Crea copia backup della firma
cp "/home/$UTENTE/Documenti/firma.txt" "/home/$UTENTE/Documenti/firma.old.txt"

# Recupera il feed del blog
    wget -O $FILE $FEED

# Controlla se ci sono stati problemi durante il download e quindi se il file risulta vuoto
if [ ! -s $FILE ]
then
    # In caso di file vuoto ripristina l'ultima firma
    cp "/home/$UTENTE/Documenti/firma.old.txt" "/home/$UTENTE/Documenti/firma.txt"
else

    RIGA=`echo $RANDOM%$NUM_POST | bc`
    RIGA=`expr $RIGA + 1`
    xmlstarlet sel -t -m '//item' -v 'title' -n $FILE > $TMP_TITOLI
    xmlstarlet sel -t -m '//item' -v 'link' -n $FILE > $TMP_LINK

    rm /home/$UTENTE/Documenti/firma.txt
    cp /home/$UTENTE/Documenti/firma_no_blog.txt /home/$UTENTE/Documenti/firma.txt

    # Recupero Titolo e link
    TITOLO=$(head -n $RIGA $TMP_TITOLI | tail -n 1);
    LINK=$(head -n $RIGA $TMP_LINK | tail -n 1);
    # Utilizzo un servizio online per creare link corti: goo.gl
    SHORTLINK=$(curl -s -d '&url='$LINK http://goo.gl/api/url | sed -e 's/{"short_url":"//' -e 's/","added_to_history":false}/\n/');

    # Accodo titolo e link corto alla firma base
    echo "* $TITOLO: $SHORTLINK" >> /home/$UTENTE/Documenti/firma.txt;
fi

Il precedente codice è un po’ rozzo, critiche e consigli sono ben accetti.
Per eseguire lo script basta lanciare da terminale:

$ feed

Se vogliamo che questo script venga lanciato ogni tot minuti, ad esempio 20, dobbiamo scomodare la funzione cron di Unix, da terminale:

$ crontab -e

e quindi inseriamo sotto a:

$ # m h dom mon dow command

la riga:

$ */20 * * * * /usr/local/bin/feed

Ed abbiamo finito!
 [Aggiornamento 21/03/2012]: È stata modificata l’api per goo.gl, nel riquadro sottostante metto in evidenza la modifica che è stata apportata anche al codice sopra:

# SHORTLINK=$(curl -s -d '&url='$LINK http://goo.gl/api/url \
# | sed -e 's/{"short_url":"//' -e 's/","added_to_history":false}/\n/');
SHORTLINK=$(curl https://www.googleapis.com/urlshortener/v1/url -H \
          'Content-Type: application/json' -d '{"longUrl": "'$LINK'"}' \
          | sed -n 's/.*\(http:\/\/goo.gl\/[A-Za-z0-9][A-Za-z0-9]*\).*/\1/p');

Note:

  1. sostituire a UTENTE il proprio username