22 votes

Comment puis-je recueillir toutes mes notes et mes surlignements d'iBooks ?

J'ai beaucoup de surlignages et de notes dans iBooks que j'ai lues, et j'aimerais pouvoir les rassembler dans un format facile à utiliser et à manipuler (par exemple pour rédiger des documents et citer des citations).

Par exemple, j'aimerais qu'un surlignage comme celui-ci

produise quelque chose (par exemple, en CSV) comme

Quod me nutrit me destruit - ce qui me nourrit me détruit également, 14, Tamburlane Parties 1 et 2, Christopher Marlowe, Anthony B. Dawson ed., Bloomsbury, https://itun.es/us/qSrZ0.l

Je peux voir comment faire cela (en quelque sorte) laborieusement, une note à la fois, en utilisant la fonction de "partage" d'iBook (ou copier-coller, bien sûr), mais je ne vois aucun moyen de le faire en masse, pour toutes mes notes d'un livre, ou même tous mes livres.

Existe-t-il un moyen d'accomplir cela, avec un script Apple ou en utilisant Automator par exemple? Ou peut-être y a-t-il un fichier texte ou XML contenant mes notes et surlignages que je pourrais écrire un script (de préférence en Python) pour analyser.

1 votes

La solution, il s'avère, (comme dans de nombreux cas), est de laisser Apple de côté et de passer à Kindle, qui dispose d'un excellent support pour l'exportation des surlignages et des notes.

18voto

Peter vermeiren Points 11

IBooks n'a pas de support AppleScript. Les annotations sont stockées dans un fichier SQLite : ~/Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation/.

Vous pourriez essayer de les analyser. Cette réponse donne un lien vers Digested, qui lit cette base de données et vous permet ensuite d'exporter vos annotations vers Evernote, mais je ne sais pas quelles seront leur mise en forme ou si vous voulez vous embêter avec Evernote.

Une solution (peut-être) simple serait d'ouvrir le livre dans iBooks pour iOS. Vous pourriez ensuite envoyer les annotations par lot par e-mail.

  1. Ouvrez le livre
  2. Appuyez sur le "bouton de liste" pour afficher la Table des matières
  3. Passez à l'onglet Notes
  4. Appuyez sur le bouton Partager
  5. Sélectionnez Modifier les notes
  6. Sélectionnez Tout
  7. Partagez par e-mail.

Éditer :

En fait, après avoir lu un commentaire sur reddit, il semble qu'il y ait un moyen de les exporter tous depuis iBooks sur OS X également :

Vous pouvez exporter vos notes par e-mail depuis Notes -> Tout sélectionner -> Partager (vous devez maintenir ctrl en cliquant avec le bouton droit pour conserver votre sélection). Vos portions surlignées seront copiées dans l'e-mail avec vos notes et formatées correctement. Étrangement, sur Mac l'application ne se soucie pas que le livre soit protégé par des droits d'auteur - elle copiera toujours la portion surlignée. L'application iOS en revanche discrimine. Si votre livre est protégé, seul le nom du chapitre sera partagé. Cela semble être la seule façon de le faire malheureusement. :/

En utilisant le trackpad de mon ordinateur portable, j'ai dû maintenir ctrl + Maj tout en tapotant sur le trackpad pour faire apparaître le menu contextuel tout en conservant la sélection.

0 votes

Ceci est très utile. Je suis encore loin de pouvoir intégrer les annotations dans un fichier CSV ou tout autre forme pratique. Je ne peux rien en tirer de la base de données SQL, et le mail, bien que joli, n'est pas accessible de manière programmable.

1 votes

Est-ce que c'est juste moi, ou est-ce que cela n'est plus possible dans la nouvelle version d'iBooks? Je ne vois plus de bouton Modifier les notes. Dans ce cas, comment puis-je exporter toutes mes notes?

0 votes

@incandescentman Il est là pour moi dans iOS 8.4.

7voto

Chris Hynes Points 5110
  1. Installez le DB Browser for SQLite gratuit.
  2. Allez dans le dossier des annotations iBooks : ~/Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation/
  3. Copiez le fichier .sqlite quelque part (comme le Bureau) pour conserver l'original en sécurité.
  4. Ouvrez le fichier avec DB Browser.
  5. Trouvez des notes dans votre livre cible en parcourant les données.
  6. Filtrez par le ZANNOTATIONASSETID pour afficher uniquement les notes dans le livre cible.
  7. Copiez et collez les annotations que vous souhaitez dans Numbers ou toute autre application que vous préférez.

1 votes

La facilité d'utilisation renommée d'Apple !

1 votes

@raxacoricofallapatorius : Sérieusement. C'est tout un micmac juste pour obtenir une liste des mots de vocabulaire que j'ai mis en évidence.

5voto

jorisw Points 218

J'ai écrit un script dans ce but qui extrait les notes de votre Mac et génère des fichiers d'exportation Evernote, prêts à être ouverts en double-cliquant. Peut-être pourriez-vous modifier mon script s'il ne correspond pas précisément à vos besoins.

