Calibre OPDS su Debian

Calibre OPDS su Debian

Ottobre 3, 2021 0 Di Bibliomike

Ciao a tutti in questo post parleremo di e-book e di software open-source disponibili per la loro gestione, in particolare vi illustrerò alcune funzionalità di Calibre e del suo utilizzo come OPDS server.

Tralasceremo l’annosa polemica sul fatto che sia meglio leggere un libro stampato piuttosto che un e-book.

Come modesta opinione personale, sperando di non essere smentito fra qualche anno, ritengo che l’e-book non sostituirà mai completamente il testo stampato.

Cosa sono gli e-book?

Come definizione generale l’e-book è un “libro in formato digitale”, si tratta quindi di un testo in formato ottimizzato per la visualizzazione su computer, smartphone, tablet o sugli e-reader.

Gli e-reader utilizzati per leggere gli e-book sono dispositivi portatili di dimensione tascabili dotati di schermi di tipo e-link comunemente da 6 pollici.

Gli schermi e-link sono progettati per imitare l’aspetto dell’inchiostro sulla carta, per garantire una lunga durata della batteria e per non affaticare la vista durante la lettura.

Il maggior punto di forza dell’e-book rispetto al libro stampato è quindi ovviamente la portabilità sui vari dispositivi, con alcune limitazioni a mio avviso di una certa rilevanza:

  • Protezione DRM: sono dei “lucchetti” che ci legano indissolubilmente ad un formato specifico e alla piattaforma di distribuzione. Di fatto, in questo modo, ciò che abbiamo acquistato non è un’opera letteraria ma qualcosa di simile alla licenza d’uso di un software proprietario.
  • L’esperienza di lettura su e-reader di manuali tecnici con formule, codici e tabelle non è delle più appaganti. La carta in questo caso, a mio avviso, vince sempre.

I formati più diffusi per la pubblicazione e la diffusione degli e-book sono il PDF e l’ePub a cui sia affiancano altri formati proprietari specifici (es. AZW3, KFX, ecc.).

Vi riassumo le differenze fondamentali fra i due formati:

  • Il Portable Document Format PDF è un formato standard a paginazione fissa adatto alla lettura su schermi di una certa dimensione soprattutto per opere ricche di contenuti grafici (es. e-comics).
  • Il formato ePub acronimo di electronic publication è di fatto lo standard utilizzato dalle case editrici per la pubblicazione degli e-book, si adatta in modo fluido alla diverse geometrie e dimensioni dello schermo e permette la modifica del tipo e della dimensione del carattere visualizzato.

Senza entrare troppo nel dettaglio e nelle specifiche di questo formato posso dirvi che l’ePub è di fatto un archivio compresso che contiene diversi file XHTML ed XML che rappresentano i contenuti (capitoli), la struttura e i meta-dati del libro.

Cos’è la protezione DRM?

I Digital Rights Management (DRM), sono sistemi tecnologici per la gestione dei diritti digitali.

Alla base del funzionamento dei DRM ci sono due elementi chiave:

  • meta-dati nascosti all’interno del file e leggibili solo attraverso specifici software
  • file crittografati in cui il contenuto protetto è leggibile solo disponendo di una chiave di cifratura.

In soldoni se il software che utilizzate non è in grado di decomprimere il file criptato non accederà né ai contenuti né ai meta-dati del file stesso.

In rete esistono diversi cataloghi e siti di e-book che rilasciano legalmente le proprie opere senza protezione DRM (es. Progetto Gutemberg, Liber Liber, Feed Books, ecc.) o con licenze che ne permettono la diffusione liberamente.

Per una trattazione più dettagliata di questo argomento vi rimando a questa pagina del manuale di Calibre:

https://manual.calibre-ebook.com/drm.html

Installazione di Calibre su Linux Debian

Calibre è l’E-Book Manager per eccellenza, è un software nato nel 2006 con il nome di libprs500, sviluppato da KOVID GOYAL con la collaborazione di alcuni sviluppatori della comunità mobileread.com.

Inizialmente è stato utilizzato come convertitore di contenuti in formato LRF per il trasferimento via USB da Linux al SONY PRS-500 (il primo lettore e-link messo in commercio). Divenne in breve un software molto popolare e venne utilizzato da alcune case editrici per produrre la prima generazione di libri in formato LRF.

A metà del 2008 dopo successivi miglioramenti e l’aggiunta di un’interfaccia grafica, il software è stato ribattezzato Calibre (si pronuncia Cali-ber).

Calibre è un software open source (GNU GPL v3) scritto fondamentalmente in linguaggio Python con alcune parti di codice ottimizzate in C/C++.

Si tratta di un software multi-piattaforma, disponibile anche come portable apps, diffuso in 200 paesi e tradotto in 12 lingue, le cui funzionalità possono essere estese con plug-in di terze parti.

A seguire un breve elenco di funzionalità di Calibre:

  • Calibre Content Server (menu connetti e condividi)
  • Motore di ricerca per gestione e aggiornamento dei meta-dati e delle copertine dei libri
  • Editor di contenuti e lettore di e-book per le opere non protette.
  • Trasferimento via USB verso qualunque tipo di dispositivo e-reader

