Premessa
Qualche settimana fa mi è arrivato a casa un Kindle nuovo di pacca. E’ davvero un bell’oggetto, dal prezzo molto interessante, lo consiglio a tutti. Perché ho comprato proprio un kindle e non il ben più luccicoso aiped? Che me ne faccio?
Dovete sapere che ho difficoltà a leggere sullo schermo LCD. Per “leggere” intendo: leggere libri, articoli, tesi, documenti più lunghi di un paio di pagine. Non so da cosa dipenda: i miei occhi (e più probabilmente il mio cervello) si stancano presto, dopo due minuti devo smettere. Penserete che è un bel problema per uno che con l’informatica ci lavora. Ma in realtà, programmare, leggere e scrivere e-mail, scrivere in generale, mi riesce abbastanza bene. Sarà che quando scrivo distolgo molto lo sguardo dal video. Insomma, se “interagisco” non mi da fastidio più di tanto. Leggere a lungo invece sì. Forse dipende dal mio stato di senior, oppure la cervicale che mi perseguita da un paio di anni a questa parte. Boh. Insomma, se devo leggere qualcosa di lungo, devo prima stamparlo, con buona pace del problema della deforestazione.
E-reader
Gli e-reader come il kindle, invece, utilizzano una tecnologia denominata e-ink, che fa sembrare il dispositivo un foglio di carta stampata. In effetti lo schermo non è luminoso, ed è per questo che non mi da affatto fastidio. E si può leggere in qualunque condizione di luce (ma non al buio, naturalmente!). Se volte sapere come funziona, potete riferirvi alla pagina di wikipedia o a qualche rivista di tecnologia. In breve si tratta di una matrice di microsfere, ognuna delle quali contiene delle particelle cariche elettricamente, di colore bianco e nero. Applicando un opportuno campo elettrico, le particelle si orientano e la parte superiore della sfera si “colora” di bianco, nero o grigio. La cosa bella è che togliendo il campo elettrico le particelle rimangono al loro posto a causa di un fluido viscoso all’interno della sfera. Ecco una figura esplicativa (sempre da wikipedia):

