Se siamo in possesso di un lettore di ebook non siamo obbligati a contare solamente sui libri e le riviste in vendita: possiamo anche fabbricarci la nostra rivista personale aggregando feed Rss e altre fonti con uno strumento duttile al massimo grado, tanto da lasciarci usare Python per specificare i dettagli di una trasformazione.
Occorrente: un computer con Windows, MacOS e Linux, una connessione interenet e un ebook reader. Usiamo questo tono perché dobbiamo parlare di ricette, le ricette di Calibre per la conversione automatizzata di documenti.
Abbiamo già parlato di Calibre a proposito del Kindle, ma senza metterlo in particolare luce. Calibre, invece, è un compagno indispensabile per ogni possessore di iPad o lettore di ebook per la varietà e la duttilità degli strumenti che mette a disposizione, in primo luogo l’archiviazione di una libreria elettronica, la catalogazione e l’editing dei metadati, proprio come siamo abituati a fare con una collezione di file musicali mp3. In secondo luogo la conversione di formato, che ci permette, per esempio, di portare su un Kindle documenti reperiti nel più diffuso formato mobi o pdf. Infine, un ampio ventagli di strumenti per raccogliere contenuto sul web e impacchettarlo in un formato agevole per un lettore i ebook.
Vogliamo mostrare questa volta la creazione di un ebook a partire da un feed Rss.
Il modo più comodo e interattivo è sfruttare l’interfaccia di Calibre. Con un clic sull’icona News, una N in una palla rossa e una freccia discendente apriamo una finestra di dialogo che mostra diverse sorgenti di contenuto catalogate per lingua. Il menu Italiano ha una ricca scelta di fonti dati. Fra i giornali troviamo Il Corriere della Sera, La Repubblica, La Stampa, l’Osservatore Romano, Il Fatto Quotidiano, il Giornale. Fra le riviste troviamo una splendida Le Scienze, con una quantità di articoli davvero notevole.
- [/caption]Naturalmente non siamo costretti a limitarci a quello che possiamo trovare di già fatto: possiamo creare le nostre ricette di importazione, creando dei file con estensione .recipe, che contengono un vero e proprio programma Python per l’importazione.
Ecco come lanciare una recipe da riga di comando:
"C:\Program Files (x86)\Calibre2\ebook-convert.exe" thetaoofmac.recipe thetaoofmac.mobi --output-profile=kindle
Ed ecco il contenuto di una ricetta che importa il feed di Taoofmac, un sito sempre divertente e stimolante, per i patiti della mela, ma anche per capire che aria tira nel mondo delle telecomunicazioni.
class AdvancedUserRecipe1288655187(BasicNewsRecipe): title = u'The Tao of Mac' oldest_article = 10 max_articles_per_feed = 100 no_stylesheets = True feeds = [(u'The Tao of Mac', u'https://feeds.feedburner.com/taoofmac/full')]Si noti che la ricetta è in effetti una classe Python, quindi si può sfruttare a piacere il linguaggio di programmazione per complicare le cose. Per esempio si può usare un po’ di logica per saltare la versione su più pagine e scaricare la versione completa pronta per la stampa di un articolo. Questi casi sono descritti nella documentazione di Calibre. Ecco un esempio di ricetta più consistente, spiegata nel manuale
__license__ = 'GPL v3' __copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>' ''' news.bbc.co.uk ''' import re from calibre.web.feeds.recipes import BasicNewsRecipe class BBC(BasicNewsRecipe): title = 'BBC News' __author__ = 'Darko Miletic, Starson17' description = 'News from UK. ' oldest_article = 2 max_articles_per_feed = 100 no_stylesheets = True #delay = 1 use_embedded_content = False encoding = 'utf8' publisher = 'BBC' category = 'news, UK, world' language = 'en_GB' publication_type = 'newsportal' extra_css = ' body{ font-family: Verdana,Helvetica,Arial,sans-serif } .introduction{font-weight: bold} .story-feature{display: block; padding: 0; border: 1px solid; width: 40%; font-size: small} .story-feature h2{text-align: center; text-transform: uppercase} ' preprocess_regexps = [(re.compile(r'<!--.*?-->', re.DOTALL), lambda m: '')] conversion_options = { 'comments' : description ,'tags' : category ,'language' : language ,'publisher' : publisher ,'linearize_tables': True } keep_only_tags = [ dict(name='div', attrs={'class':['layout-block-a layout-block']}) ,dict(attrs={'class':['story-body','storybody']}) ] remove_tags = [ dict(name='div', attrs={'class':['story-feature related narrow', 'share-help', 'embedded-hyper', \ 'story-feature wide ', 'story-feature narrow']}) ] remove_attributes = ['width','height'] feeds = [ ('News Front Page', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml'), ('Science/Nature', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/science/nature/rss.xml'), ('Technology', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml'), ('Entertainment', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/entertainment/rss.xml'), ('Magazine', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/uk_news/magazine/rss.xml'), ('Business', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/business/rss.xml'), ('Health', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/health/rss.xml'), ('Americas', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/americas/rss.xml'), ('Europe', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/europe/rss.xml'), ('South Asia', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/south_asia/rss.xml'), ('UK', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/uk_news/rss.xml'), ('Asia-Pacific', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/asia-pacific/rss.xml'), ('Africa', 'https://newsrss.bbc.co.uk/rss/newsonline_world_edition/africa/rss.xml'), ]
Una volta che la nostra ricetta è rifinita in modo soddisfacente la possiamo importare nel ricettario standard del programma, eventualmente possiamo anche considerare di spedirla agli autori di Calibre per un’eventuale inclusione in release. Studiando la finestr di dialogo di importazione si vede come sia facile creare un aggregazione di feed ragionevolmente complessa anche senza programmazione.
La documentazione di Calibre mostra come realizzare ricette di importazione più complesse di questo semplice esempio, archiviando più di una fonte dati e importando da fonti dati più ostiche di un feed Rss.
Agigungiamo che Calibre contiene anche un comando, calibre-smtp, che permette di spedire documenti per posta elettronica. Se abbiamo un kindle registrato a tizio, l’invio di mail a tizio@free.kindle.com con un documento in allegato farà arrivare gratuitamente sul Kindle di Tizio il documento allegato, se il formato è compatibile e il Kindle si trova sotto copertura WiFi. Questa può essere un’opzione interessante per schedulare la creazione e la consegna della reading list del giorno un’ora prima di afferrare il Kindle e prendere l’autobus verso casa.