Menu Home

Bastonate2Kindle

Bastonate è un sito molto bello con articoli interessanti (ma a volte no) che però spesso sono lunghi. I problemi legati all’iperconnettività ci hanno portato a carenze di attenzione quando si leggono lunghi articoli su internet, almeno a me capita spesso. Per ovviare a questo problema, che sicuramente è mio e di altri, ho scritto uno script che prende il feed rss di Bastonate e me lo invia al Kindle dove, a quanto pare, il mio livello di attenzione non scema come davanti ad un normale monitor.

Eccolo in tutta la sue fierezza e semplicità:

#!/bin/bash
echo “<html><head><title>Bastonate</title></head><body>” > Bastonate_`date +%d-%m-%Y`.html
echo “<h1>Bastonate ” >> Bastonate_`date +%d-%m-%Y`.html
echo `date +%d-%m-%Y` >> Bastonate_`date +%d-%m-%Y`.html
echo “</h1>” >> Bastonate_`date +%d-%m-%Y`.html
tmp_xml=$(mktemp)
tmp_titolo=$(mktemp)
tmp_data=$(mktemp)
tmp_contenuto=$(mktemp)
tmp_autore=$(mktemp)
echo “Chiappo il feed…”
curl –silent –compressed “http://www.bastonate.com/feed/” -o $tmp_xml
xpath -q -e rss/channel/item/title $tmp_xml | sed -e “s/<title>/<hr \/><b>/g” | sed -e “s/<\/title>/<\/b>\n/g” > $tmp_titolo
xpath -q -e rss/channel/item/link $tmp_xml | awk -F “/” ‘{print “<br /><i>” $6 “/” $5 “/” $4 “</i><br /><br />\n”}’ > $tmp_data
xpath -q -e rss/channel/item/content:encoded $tmp_xml | sed -e “s/<\/content:encoded>\n//g” | sed -e “s/&lt;/\</g” | sed -e “s/&amp;#8217;/\’/g” | sed -e “s/&amp;#8220;/\”/g” | sed -e “s/&amp;#8221;/\”/g” | sed -e “s/&amp;#8211;/-/g” | sed -e “s/&amp;nbsp;/<br \/>/g” | sed -e ‘s/<[^>]*>//g’ > $tmp_contenuto
xpath -q -e rss/channel/item/dc:creator $tmp_xml | sed -e “s/<dc:creator>/ di <b>/g” | sed -e “s/<\/dc:creator>/<\/b>/g” > $tmp_autore
paste -d ” ” $tmp_titolo $tmp_autore $tmp_data $tmp_contenuto >> Bastonate_`date +%d-%m-%Y`.html
echo “</body></html>” >> Bastonate_`date +%d-%m-%Y`.html
sendEmail -f “TUA@EMAIL.QUALCOSA” -t “TUAEMAILKINDLE@kindle.com” -m “bastonate” -u “bastonate” -s “TUO.SMTP:25” -xu “TUOUSERNAME” -xp “TUAPASSWORD” -a Bastonate_`date +%d-%m-%Y`.html
rm Bastonate_`date +%d-%m-%Y`.html

(Le robe scritte in maiuscolo vanno personalizzate secondo il vostro smtp)

In pratica lui si prende tutto il feed con un curl –compressed (perchè il feed viene giù compresso) e lo salva in un file temporaneo (dato che ci sono ringrazio il mio amichetto nerd del trick di mktemp), poi con xpath (che quando l’ho scoperto mi si è aperto un mondo) estrapola solo le cose che mi interessa avere (ovvero il titolo, la data, l’autore e l’articolo), gli tira via tutto l’html (da me considerato) inutile e infine butta tutto dentro un file .html formattato nella maniera più semplice possibile. Ora abbiamo il file .html pronto per essere spedito via email al Kindle, e qua usiamo il comodo sendEmail (occhio che non è sendmail) che semplifica il processo.

Problemi noti:

  • Tutte le lettere accentate vanno a rotoloni, bisogna encodare l’UTF-8 o solo dio sa cosa, per non immattirmi troppo ho lasciato i caratteri strambi al posto delle lettere accentate.
  • Le immagini embeddade agli articoli vengono cassate perchè con un sed tiro via tutti i tag html, quindi direi che è colpa della pigrizia.
  • Funziona solo si Linux (ma in effetti questo è più che altro un problema vostro, non mio)

Ho messo lo script dentro il crontab che me lo esegue ogni lunedì mattina, e quindi ho una settimana di tempo per leggermi tutti con calma.

(se qualcuno è interessato al servizio possiamo metterci d’accordo in qualche modo)

Bastonate2kindle in esecuzione sul Kindle

Bastonate2kindle in esecuzione sul Kindle

Categories: coding kindle linux Spiegazioni Uncategorized

Tagged as:

admin

2 replies

    1. certo, lo so
      ma questo non mi impedisce di farlo a mio piacimento. e comunque send to kindle non invia tutto il feed, il mio si. metti che il blog visualizza solo gli ultimi 3 articoli mentre il feed 20. viene da se che è più comodo il mio script.
      senza considerare che send to kindle devi andare te ad aprire la pagina e clickare per inviare al kindle, il mio fa tutto da solo senza che gli dica nulla 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.