Sur Firefox :
une minimap !

2026-04-20 16:15

Calibre-web API

  • en_cours
  • changelog
  • bib_calibre js_API
  • Résumé

    Remarques concernant Calibre utilisé comme affichage web de ma bibliothèque (et références). J'avais besoin d'accéder aux données via l'API de Calibre-web, mais elles renvoyaient parfois de mauvaises informations... Création d'un fichier de base de donnée saint, consulté au lieu de l'API de Calibre-web (trompeuse)

    (+) Fix CSS de la taille des couvertures (pour respecter le format du livre)

    API FAIL

    (vbulle_content.js API FIX)

    Calibre...
    API de Calibre-web défaillante car l'index des entrées (rowid) est incrémenté sans tenir compte de la suppression d'entrées (livres). Si un livre est supprimé, l'index rowid de Calibre-web est incrémentée (++) ce qui crée des "trous" entre son indexation comparée à celle de Calibre (qui tient compte de ces suppressions). Calibre suit son index, Calibre-web indexrow...

    Missmatch entre Calibre et Calibre-web

    De ce fait, si on consulte la db de Calibre-web via son API (GET) on obtient parfois le mauvais livre/entrée, les mauvaises données (malgré le fait que l'id utilisé par Calibre-web soit correcte...). On se retrouve avec un index déférent pour la db (database) de Calibre (source, input) et Calibre-web (output web).

    Solutions

    L'UUID des livres peut servir (lookup) mais cet identifiant unique est long (à écrire dans l'URL). J'ai donc opté pour un export de la db Calibre (sûre, de référence) en .json
    Cela me fait un Backup (sauvegarde) et est consultable par Calibre-web/autre (via Curl par exemple, en JS ou Cli).

    Résultats

    Cela a permis de récupérer les datas (informations) de livres (sur Grav, ici, sur ce blog...) simplifiant la mise à jour des entrées affichées dans les déférents articles ;
    et, sur Calibre-web, de charger des informations par exemple sur des livres connexes/références entre entrées/livres.

    book.png

    Dans Calibre-web j'ai ajouté un champ via_bib
    On indique id/num du livre (+page), ";" comme separator :
    123, p120
    123; 225, p19

    Quand on affiche un livre la base de données est consultée pour voir si d'autres livres en font mention (via l'id/num retrouvé dans via_bib). Si c'est le cas ils s'affichent en "backlinks" (lien de retour vers le livre à l'origine de la citation/ref) ; si le livre consulté contient un id/num dans via_bib, il s'affiche comme référence.
    ( Cela permet une meilleure mise en lien des ouvrages entre eux )

    Inconvénient, il faut penser à mettre à jour l'export de la base de donnée (tâche automatisée grâce à cron, simplifiée avec ssh->exec + rsync)

    Counters

    Ajout de compteurs (num/notification) indiquant combien de livres contiennent eux aussi :
    auteur.ice, série, publisher/éditeur (metadata en commun)
    ( indique d'un coup d'œuil si le clic vaut le coup )

    en_attendant.png

    CSS MAJ page d'accueil, espacements

    Mise en page, mise à jour de l'espacement entre les livres (liste/grille), fonction isotope (main.js)

    index_grap.png

    $(".discover .row").isotope(
        itemSelector: ".book",
        layoutMode: "fitRows",
        fitRows: {
            gutter: 15,  // espace horizontal entre colonnes
        
    });
    • afin d'avoir les couvertures (covers) des livres aux bonnes dimensions (non étirées).... : ajout/modification CSS de flex
    Calibre-web API