Archive for the ‘Logiciel libres’ Category

Liseuse : l’horreur des DRM

2 janvier 2018

Le père Noël nous a apporté dans sa hotte une liseuse Kindle (Amazon). J’ai fait le choix de cette marque car leur catalogue est sans conteste l’un des plus important !

La lecture est effectivement très reposante, infiniment plus que sur un écran, et j’apprécie aussi la légèreté et le fait que l’on ne soit pas embêté par le livre qui se referme tout seul… on peut vraiment lire dans toutes les positions sans se prendre le chou ! De même, on reprend toujours la lecture sur la dernière page, quoi qu’il arrive, plus besoin de courir après un marque pages !

Côté bouquins, le plus simple est effectivement de faire ses emplettes dans la boutique dans laquelle la liseuse a été achetée. Dans un tel cas, le livre est immédiatement disponible sur la tablette (si tant est qu’elle soit connectée à un réseau Wifi – ou 3G pour les modèles compatibles). Ça se corse si on souhaite s’approvisionner ailleurs (parcequ’un titre est introuvable sur la boutique d’origine de la liseuse par exemple), ou si on souhaite archiver ses eBook dans un format « standard » pour le cas ou on changerait un jour de crèmerie à l’occasion d’un renouvellement de liseuse par exemple. Dans mon cas, la médiathèque de ma commune met à disposition un certain nombre d’eBooks sur son site Web. Ils ont recours pour la diffusion aux services du logiciel Adobe Digital Edition. En théorie, une fois l’eBook téléchargé via Adobe Digital Edition, il suffit de brancher sa tablette, qui sera reconnue par le logiciel d’Adobe, ce qui permettra de charger l’eBook sur la tablette. Ça, c’est le théorie, j’ai essayé la manip, la Kindle n’est pas reconnue. Après vérification, la Kindle n’est pas compatible avec le logiciel d’Adobe (ouais, ils ont réussit à pondre un truc pas compatible avec le modèles de liseuses du leader mondial dans le domaine…). Bien sur, comme les eBook sont protégés et pas dans un format supporté par la tablette (ePub alors que la Kindle attend des .mobi ou des .aws), ça n’est même pas la peine de les copier directement à la main dans la liseuse.

Liseuse Kindle

Liseuse Kindle

Heureusement, il existe des logiciels capables de supprimer les DRM et d’effectuer la conversion pour les rendre compatibles avec a peu près n’importe quelle liseuse.

Supprimer les DRM des eBooks avec Calibre

J’ai toujours une préférence pour les logiciels libres, j’ai donc naturellement orienté mon choix vers Calibre et son plugin DeDRM. Il vous faudra les logiciels Adobe Digital Edition (ADE). Le plugin DeDRM suggère d’installer la version 2.0.1 (disponible ici), les versions 3.0 et suivantes étant susceptibles d’utiliser des DRM que DeDRM ne sais pas encore faire sauter. Malheureusement, il se peut que certains fournisseurs requièrent une version plus récente, c’est le cas de certains eBooks de la médiathèque de ma commune, étrangement pas de tous… Pour ces eBooks récalcitrants, voir plus bas ! Il semble que certaines personnes parviennent à lancer ADE sous Linux via Wine. Je n’y suis pas parvenu, que cela soit pour ADE 2.0.1 ou ADE 4.5.7. J’ai donc installé ADE et Kindle for PC sous Windows via mon instance virtualisée sous KVM de l’OS de Microsoft. Il faudra vous créer un Adobe ID. Et ensuite ajouter vos livres dans ADE.

La procédure :

  • Installez Calibre
  • Téléchargez le plugin DeDRM
  • Dézippez l’archive de DeDRM, vous trouverez dedans un dossier DeDRM_calibre_plugin contenant un fichier DeDRM_plugin.zip, c’est ce fichier qu’il faut fournir à Calibre
  • Installez le plugin dans Calibre. Sous Calibre :
    • Menu Préférence
    • Dans la section avancé, cliquez sur Plugin
    • Cliquez sur charger une extension à partir d’un fichier
    • Sélectionnez le fichier DeDRM_plugin.zip, validez puis relancer Calibre pour activer le nouveau plugin
    • En principe, DeDRM importe automatiquement vos clés ADE et Kindle For PC. Vérifiez en retournant dans Préférences/Avancé/Plugin, sous la section extensions Type de fichier, vous devez trouver DrDRM. Double cliquez dessus. Il doit y avoir une ligne default_key pour Adobe Digital Edition ebooks et Kindle For Mac/PC ebooks. Profitez en pour ajouter le numéro de série de votre Kindle sous eInk Kindle ebools (cela permettra de déchiffrer les ebooks que vous auriez récupéré directement dans la liseuse en la connectant à votre PC par USB. Ce numéro de série se trouve sur la boite de la Kindle, ou dans ses Paramètres sous Options de l’appareil -> Infos sur l’appareil). Je vous conseil d’exporter les clés (vous permettra de déchiffrer vos ebooks cas d’import ultérieur sur une autre machine par exemple).

      Configuration de DeDRM

      Configuration de DeDRM

  • Vous êtes prêts ! Les ebooks sont DéDRMisés à leur import. Il faut donc réimporter les ebooks avec DRM que vous auriez déjà importé. Les ebooks ADE se trouvent sous Documents/My Digital Editions, et sous Documents/My Kindle Content pour Kindle.