Electrophoretic display
Bello vero? peccato sia solo in bianco e nero. Ma non preoccupatevi. c’è gente che sta lavorando alacremente per metterci il colore (ma con un tipo di tecnologia alquanto differente). Un altro problemuccio è che il display è un po’ lento a reagire, quindi scordatevi i filmati.
Vantaggi: il kindle è leggero, e consuma pochissimo: tra un cambio di pagina e l’altro, infatti, il processore va in standby, per cui la batteria può durare diverse settimane. Lo puoi leggere a letto (la mia posizione preferita!), e molto a lungo, e puoi portartelo in giro molto facilmente. E poi costa poco (139$ senza il 3G).
Svantaggi: niente touch screen, si usa un tastierino e dei comodissimi tasti laterali per cambiare pagina. La mancanza di touch non da molto fastidio se dovete semplicemente leggere dei libri, mentre se dovete leggere documenti pdf è un altro discorso: può leggerli, ma non è comodissimo. Il pdf infatti è un formato fisso (al contrario dell’HTML che si adatta al dispositivo). Se avete dei documenti in pdf formato A4 sul piccolo schermo del kindle dovete perdere tempo a fare pan&zoom con i tasti, e dopo un po’ vi prende male. Se volete leggere pdf, compratevi l’aiped.
Il kindle legge un formato speciale chiamato mobi, e non lo standard ePub. Ci sono però diversi convertitori in rete, e la cosa non mi sembra poi molto limitativa (a parte il problema del DRM). Il mobi è praticamente equivalente a un sottoinsieme dell’html, zippato, niente di trascendentale.
Leggere i blog
Appena mi è arrivato il kindle ho subito cominciato a smanettarci sopra. Ho scaricato libri gratuiti (per esempio su Liber Liber, progetto Manunzio, ci ho trovato “Q”, di Luther Blisset), ho comprato un paio di libri su Amazon. Dopo un po’ mi è venuta voglia di leggerci i miei blog preferiti.
Il kindle ha un browser sperimentale, ma ve lo sconsiglio. Navigare una pagina web complicata con i tastini è un’esperienza abbastanza scoraggiante. Inoltre, ogni volta che si accende il wireless, la batteria si scarica più velocemente.
Invece ho pensato che avrei potuto scaricare i feed sul mio PC, convertirli in formato mobi, e poi trasferirli sul kindle via USB. Per fare questo però, bisognerebbe interpretare le pagine html per scartare le parti non necessarie. Ad esempio, non mi interessa la sidebar, con la lista dei link, l’archivio dei post, ecc. Né mi interessano i commenti, e vorrei saltare la pubblicità, se c’è. Insomma, mi interessa estrarre solo il contenuto del post. La cosa non è banale, perché il formato html non è strutturato, e soprattutto non contiene alcuna informazione semantica: i tag html ci dicono come formattare il testo, ma non danno alcuna indicazione su cosa quel testo significhi.
Per cui, l’html di ogni blog è impostato in maniera leggermente differente, e la funzione di estrazione dei essere scritta ad hoc per ogni blog. Tutto questo significa un sacco di lavoro!
Niente panico. Per fortuna c’è chi ha pensato per noi (è questo il bello di Internet e dell’Open Source: c’è quasi sempre qualcuno che ci ha già pensato).
Calibre
Calibre (si dovrebbe leggere caliber) è un programma open source scritto da Kovid Goyal (kudos Kovid!) che permette di gestire una libreria di e-book e tenerla sincronizzata con l’e-reader. Per la gioia del nostro collega Juhan, è scritto in Python! E’ disponibile per Linux, Mac e Windows, supporta moltissimi e-reader e molti formati differenti. Inoltre, gestisce in maniera semplice ed efficace lo scaricamento di post e news dal web, li trasforma nel formato desiderato e trasferisce tutto sul dispositivo in maniera automatica.
Per gestire le differenze fra un sito web e l’altro, supporta il concetto di recipe (ricetta). Per ogni sito bisogna scrivere un’apposito file, detto appunto recipe, che contiene le direttive per controllare l’estrazione delle informazioni dall’html. La recipe va scritta in Python: in pratica, si tratta di una classe Python che deriva dalla classe base BasicRecipe, e che specifica gli opportuni parametri.
La distribuzione di Calibre contiene già una serie di ricette pronte all’uso: potete agilmente leggere il NY Times, l’Economist, xkcd, Dilbert, ecc. Per i siti italiani, troviamo La Repubblica, Il Corriere della Sera, Punto Informatico, Le Scienze, e altro.
Quindi, a partire da una di queste, ho scritto la mia ricetta per “Ok, panico”, eccola:
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Giuseppe Lipari based on Gabriele Marini recipe'
__copyright__ = 'Gabriele Marini'
__description__ = 'Ok, panico'
'''
http://okpanico.wordpress.com/
'''
from calibre.web.feeds.news import BasicNewsRecipe
class OkPanico(BasicNewsRecipe):
__author__ = 'Giuseppe Lipari'
description = 'Ok, panico'
title = u'Ok, panico '
category = 'Blog, programming, italian'
language = 'it'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 15
max_articles_per_feed = 10
use_embedded_content = False
remove_javascript = False
no_stylesheets = True
keep_only_tags = [dict(name='div',attrs={'id':'content'})]
remove_tags = [dict(name='div',attrs={'class':'navigation'}),
dict(name='div',attrs={'id':'comments'}),
dict(name='div',attrs={'class':'pd-rating'}),
dict(name='div',attrs={'class':'snap_nopreview sharing robots-nocontent'}),]
feeds = [(u'Ok, panico',u'http://okpanico.wordpress.com/feed/')]
Se volete utilizzarla, salvate il codice con il nome “okpanico.recipe”, poi aprite Calibre, andate sul menu “News -> add a custom news source”, e poi cliccate sul pulsante “Load recipe from file” (ultimo in basso a sinistra), selezionate il file okpanico.recipe, ed il gioco è quasi fatto. A questo punto potete andare su “News -> schedule news download”, e decidere quando e come utilizzare la ricetta. E a questo punto il gioco è fatto!
Vi riporto anche la ricetta per l’altro mio blog (scacciamennule.blogspot.com):
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Giuseppe Lipari based on Gabriele Marini recipe'
__copyright__ = 'Gabriele Marini'
__description__ = 'Scacciamennule'
'''
http://scacciamennule.blogspot.com/
'''
from calibre.web.feeds.news import BasicNewsRecipe
class Scacciamennule(BasicNewsRecipe):
__author__ = 'Giuseppe Lipari'
description = 'Scacciamennule'
title = u'Scacciamennule '
category = 'Blog, italian'
language = 'it'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 10
use_embedded_content = False
remove_javascript = False
no_stylesheets = True
keep_only_tags = [dict(name='div',attrs={'class':'date-outer'})]
remove_tags = [dict(name='div',attrs={'class':'comments'})]
feeds = [(u'Scacciamennule',u'http://scacciamennule.blogspot.com/feeds/posts/default')]
Moltissimi blog su blogspot hanno la stessa struttura del mio, quindi potete riutilizzarlo alla grande.
Se scrivete la ricetta per il vostro blog, fatemelo sapere che magari vi vengo a leggere!
PS: unico difetto di Calibre è che è molto lento. Dear Kovid, you should work more on the performance!