En bref, il lit les bases de données SQLite dans : ./Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary ./Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotations

... et dans ce cas, les exporte au format .enex d'Evernote.

https://github.com/jorisw/ibooks2evernote/

     *  
     *  Lit la bibliothèque d'annotations iBooks sur votre Mac et les exporte,
     *  étiquetées avec leur titre de livre respectif et importées dans
     *  des carnets séparés.
     *
     *  Utilisation :
     *  
     *  Déplacez ce script en haut de votre répertoire personnel sur votre Mac.
     *  C'est le dossier qui porte votre nom, que le Finder ouvre si vous
     *  cliquez sur l'icône du Finder dans le Dock.
     *
     *  Pour exporter vos notes vers Evernote :
     *  
     *  1. Exécutez la commande suivante dans le Terminal :
     *
     *     php ./ibooks2evernote.php
     *    
     *  2. Ouvrez le dossier nouvellement créé "exports iBooks pour Evernote" depuis votre
     *     dossier personnel, ouvrez chaque fichier là-dedans, Evernote s'ouvrira et commencera
     *     à importer vos notes.
     *
     */

    // Emplacements de fichiers par défaut pour les données iBooks requises 
    define('NOM_REPERTOIRE_RESULTAT',"exports iBooks pour Evernote");
    define('REPERTOIRE_BASE_DE_DONNEES_LIVRES','./Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary');
    define('REPERTOIRE_BASE_DE_DONNEES_NOTES','./Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation');

    if(file_exists(NOM_REPERTOIRE_RESULTAT)){
        die("Le dossier de destination des exportations existe déjà sur votre Mac.\nVeuillez le déplacer pour continuer.\n");
    }

    // Vérifier la présence de la base de données iBooks

    if(!file_exists(REPERTOIRE_BASE_DE_DONNEES_LIVRES)){
        die("Désolé, je n'ai pas pu trouver de bibliothèque iBooks sur votre Mac. Avez-vous ajouté des livres là-dedans ?\n");
    }else{
        if(!$chemin = exec('ls '.REPERTOIRE_BASE_DE_DONNEES_LIVRES."/*.sqlite")){
            die("Impossible de trouver la base de données de la bibliothèque iBooks. Avez-vous ajouté des livres là-dedans ?\n");
        }else{
            define('FICHIER_BASE_DE_DONNEES_LIVRES',$chemin);
        }
    }

    // Vérifier la présence de la base de données de notes iBooks

    if(!file_exists(REPERTOIRE_BASE_DE_DONNEES_NOTES)){
        die("Désolé, je n'ai pas pu trouver de notes iBooks sur votre Mac. Avez-vous réellement pris des notes dans iBooks ?\n");
    }else{
        if(!$chemin = exec('ls '.REPERTOIRE_BASE_DE_DONNEES_NOTES."/*.sqlite")){
            die("Impossible de trouver la base de données des notes iBooks. Avez-vous réellement pris des notes dans iBooks ?\n");
        }else{
            define('FICHIER_BASE_DE_DONNEES_NOTES',$chemin);
        }
    }

    // Démarrer un analyseur SQLite

    class MaBD extends SQLite3
    {
      function __construct($NomFichier)
      {
         $this->open($NomFichier);
      }
    }

    // Récupérer des livres.

    $livres = array();

    $basedonneslivres = new MaBD(FICHIER_BASE_DE_DONNEES_LIVRES);

    if(!$basedonneslivres){
      echo $basedonneslivres->lastErrorMsg();
    } 

    $res = $basedonneslivres->query("
                SELECT
                    ZASSETID,
                    ZTITLE AS Titre,
                    ZAUTHOR AS Auteur
                FROM ZEKLIBRARYASSET
                WHERE ZTITLE IS NOT NULL");

    while($ligne = $res->fetchArray(SQLITE3_ASSOC) ){
        $livres[$ligne['ZASSETID']] = $ligne;
    }

    $basedonneslivres->close();

    if(count($livres)==0) die("Aucun livre trouvé dans votre bibliothèque. Avez-vous ajouté des livres à iBooks ?\n");

    // Récupérer les notes.

    $basedonnesnotes = new MaBD(FICHIER_BASE_DE_DONNEES_NOTES);

    if(!$basedonnesnotes){
      echo $basedonnesnotes->lastErrorMsg();
    } 

    $notes = array();

    $res = $basedonnesnotes->query("
                SELECT
                    ZANNOTATIONREPRESENTATIVETEXT as TexteLarge,
                    ZANNOTATIONSELECTEDTEXT as TexteSelectionne,
                    ZANNOTATIONNOTE as Note,
                    ZFUTUREPROOFING5 as Chapitre,
                    ZANNOTATIONCREATIONDATE as Cree,
                    ZANNOTATIONMODIFICATIONDATE as Modifie,
                    ZANNOTATIONASSETID
                FROM ZAEANNOTATION
                WHERE ZANNOTATIONSELECTEDTEXT IS NOT NULL
                ORDER BY ZANNOTATIONASSETID ASC,Cree ASC");

    while($ligne = $res->fetchArray(SQLITE3_ASSOC) ){
        $notes[$ligne['ZANNOTAT});
    }

    $basedonnesnotes->close();

    if(count($notes)==0) die("Aucune note trouvée dans votre bibliothèque. Avez-vous ajouté des notes à iBooks ?\n\nSi vous en avez ajouté sur d'autres appareils que ce Mac, assurez-vous d'activer la synchronisation des notes/signets iBooks sur tous les appareils.");

    // Créer un nouveau répertoire et se déplacer dedans

    mkdir(NOM_REPERTOIRE_RESULTAT);
    chdir(NOM_REPERTOIRE_RESULTAT);

    $i=0;
    $j=0;
    $b=0;

    foreach($notes as $IDAsset => $noteslivre){

        $Corps = '

        ';

        $TitreLivre  = $livres[$IDAsset]['Titre'];

        $j = 0;

        foreach($noteslivre as $note){

            $TexteCoupe = null;
            $TextAvecContexte = null;

            // Passer les notes vides
            if(strlen($note['TexteLarge']?$note['TexteLarge']:$note['TexteSelectionne'])==0) continue;

            $TexteSurligne = $note['TexteSelectionne'];

            // Limiter les titres à 255 caractères sinon Evernote les videra.

            if(strlen($TexteSurligne)>255) $TexteCoupe = substr($note['TexteSelectionne'],0,254)."…";

            // Si iBooks a enregistré le paragraphe entourant un texte surligné, le montrer et faire en sorte que le texte surligné soit surligné.
            if(!empty($note['TexteLarge']) && $note['TexteLarge'] != $note['TexteSelectionne']){
                $TextAvecContexte = str_replace($note['TexteSelectionne'],"".$note['TexteSelectionne']."",$note['TexteLarge']);
            }

            // Garder des compteurs pour les retours d'information en ligne de commande
            if($j==0)$b++;
            $i++;
            $j++;

            // Mettre au format ENEX d'Evernote.
            $Corps .='
    '.($TexteCoupe?$TexteCoupe:$TexteSurligne).'

    '.($TextAvecContexte?$TextAvecContexte:$TexteSurligne).'
    Du chapitre : '.$note['Chapitre'].'

    '.$note['Note'].'

    ]]>'.strftime('%Y%m%dT%H%M%S',strtotime("2001-01-01 +". ((int)$note['Cree'])." seconds")).''.strftime('%Y%m%dT%H%M%S',strtotime("2001-01-01 +". ((int)$note['Modifie'])." seconds")).''.$TitreLivre.'.joris@jor.isdesktop.mac0';

        }

        $Corps .='

        ';

        file_put_contents($TitreLivre.".enex", $Corps);
    }

    echo "Terminé ! Exporté $i notes dans $b fichiers d'exportation distincts dans le dossier '".NOM_REPERTOIRE_RESULTAT."'.\n\n";

4voto

Andrey Korchak Points 101

J'ai également rencontré ce problème, et j'ai créé un petit outil qui prend toutes les notes et surlignages d'iBooks et les exporte dans des fichiers Markdown.

Installation

ibooks-notes-exporter est disponible sur OS X (à la fois sur les processeurs Intel et M-series). Il est distribué via un gestionnaire de paquets homebrew.

Exécutez ces commandes dans votre terminal

> brew tap 57uff3r/mac-apps
> brew install 57uff3r/mac-apps/ibooks_notes_exporter

Utilisation

Tout d'abord, vous devez obtenir une liste de tous vos livres avec des notes et des surlignages.

 ibooks_notes_exporter books
+----------------------------------+-----------------+----------------------------------------------------------------------------------+
| SINGLEBOOK ID                    | NUMBER OF NOTES | TITLE AND AUTHOR                                                                 |
+----------------------------------+-----------------+----------------------------------------------------------------------------------+
| 4BAE5DA3C95788753173EAE8C63E6034 |               1 | Lorem impsum — John Doe                                                          |
| 7C3FA4F94689D97444BB4E0FD97D7197 |              54 | Hamlet — william shakespeare                                                     |
+----------------------------------+-----------------+----------------------------------------------------------------------------------+

Ensuite, vous pouvez exporter toutes vos notes du livre dans un fichier Markdown.

 ibooks_notes_exporter export 4BAE5DA3C95788753173EAE8C63E6034 > ./LoremImpsum.md

J'ai également publié le code source sur GitHub

0voto

zingdoozer Points 1

Klib fonctionne à merveille. L'OP ici dit que les dix premiers livres sont gratuits, et vous pouvez supprimer des livres une fois que vous avez téléchargé leurs points saillants. Je pensais avoir vu un essai gratuit de 7 jours maintenant, mais ce n'est pas grave car je paie la mise à niveau pro de £12.99 car cela fonctionne à merveille et en vaut bien la peine.

https://www.reddit.com/r/readwise/comments/ygktl7/multiple_highlight_export_from_apple_books_is/

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X