Lors du premier lancement de Calibre, il vous sera proposé configurer vos comptes et notamment pour la Kindle, l’adresse mail privée vers laquelle envoyer vos eBook déDRMisés pour qu’ils soient importés dans la tablette. Je vous conseil de le faire, c’est très pratique ensuite, car Calibre fera tout le nécessaire (conversion si nécessaire puis envoi sur l’adresse adéquate). J’ai personnellement créé un compte mail sur GMX, l’intérêt est que ce service autorise des pièces-jointes de 50 Mo (contre 25 Mo seulement pour GMail), ce qui est pratique pour les gros eBook (et évitera d’encombrer votre boite mail principale).

Procédure complémentaire pour les DRM récalcitrants

On l’a vu, DeDRM ne déchiffre pas (encore) certains DRM des versions ultérieures à la version 2.0.1 d’ADE. J’ai dégoté un petit logiciel s’appelant ePUBee DRM Removal. Vous pouvez le télécharger ici, installez le, et lancez le. L’utilisation est simplissime, puisqu’il détecte tout seul les eBooks, puis les déchiffre et les met dans C/Users/nomDUtilisateur/AppData/Romaing/decrypt. Il vous suffit d’importer ces fichiers dans Calibre, et le tour est joué !

Conclusion

Si l’usage dans la boutique d’origine de la liseuse est très simple (2 clics pour acheter un eBook), c’est vite assez galère, à cause des mesures de protection, dès qu’on sort de la boutique d’origine. Heureusement, des outils assez simples et faciles à installer permettent de rendre lisible les eBook sur à peu près n’importe quelle liseuse. La principale difficulté est de trouver le bon outil, la bonne procédure, et éventuellement de configurer les outils.

Pour archives, je remet les outils ici :

Code Colorer avec PHP7

8 décembre 2016

J’ai récemment migré mon hébergement vers PHP 7. J’ai ensuite constaté que mes blogs sur lesquels étaient actif le plugin code colorer ne fonctionnaient plus. Malheureusement, ce plugin ne semble plus maintenu, et il ne faut donc pas compter sur une hypothétique mise à jour pour corriger le problème. Heureusement, certains proposent la solution. Je la reprend ici pour archives.

PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in [...]/wp-content/plugins/codecolorer/codecolorer-core.php on line 50

Dans le fichier wp-content/plugins/codecolorer/codecolorer-core.php, trouvez les lignes suivantes (vers la ligne 50) :

/** Search content for code tags and replace it */
function BeforeHighlightCodeBlock($content) {
$content = preg_replace('#(\s*)\[cc([^\s\]_]*(?:_[^\s\]]*)?)([^\]]*)\](.*?)\[/cc\2\](\s*)#sie', '$this->PerformHighlightCodeBlock(\'\\4\', \'\\3\', $content, \'\\2\', \'\\1\', \'\\5\');', $content);
$content = preg_replace('
#(\s*)\<code(.*?)\>(.*?)\(\s*)#sie', '$this->PerformHighlightCodeBlock(\'\\3\', \'\\2\', $content, \'\', \'\\1\', \'\\4\');', $content);

return $content;
}

Et remplacer par :

/** Search content for code tags and replace it */
function BeforeHighlightCodeBlock($content) {
$content = preg_replace_callback('#(\s*)\[cc([^\s\]_]*(?:_[^\s\]]*)?)([^\]]*)\](.*?)\[/cc\2\](\s*)#si', function($matches){
return $this->PerformHighlightCodeBlock($matches[4], $matches[3], $matches[2], $matches[1], $matches[5]);
}, $content);
$content = preg_replace_callback('#(\s*)\<code(.*?)\>(.*?)\(\s*)#si', function($matches){
return $this->PerformHighlightCodeBlock($matches[3], $matches[2], '', $matches[1], $matches[4]);
}, $content);

return $content;
}