Per ovvie ragioni, vista la sua natura open source, questo software non è compatibile con la tecnologia DRM pertanto i contenuti protetti non possono essere visualizzati.

Protezione DRM

BINARY INSTALL

La modalità di installazione di Calibre che vi propongo è la “Binary install” disponibile al link https://calibre-ebook.com/download_linux.

In sostanza eseguirete da terminale l’istruzione seguente, ed il gioco è fatto:

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

Teoricamente la “Binary install” vi solleva dall’onere di installare le numerose dipendenze del software.

Purtroppo per Calibre 5 e successive versioni sono necessarie anche le librerie qt5 di seguito elencate.

per Debian Buster
sudo apt install qt5-default

per Debian Bullseye:
sudo apt install qt5dxcb-plugin

Cosa succede quando utilizziamo Calibre

Al primo avvio la finestra del wizard vi chiederà di creare nella vostra $HOME directory una cartella sulla quale salvare gli e-book (il nome predefinito della cartella è Biblioteca di Calibre).

Questa directory conterrà il file metadata.db: un database in formato sqlite3 sul quale sono registrati tutti i riferimenti del catalogo.

Quando aggiungiamo un libro alla Biblioteca di Calibre vengono create al suo interno delle sottocartelle organizzate in ordine gerarchico per Autore/Titolo(ID) dove ID è il contatore del database metadata.db.

contenuto biblioteca

Questa cartella contiene questi 3 file:

  • cover.jpg: copertina del libro
  • Il file e-book nel suo formato specifico (es. .e-pub, .mobi, ecc.).
  • metadata.opf: file dei metadati in formato xml. A titolo di esempio il suo contenuto riferito a “Le avventure di Nicola Nickleby”.

il file metadata.opf è dello stesso formato utilizzato per la pubblicazione degli e-book (http://idpf.org/epub/20/spec/OPF_2.0_final_spec.html),  ovvero ha la stessa struttura del descrittore content.opf presente all’interno dell’e-book.

 Alcune funzionalità utili

Aggiungi da ISBN:

aggiungi ISBN

Può essere utile aggiungere al catalogo anche la nostra collezione di libri cartacei, il software è in grado di trovare le copertine e i meta-dati (titolo, autore, ecc.) a partire dai codici ISBN dei nostri testi.

In questo caso verranno create all’interno di Biblioteca di calibre delle directory contenenti solo le copertine e i metadati.

A scopo ludico ho sfruttato questa struttura di directory per creare il back-end di una WebApp in PHP di prestito libri lasciando a Calibre l’onere di aggiungere i libri.

Modifica meta-dati

Vi permette di aggiornare i meta-dati e le copertine in maniera accurata qualora non vi soddisfa l’importazione automatica fatta da Calibre. Calibre è in grado di ricavare queste informazioni dai cataloghi messi in rete dai vari fornitori di e-book.

Installazione di COPS su Linux Debian

COPS “acronimo di Calibre OPDS (and HTML) PHP Server” è un content server molto leggero che possiamo installare su Linux/Debian e che si dimostra una valida alternativa al content server di Calibre / Calibre2OPDS.

Questo tool aggiunge in pratica alla modalità di Content Server già fruibile da Calibre (menu Connetti/condividi) anche anche la funzionalità “Calibre OPDS”.

Il sito dello sviluppatore è raggiungibile a questo link:

https://blog.slucas.fr/projects/calibre-opds-php-server/

Il funzionamento del server lo potete testare con la demo dell’applicazione web disponibile a questo link:

http://cops-demo.slucas.fr/index.php

Cos’è un catalogo OPDS

OPDS (Open Publication Distribution System) è uno standard aperto sviluppato per la pubblicazione e la distribuzione di cataloghi in formato elettronico.

Lo standard OPDS deriva da Atom, un particolare formato XML su cui si basano i cosiddetti Web Feed presenti in molti Blog e siti di news.

I Web Feed sono sostanzialmente dei sommari di link verso altri file (generalmente file html) e sono concepiti per essere machine-readable, ovvero per facilitare il trasferimento automatico di risorse da un sito all’altro senza l’intervento umano.

Molti degli e-reader e delle applicazioni di e-book reading disponibili supportano l’importazione dei libri dai cataloghi OPDS.

Pre-requisiti e pacchetti software richiesti per l’installazione

  • Distribuzione Linux DEBIAN o una sua derivata.
  • Software Calibre contenente la propria collezione di e-book.
  • Apache o altro web server (es. nginx), o in alternativa il PHP embedded server

Tutti i pacchetti php richiesti li potete installare da terminale in questo modo:

sudo apt install php-gd php-sqlite3 php-json php-intl php-xml php-mbstring php-zip libapache2-mod-php

Download e compilazione dei sorgenti COPS (richiede git e unzip)

Scaricate i sorgenti nella directory del server dove installerete l’applicazione, verificando ovviamente di avere i permessi di scrittura sulla suddetta directory:
git clone https://github.com/seblucas/cops.git

  • La modalità di compilazione riportata sul blog dello sviluppatore non funziona correttamente per alcuni problemi di dipendenze con la versione 2.0 di Composer (Dependency Manager php).
  • Utilizzeremo quindi come dirty fix la versione 1.9 di Composer per portare a termine la compilazione senza problemi

Da terminale entriamo nella directory dove abbiamo clonato i sorgenti cops.
cd cops

E avviamo la compilazione, con la seguente procedura:
wget https://getcomposer.org/download/1.9.0/composer.phar
php composer.phar global require "fxp/composer-asset-plugin:~1.1"
php composer.phar install --no-dev --optimize-autoloader

Configurazione iniziale

Create nella directory “cops” un link simbolico alla cartella “Biblioteca di calibre” presente nella Home Directory (nel mio caso ho chiamato il link biblioteca)

ln -s ~/Biblioteca\ di\ calibre/ biblioteca

Copiate il file config_local.php.example rinominandolo config_local.php.

Come riportato nella figura va inserito in questo file il link alla Biblioteca di calibre che abbiamo creato in precedenza.
$config[‘calibre_directory’] : Path to your Calibre directory (es. biblioteca/).

Alternativa 1: Content Server http

Se avete installato un server http (es. Apache o Nginx), potete accedere all’applicazione web attraverso link alla sotto-cartella del server, quindi nel mio esempio (sostituite a bibliomike, localhost o il nome del vostro host):

http://bibliomike/cops

Aternativa 2: PHP Embedded Server

PHP permette di avviare in modo semplice da terminale un istanza di server http attraverso l’opzione ‘S’.

In questo esempio è stata scelta la porta 8080, considerando nel mio caso che la porta standard è già utilizzata da Apache:

$ php -S bibliomike:8080

L’applicazione web è ora disponibile direttamente sul mio server attraverso questo link (sostituite a bibliomike, localhost o il nome del vostro host):

http://bibliomike:8080

Accesso al catalogo con client OPDS

Una volta installato il catalogo su server possiamo condividerlo con altri dispositivi permettendo agli utenti di una rete locale di utilizzare oltre al browser web anche altri programmi e dispositivi specifici.

Per fare questo è necessario utilizzare dispositivi che supportino nativamente lo standard OPDS o che siano dotati di un software OPDS-Client.

Il catalogo in formato standard OPDS è raggiungibile sul nostro server accedendo al file feed.php presente nella cartella dove abbiamo installato COPS (es. http://bibliomike/cops/feed.php oppure server demo http://cops-demo.slucas.fr/feed.php).

Di seguito alcuni screen-shot di esempio di configurazione del client OPDS  ‘foliate’ installato su un PC Linux.

Il client Foliate Aggiunta del catalogo al client Accesso al catalogo COPS Anteprima del catalogo

  • Dal Menu selezionare ‘Add Catalog’
  • Inserire nella finestra di dialogo il percorso su server del file feed.php, il nome del catalogo ed eventualmente una breve descrizione.
  • Salvare la configurazione. Il catalogo è ora visibile nell’elenco delle risorse disponibili.
  • Visualizzare come esempio gli ultimi 50 e-book aggiunti al catalogo

Nell’angolo delle curiosità vi ci metto questo progetto https://github.com/steinarb/opds-reader: un plug-in che permette di trasformare Calibre in un client OPDS.

Oltre a Foliate che abbiamo utilizzato come esempio in questa sezione posso raccomandarvi come OPDS Client anche Thorium Reader, un client OPDS multi-piattaforma.

Sigil e PageEdit

Fin’ora abbiamo discusso di software utili alla gestione di una collezione di libri.
Se invece volessimo produrre i nostri contenuti e distribuirli in formato e-book, cosa ci offre il meraviglioso mondo dell’open-source?

Per cominciare anche Calibre permette l’editing dei contenuti e dei meta-dati ma non è esattamente lo strumento che vi consiglio di utilizzare per creare un e-book.

Sigil è un ottimo software per la creazione di e-book, ma nulla vieta per questo scopo anche l’utilizzo di un word editor (es. libreoffice) seguendo le regole di formattazione descritte sui siti specializzati ed esportando successivamente il documento in un formato e-book (es. *.epub).

In rete sono disponibili numerosi blog e siti specializzati in e-publishing è sufficiente inserire del vostro motore di ricerca la chiave ‘Sigil per l’e-publishing’ per trovare quello che vi serve.

Se siete interessati ad utilizzare Sigil e la sua “Companion App” PageEdit vi rimando senza indugio al sito ufficiale: https://sigil-ebook.com/.

Noterete che per Linux non sono disponibili dei file binari precompilati e aggiornati, l’installazione via ‘apt’ della vostra distribuzione Linux probabilmente vi proporrà delle versioni obsolete.

Vi consiglio personalmente la compilazione da sorgenti di Sigil e PageEdit, l’unico problema che ho riscontrato con Debian Bullseye è stata la necessità di utilizzare il package manager di python pip per l’installazione di alcuni pacchetti non disponibili via apt.