TextUID : Propositions pour un identifiant unique d’un livre, commun à ses différentes éditions, générable automatiquement

Dans cet article, je propose des pistes pour une méthode facilement reproductible permettant de générer automatiquement un identifiant de texte. Ce n’est pas une méthode parfaite, mais plutôt la « moins mauvaise » méthode, aussi je suis ouvert à toute suggestion permettant de l’améliorer.

MAJ 08/06/2014 : ajout des règles 6 et 7 et de deux nouveaux exemples. Merci à @edasfr pour ces remarques.

Pourquoi ?

Lorsque je développe un site ou un outil pour les libraires, un besoin récurent celui est de pouvoir identifier les différents livres correspondant à un même texte (nouvelle édition, réédition en poche, version numérique ou audio, etc.).

Par exemple, le site de la librairie Scylla, sur chaque fiche livre, propose le même livre dans d’autres formats ou d’anciennes éditions épuisés disponibles d’occasion. Autre exemple, la librairie Charybde, pour le calcul de ses meilleures ventes, souhaite que les ventes d’un même texte chez différents éditeurs soient additionnés et pas considérés comme des livres différents.

Aujourd’hui, ce recoupement demande que les librairies (ou autres utilisateurs de Biblys) créent manuellement ces relations, opération fastidieuse qui peut être source d’erreur.

Cahiers des charges

La méthode de génération de l’identifiant doit :

  • être facilement à mettre en œuvre afin que n’importe qui puisse générer un identifiant sans passer par une autorité centrale ;
  • être suffisamment détaillée et prévoir tous les pièges possibles : deux acteurs générant un identifiant pour le même texte doivent parvenir systématiquement au même résultat.

D’autres (mauvaises) solutions

  • Le titre du livre, de toute évidence, ne peut convenir puisque que, si deux editions d’un livre ont a priori le même titre, il n’est pas rare que deux livres sans aucun rapport ait également le même titre. Par exemple, dans la base Biblys (qui est loin d’être exhaustive), il y a pas moins de cinq titres d’auteurs différents intitulé « Les Insoumis« …
  • Les ISBN sont propres à chaque édition d’un livre, il arrive parfois qu’un même livre chez un même éditeur puisse obtenir des ISBN différents au fil des réimpressions, ils ne peuvent donc convenir à cet usage.
  • La norme ISTC (pour International Standard Text Code) se rapproche de nos besoins, mais elle a deux désavantages. D’abord, elle ne nécessite de passer par une autorité centrale, une agence (en France, Électre) qui ne peut créer de nouveaux codes qu’à la demande d’un éditeur ou d’un ayant droit. De plus, elle semble peu utilisée aujourd’hui.

Description de la norme TextUID

Elle se présente sous la forme un ensemble de règles, dont le but est de décrire la méthode de génération de l’identifiant en tentant de prévoir un maximum de cas particuliers pour indiquer la marche à suivre le cas échéant. De nouvelles règles pourront donc être ajoutées si de nouveaux cas particuliers problématique sont découverts.

Règle 1

Le TextUID est une empreinte MD5 généré d’après une chaîne de caractères précises, encodé en UTF-8, en majuscules, contenant :
TITRE ORIGINAL du livre
barre oblique entouré d’espaces : ‘ / ‘
NOM PRÉNOM de l’auteur (ou NOM uniquement le cas échéant)

Soit : TITRE ORIGINAL / NOM PRÉNOM

Règle 2

Le titre du livre doit être dans la langue de publication originale, afin que les différentes traductions d’une oeuvre possèdent bien le même identifiant que l’original.

Règle 3

Si le livre a plusieurs auteurs, on les ajoute dans l’ordre alphabétique, l’un après l’autre, séparés par une virgule et une espace : NOM PRÉNOM, NOM PRÉNOM (ou NOM uniquement le cas échéant)

Soit : TITRE ORIGINAL / NOM PRÉNOM, NOM, NOM PRÉNOM

Règle 4

S’il existe plusieurs graphies pour un titre de livre, on utilise celui mentionné sur la couverture de la première édition.

Règle 5

S’il existe plusieurs graphies pour un nom d’auteur, on utilise celui mentionné sur la couverture de la première édition de son premier livre publié.

Règle 6

Si le livre fait partie d’une série, on utilise le titre du tome uniquement. Si le tome n’a pas de titre, on utilise le nom de la série, suivi d’un tiret et du numéro du tome.

Règle 7

Si le livre est un ouvrage collectif et qu’un ou plusieurs directeurs d’ouvrage sont mentionnés (« Sous la direction de… »), ce sont ces noms qui seront utilisés au lieu du nom des auteurs.

Quelques exemples :

Le Petit Prince

Chaîne : LE PETIT PRINCE / DE SAINT-EXUPÉRY ANTOINE
Empreinte MD5 : 31943e821c39ccd479441a2b0bdcf2b7

L’Attrape-coeurs

Chaîne : THE CATCHER IN THE RYE / SALINGER J. D.
Empreinte MD5 : 9c93c0d32ee994bddf65bb6f3bcfa421

Les Soldats de la mer

Chaîne : LES SOLDATS DE LA MER / RÉMY ADA, RÉMY YVES
Empreinte MD5 : d44c3bf585ee56cf1ae02f043492de81

À la recherche du temps perdu, tome 2

Chaîne : À L’OMBRE DES JEUNES FILLES EN FLEURS / PROUST MARCEL
Empreinte MD5 : 736ac35cc4ce8b67dfbaaa901c03f398

L’énergie à découvert, sous la direction de…

Chaîne : L’ÉNERGIE À DÉCOUVERT / JEANDEL CATHERINE, MOSSERI REMY
Empreinte MD5 : 97ff30f497e277265045e3cbdf08a37c

Exemples de code

PHP

<?php 
 
function textuid($title, $authors)
{
    foreach ($authors as $author)
    {
        if (!isset($authors_string)) $authors_string = NULL;
        else $authors_string .= ', ';
        $authors_string .= trim($author['last_name'].' '.$author['first_name']);
    }
    $string = mb_strtoupper($title.' / '.$authors_string, 'UTF-8');
    $hash = md5($string);
    return array('string' => $string, 'hash' => $hash);
}

$book_title = "Les Soldats de la mer";
$book_authors = array(
    array('first_name' => 'Ada', 'last_name' => 'Rémy'),
    array('first_name' => 'Yves', 'last_name' => 'Rémy')
);
 
var_dump(textuid($book_title, $book_authors));

Voir aussi ici le code en action.

Conclusion

J’utilise déjà cette méthode, à des fins de test, pour la base Biblys. Je la partage ici car je pense qu’elle pourrait être utile à d’autres en interne, mais aussi parce qu’elle prendrait un tout autre intérêt dans le cadre d’un échange de données entre des bases différentes.

Je suis conscient que cette méthode ne pourra jamais fonctionner à 100%, mais je pense que la première règle doit pouvoir couvrir 99% des cas et que les suivantes doivent pouvoir permettre de se rapprocher au maximum de la perfection… tout en sachant qu’on ne pourra jamais l’atteindre ! Mais c’est sans doute le prix à payer pour une génération automatique, sans vérification humaine.

Je suis donc bien entendu ouvert à toute question, remarque ou proposition de règles qui pourrait permettrait d’améliorer la méthode !

PHP : Conversion ISBN/EAN, la classe !

J’ai proposé ici-même, ces dernières années, plusieurs fonctions PHP permettant la manipulation, la conversion et la validation de codes ISBN, que j’utilise notamment dans le cadre de Biblys ou Citriq.  Entre temps, j’ai découvert la programmation orienté objet : voici donc une classe pour réunir toutes ses fonctions.

Télécharger php-isbn-class sur Github

Un autre intérêt de cette classe par rapport à mes précédentes fonctions est qu’elle ne se limite pas aux ISBN francophones (978-2 et 979-10) mais qu’elle fonctionne avec n’importe quel code, grâce au fichier range.xml qui l’accompagne.

Cette classe peut être utilisée pour :

  • Valider un code ISBN
  • Convertir des codes entre les formats ISBN-10, ISBN-13 et EAN (sans tirets)
  • Calculer le caractère de contrôle
  • Afficher l’agence d’enregistrement du code (pays ou langage)

Démo

Une démo est disponible à l’adresse : http://labs.nokto.net/php-isbn-class/

Installation

  • Incluez ISBN.class.php dans votre script PHP
  • Procurez-vous une version récente du fichier range.xml auprès de l’ISBN International Agency (ou utilisez celle fournie)
  • Définissez la constante ISBN_RANGES_FILE avec le chemin du fichier range.xml
  • Utilisez les autres constantes pour définir vos messages d’erreurs (en anglais par défaut).

Utilisation

 <?php
     require_once('ISBN.class.php');
     $isbn = new ISBN('9791091146098'); // créer un objet ISBN
     if ($isbn->isValid()) // vérifie si le code est un ISBN valide
     {
         echo $isbn->format('ISBN-13'); // affiche le code au format ISBN-13
         echo $isbn->format('ISBN-10'); // affiche le code au format ISBN-10
         echo $isbn->getChecksum(); // calcule et affiche le caractère de contrôle
         echo $isbn->getAgency(); // affiche l'agence d'enregistrement
     }
     else
     {
         echo $isbn->getErrors(); // show validation errors
     }
 ?>

Image de une : Barcode CC BY-SA  Martin Fisch

Citriq : une extension pour WordPress

citriq-wordpress-plugin

Vous utilisez WordPress pour votre blog littéraire ? L’extension Citriq pour WordPress peut vous aider à mieux référencer vos articles en créant automatiquement des liens entre vos critiques et d’autres critiques du même livre sur d’autres sites littéraires ! Citriq.net est aussi un moteur de recherche qui recensent des dizaines milliers de critiques littéraires issues de centaines de sites et blogs.

Installation

La première chose à faire est d’inscrire votre blog sur Citriq.net (si ce n’est pas déjà fait).

Citriq pour WordPress est disponible dans l’annuaire des extensions de WordPress, ce qui vous permettra de l’installer facilement et de bénéficier des mises à jour automatique à chaque nouvelle version. Rendez-vous dans l’onglet Extensions de WordPress, cliquer sur Rechercher et entrez Citriq comme mot-clé. Repérez l’extension, cliquez sur Installer maintenant puis sur Activez l’extension, et c’est tout !

Si vous préférez installer l’extension manuellement, voici la marche à suivre :

  1. Téléchargez le fichier zip de la dernière version de l’extension.
  2. Sur la page des extensions de WordPress, en haut à droite, cliquez sur Ajouter.
  3. Dans les onglets sous Installer des extensions, cliquez sur Envoyer.
  4. Sélectionnez sur votre ordinateur le fichier zip téléchargé plus tôt, puis cliquez sur Installez maintenant.
  5. Une fois l’installation terminée, cliquez sur Activer l’extension.
  6. L’extension est activée et prête à être utilisée !

Utilisation

Une fois l’extension installée et activée sur votre blog, il vous faudra utiliser les champs personnalisés de WordPress pour que l’extension sache lesquels de vos articles doivent être référencés sur Citriq, et à quel livre correspond la critique.

Il faudra donc, dans un premier temps, activer les champs personnalisés (si ce n’est pas déjà fait) en cliquant, sur la page d’écriture des articles, sur Options de l’écran (en haut à droite) puis en cochant la case Champs personnalisés.

citriq-wordpress-1

Pour signaler à l’extension qu’un article est une critique à référencer, il vous faudra renseigner l’ISBN du livre en créant un champ personnalisé isbn. Repérez la zone la zone Ajouter un champ personnalisé puis entrez isbn (en minuscule, c’est important) dans le champ Nom et l’ISBN du livre critique dans le champ Valeur. Cliquez enfin sur Mettre à jour pour enregistrer les modifications de votre article.

citriq-wordpress-2

NB : L’ISBN est un numéro unique attribué à chaque livre publié, long de 13 chiffres et commençant toujours par 978 ou 979. On le trouve dans les premières pages du livre ou au dos, généralement près du code barre. Il peut être entré avec ou sans tiret.

Répétez ensuite cette opération pour chaque article à référencer dans Citriq.

 Résolution des problèmes

Pour vérifiez que l’extension fonctionne correctement, ajoutez ?debug=1 ou &debug=1 à l’adresse de la page de l’article dans la barre de votre navigateur. Le widget Citriq affichera un message d’erreur détaillant le problème s’il y a lieu.

citriq-wordpress-debug

Si vous parvenez pas à résoudre le problème, n’hésitez pas poster le message d’erreur en commentaire à cet article (avec l’adresse de l’article posant problème), je tâcherai de vous aider.

Pour aller plus loin

Pour envoyer plus d’information à Citriq, il est possible d’utiliser d’autres champs personnalisés. Le champ isbn est le seul obligatoire, mais voici d’autres champs que vous pouvez utiliser :

  • excerpt : un extrait de la critique (jusqu’à 500 caractères) ;
  • reviewer : l’auteur de la critique (s’il y en a plusieurs sur le site) ;
  • source : support dont est issue la critique (si différent du site) ;
  • rating : permet d’indiquer une note (un entier, sur 100) ;

citriq-wordpress-custom-params

Historique des modifications

1.0.3 (13/02/2014)
  • Les liens s’affichent désormais aussi si la critique est affiché sur une page avec d’autres articles (accueil, catégorie, tag) mais l’adresse de la critique n’est pas enregistrée dans ce cas (paramètre ‘ignore’)
  • Ajout d’un paramètre ‘plugin’ pour détecter les blogs utilisateurs de l’extension à des fins statistiques
  • La date de publication de l’article est désormais transmise avec le paramètre ‘date’
1.0.2 (11/02/2014)
  • Suppression du fichier inutile wp_auto_update.class.php
1.0.1 (10/02/2014)
  • Suppression de la mise à jour automatique
1.0 (08/02/2014)
  • Première version de l’extension

Les blogs qui utilisent l’extension WordPress

N’hésitez pas à me signaler toute utilisation de cette extension (en précisant la version de WordPress utilisée). Outre le fait que ça me fera plaisir, je pourrais vérifier que tout fonctionne correctement et lister sur cette page les blogs utilisants l’extension.

Un logique nommé Joe, de Murray Leinster

 

leinster_un-logique-nommé-joe« Au XIXème siècle, l’homme était obligé de se servir d’une machine à écrire, de la radio, du téléphone, du téléscripteur, des journaux, des bibliothèques publiques, des encyclopédies, des fichiers, des annuaires, plus les services de messageries, d’avocats-conseils, de chimistes, de médecins, de diététiciens, d’archivistes, de secrétaires… tout cela pour noter ce dont il voulait se souvenir et pour lui dire ce que d’autres personnes avaient noté et qu’il désirait savoir ; pour transmettre ce qu’il disait à quelqu’un d’autre et pour lui transmettre ce qu’ils répondaient. Tout ce qu’il nous faut, à nous, ce sont les logiques. Lorsque nous voulons savoir, ou voir, ou entendre quelque chose, lorsque nous désirons parler à quelqu’un, nous pianotons sur les touches d’un logique. Coupez les logiques et tout va fiche le camp. »

Un logique nommé Joe, premier né de la collection Dyschroniques, est un livre étonnant. Parce qu’écrit en 1946, à l’époque où le nombre d’ordinateur dans le monde se comptait sur le doigt d’une main, il fait preuve d’une stupéfiante clairvoyance dans la description d’un réseau informatique mondial qui ressemble fort à l’Internet des années 2010, avec son accès libre aussi bien aux encyclopédies qu’à la pornographie, et même ses étalages accidentels de vie privée. Il brosse avec une pertinence remarquable une société devenue dépendante dans chaque moment de sa  vie des logiques, ordinateurs interconnectés au réseau mondial, autrement dit, ni plus ni moins que notre société.

C’est dans cette société idyllique que va naître Joe, un logique déficient, qui doté d’une conscience propre, va considérablement améliorer le réseau en proposant de répondre le plus efficacement possible et sans discernement aux questions que se posent les utilisateurs du réseau, enseignant les règles du crime parfait aux maris jaloux, le B.A.BA du cambriolage aux nécessiteux ou la danse de fertilité des tribus cannibales à de jeunes enfants.

Moins que les « dérives d’un réseau informatique mondial » promis par l’éditeur, c’est donc plutôt ici le spectre de l’avènement d’une singularité bienveillante, intelligence artificielle trop efficace pour notre propre bien et surtout dépourvue de toute notion d’éthique qu’agite Murray Leinster. La liste de films proposés par l’éditeur à la fin du livre, parmi lesquels on trouve 2001, l’odyssée de l’espace  et Terminator, va aussi dans ce sens.

Un logique nommé Joe peine à dire quoique ce soit de pertinent ou de nouveau sur le monde d’aujourd’hui, mais on peut difficilement en vouloir à l’auteur, au regard de la date de rédaction de la nouvelle. On retiendra surtout l’aspect visionnaire du livre dans description avec soixante-dix ans d’avance de notre quotidien. Un intérêt donc plutôt patrimonial, qui fait de cette Dyschronique une petite curiosité délicieusement surannée.

Murray LEINSTER, Un logique nommé Joe, Le Passager Clandestin (2013), 4,00 €, 978-2-916952-82-6

Également disponible dans l’anthologie Demain les puces en Présence du futur.

La Baleine à bulle et autres librairies imaginaires

baleine-a-bulle

Comme en 2012 et 2011, j’ai donné de septembre à décembre un cours de 14h sur la communication sur internet au Pôle Métiers du Livre de Saint-Cloud. Cette année, le cours s’adressait aux étudiantes de l’option librairie du Master 1, mais n’était pas lié à un projet tutoré de création de librairie. Elles ont donc dû, dans le cadre de ce cours, inventer chacune une librairie imaginaire dont nous avons ensemble conçu le site web.

Le cours portait sur :

  • mon expérience de libraire en ligne (à l’époque de la Librairie Ys) et plus récemment mon travail avec d’autres librairies dont j’ai conçu les sites et que j’accompagne au quotidien ;
  • une initiation aux langages HTML5 et CSS3, mais aussi au design graphique avec Photoshop ;
  • un travail préalable à la conception du site sur le cahier des charges, la maquette et  l’arborescence du site ;
  • la création pratique du site en lui-même, étape par étape, accompagné d’une réflexion sur l’ergonomie des pages web, l’optimisation pour le référencement, la communication sur les réseaux sociaux et l’utilisation d’un outil de statistiques.

Pour la création du site, les étudiantes ont pu utiliser le moteur Biblys et son éditeur HTML intégré. Elles ont ainsi pu profiter d’un véritable site d’e-commerce avec un moteur de recherche, un panier, un système de commande et une base bibliographique très fournie, pour lequel elles ont eu à créer le squelette HTML et les feuilles de styles CSS.

L’enjeu n’était évidemment pas de leur enseigner la création d’un site de A à Z, ce qui demanderait plus de 14h, mais de les initiera aux langages de base du web et de leur donner les notions et la culture générale nécessaire pour dialoguer efficacement avec un prestataire technique, ainsi qu’un aperçu des bonnes pratiques de création de site web spécifiques aux domaines du livre.

Quatre sites de librairies imaginaires ont été créés dans le cadre du cours :

(On regrettera au passage que l’intérêt des aspirants libraires pour les littératures de l’imaginaire — ici deux librairies sur quatre — ne soit pas du tout représentatif de l’intérêt du public pour le genre).

Plusieurs documents utilisés pour ce cours sont téléchargeables en PDF :

Citriq : automatiser le référencement de vos critiques littéraires avec PHP

Si votre site ou blog utilise php, il est facile de lui faire écrire le petit code JavaScript permettant de référencer automatiquement vos critiques dans Citriq. Cela vous évitera d’avoir à les entrer une par une.

Voici une fonction qui permet de faire écrire automatiquement le code widget à PHP en fonction des paramètres reçus. Elle nécessite PHP 5.

Cette fonction permet notamment via deux nouveaux paramètres excerpt et rating d’envoyer à Citriq un extrait (jusqu’à 500 caractères) de la critique et une note (sur 100). Ces paramètres étaient jusqu’à présent réservés aux critiques entrées manuellement.  La fonction se charge en outre de l’encodage du texte dans les paramètres du widget de manière à ce que les caractères soient correctement pris en charge par Citriq.

La fonction

function citriq($params) {
  if(empty($params["uid"])) $error = "Le paramètre uid est obligatoire";
  elseif(empty($params["isbn"])) $error = "Le paramètre isbn est obligatoire";
  else return '<script type="text/javascript" src="http://citriq.net/w/crawl?'.http_build_query($params).'"><script>';
  if($params["debug"] == 1 && isset($error)) die("Erreur Citriq : ".$error); 
}

Utilisation

Cette fonction prend comme seule valeur un tableau php (array) dont les clés sont les différents paramètres du widget Citriq. Sauf mention contraire, ils sont tous facultatifs. Notez que les noms des paramètres sont toujours en minuscules.

  • uid (obligatoire) : l’identifiant unique de la critique dans votre base ;
  • isbn (obligatoire) : le code IBSN du livre critiqué ;
  • excerpt : un extrait de la critique (jusqu’à 500 caractères) ;
  • reviewer : l’auteur de la critique (s’il y en a plusieurs sur le site) ;
  • source : support dont est issue la critique (si différent du site) ;
  • rating : permet d’indiquer une note (un entier, sur 100) ;
  • date : la date de publication de la critique ;
  • ignore : permet d’afficher le widget sans enregistrer la page en cours ;
  • debug : si ce paramètre facultatif est égal à 1, Citriq affichera des informations statistiques et un éventuel message d’erreur sur votre site.

La fonction retourne le code javascript du widget préparé qu’on peut récupérer dans une variable ou afficher immédiatement avec l’instruction echo.

Exemple

Ci-dessous, un exemple de code (fictif) qui permettrait de référencer la critique publiée sur cette page, pour le résultat sur cette page.

$params["uid"] = 3601;
$params["isbn"] = 9782277492830;
$params["excerpt"] = "Quand, voici quelques mois, les jeunes éditions Dystopia Workshop publièrent Le Prophète et le vizir, la surprise fut de taille. On ne s’attendait pas le moins du monde à voir le couple Rémy revenir à l’écriture et publier de l’inédit. Il avait eu une assez belle carrière dans les années 70, dont plus d’un se serait satisfait, mais il semblait qu’elle fût désormais de...";
$params["reviewer"] = "Jean-Pierre Lion";
$params["source"] = "Bifrost 71";
$params["rating"] = "80"; // Equivaut à 4 étoiles sur 5
echo citriq($params);

Exemple avec WordPress

Il est possible d’utiliser les champs personnalisés de WordPress pour faire générer automatiquement le code du widget Citriq par WordPress. On trouvera plus d’information à ce sujet dans l’article Automatiser le référencement de vos critiques avec WordPress.

MAJ du 08/02/2014 : il existe aussi une extension WordPress pour Citriq, qui utilise cette fonction php mais est beaucoup plus simple à mettre en oeuvre.

$params["uid"] = get_the_id(); // L'identifiant de l'article WordPress
$params["isbn"] = get_post_meta(get_the_id(), "isbn", true); // Le champ personnalisé "isbn"
$params["reviewer] = get_the_author(); // L'auteur de l'article WordPress
$params["excerpt] = get_post_meta(get_the_id(), "extrait", true); // Le champ personnalisé "extrait"
if(is_singular()) echo citriq($params);

Résolution des problèmes

Si le code du widget ne s’affiche pas correctement, vous pouvez utilisez le paramètre facultatif debug pour afficher un message d’erreur. Si vous ne comprenez pas le message d’erreur, n’hésitez pas à poser la question dans les commentaires ci-dessous.

Bonus : l’équivalent en Python (merci Joachim)

php-epub-cleaner

php-epub-cleaner

English readme available on GitHub

Lorsque je convertis un document Word, inDesign ou XPress en HTML en vue de fabriquer un fichier ePub, j’ai souvent de nombreuses corrections à faire. Plutôt que de multiplier les rechercher/remplacer dans Sigil, j’ai préféré créer un script PHP qui s’en occupe pour moi.

Les sources de ce script peuvent être récupérée sur Github :
https://github.com/iwazaru/php-epub-cleaner

Ce script va :

  1. Uploader le fichier ePub vers le serveur
  2. Décompresser le fichier dans un dossier temporaire
  3. Ouvrir chaque fichier .html, .htm ou .xhtml et appliquer les corrections
  4. Recompresser le dossier au format ePub
  5. Proposer le téléchargement du nouvel ePub

 Démo

Une démo se trouve ici : http://labs.nokto.net/php-epub-cleaner

Veuillez noter que tous les fichiers ePub uploadés pour nettoyage seront conservés en cache sur le serveur. Cette page ne devrait être utilisé qu’à des fins de tests. Pour une utilisation en production avec des fichiers commerciaux, merci d’installer votre propre version de l’application à partir des sources sur Github.

Installation

Copier le dossier php-epub-cleaner sur votre serveur supportant PHP5.

Personnalisation

J’ai créé ce script pour nettoyer les erreurs générés par Word2CleanHTML ne respectant pas les règles de la typographie française (ajouter les espaces insécables, retirer les espaces avant les points ou les virgules, etc.), mais vous pouvez tout à fait créer vos propres règles de remplacement en modifiant le tableau php $replacements.

Historique

1.1 (26/02/2014)

  • Ajout d’un journal de correction (« Correction log ») qui compte le nombre de remplacements et de suppressions
  • Diverses corrections de bugs

1.0.1 (27/12/2013)

  • Amélioration de la prise en charge des caractères accentués majuscule (notamment ê)

Pourquoi il faut faire passer l’amendement sur la TVA des livres numériques

Lecteurs contre les DRM

Un amendement au projet de Loi de finances 2014 sur le prix du livre a été déposé la semaine dernière par la députée Isabelle Attard et adopté à l’assemblée nationale, avant d’être immédiatement retiré à la demande du gouvernement. Cet amendement stipule que le taux de TVA réduit à 5,5% doit être appliqué au livre numérique (comme c’est déjà le cas), sauf si « le ou les fichiers comportent des mesures techniques de protection (…) ou s’il ne sont pas dans un format de données ouvert (…) ». Autrement dit, que les livres commercialisés dans des formats propriétaires et/ou avec des Mesures Techniques de Protection (DRM) doivent être considérés comme des licences d’utilisation (plutôt que des livres) et doivent donc être taxés à 19,6%.

L’amendement vise clairement à réserver l’avantage fiscal que représente le taux de TVA réduit aux seuls livres numériques proposés dans un format ouvert, interopérable, et sans Mesure Technique de Protection (DRM), de manière à décourager des pratiques qui à long terme ne peuvent que nuire à l’économie du livre et à la bibliodiversité.

Voici quelques éléments pour comprendre les enjeux derrière cet amendement.

Qu’est-ce qu’un format propriétaire et un format interopérable ?

Fut un temps où chaque constructeur créait son propre support pour vendre une œuvre (VHS/Betamax, Blu-Ray/HD-DVD, etc.) : un cauchemar pour le consommateur qui devait prendre garde à choisir un format compatible avec son matériel, qui pouvait se voir interdire l’accès à une partie des œuvres disponibles sur le marché et qui risquait de perdre toute sa collection si le format disparaissait.

Pour éviter les drames de ce genre avec le livre numérique, un certain nombre d’acteurs, réunis au sein de l’organisation IDPF, se sont mis d’accord pour créer un format ouvert et interopérable : l’ePub. Parce que c’est un format ouvert, il est facile pour n’importe qui de concevoir des livres numériques et des appareils ou applications de lectures sans payer de royalties à qui que ce soit. Et si ce format devait un jour disparaître au profit d’un autre, il sera facile de convertir les fichiers dans un nouveau format.

Malgré cela, certains s’obstinent à créer et utiliser des formats propriétaires pour des raisons commerciales et politiques. Un format propriétaire est un format conçu par une société commerciale dans le but d’enfermer ses clients dans un écosystème fermé. Ainsi, un livre numérique acheté chez Amazon, ne pourra être lu que sur une liseuse ou une application Amazon. De même, sur la liseuse Kindle d’Amazon, on ne pourra pas lire un livre numérique acheté ailleurs au format ePub pourtant standard, car la liseuse est verrouillée pour ne lire que les fichiers commercialisés par Amazon.

Que sont les Mesures Techniques de Protection (DRM) ?

Les Mesures Techniques de Protection (en anglais DRM pour Digital Rights Managements), permettent à un éditeur ou à une plateforme de contrôler les fichiers après téléchargement en empêchant la copie, le prêt, la diffusion, la conversion dans un autre format (non-propriétaire, par exemple). Dans certains cas, ils permettent même l’effacement à distance d’un livre sur l’appareil du client.

Les fichiers numériques vendus avec DRM s’apparentent donc moins à un livre papier (que l’on peut prêter, revendre, donner) qu’à une licence d’utilisation avec contrainte (comme l’emprunt à une bibliothèque), bien qu’ils ne soient que rarement présentés clairement comme tels.

Aujourd’hui, l’inefficacité des DRM est largement démontrée et leur utilisation n’est plus que le fait :

  • d’éditeurs peu au fait de la technologie et des usages du livre numérique, qui les imposent par peur du piratage ignorant qu’en réalité, ils l’encouragent ;
  • de grands groupes éditoriaux qui les imposent aux éditeurs dans leur giron contre leurs avis ;
  • de plateformes de vente qui espèrent ainsi enfermer leurs clients dans un écosystème fermé et s’assurer leur fidélité par la contrainte.

Pourquoi les DRM sont-ils inefficaces, voire contre-productifs ?

Conçus pour prévenir le piratage d’un livre numérique, les DRM sont aujourd’hui largement considérés comme inefficaces.

La raison en est simple : pour un utilisateur un tant soit peu alerte mais sans connaissance technique, il suffit d’une recherche Google et d’un téléchargement pour retirer en un clic les DRM d’un livre numérique. L’histoire a montré que les différentes mesures de protection technique prennent beaucoup plus de temps (et d’argent) à concevoir pour les entreprises commerciales qu’à contourner pour les pirates. Si l’industrie musicale y a presque totalement renoncé aujourd’hui, ce n’est pas par bonté de coeur.

Plus grave encore que leur inefficacité contre le piratage, les DRM posent problème parce qu’ils rendent complexe l’usage des livres numériques pour l’utilisateur lambda qui les a acquis honnêtement, en compliquant considérablement le transfert d’un livre numérique sur une liseuse. Jusqu’à les pousser à se tourner plutôt du côté des plateformes pirates… beaucoup plus simples d’emploi.

Il y aurait beaucoup de choses à dire sur le sujet, mais le mieux est de vous renvoyer à la lecture de l’excellent mémoire « Les DRM, passé ou avenir du livre numérique ? » d’Alice Donet qui fait le tour de la question des DRM d’un point de vue commercial, technique et juridique et dont la conclusion est sans appel. À mettre entre les mains de tous les éditeurs qui, par ignorance, y ont encore recours.

Vais-je payer les livres numériques plus cher ?

Non. En France, la loi Lang impose que tous les vendeurs d’un livre le commercialise à un prix situé entre 95 et 100 % du prix fixé par l’éditeur. Une plateforme imposant des DRM paiera sur ses ventes une TVA plus importante mais ne pourra pas reporter cette hausse sur le prix de vente public. Cette hausse vise donc à exercer une pression sur ceux qui imposent les DRM sans pénaliser le consommateur. Les grandes multinationales échappent aujourd’hui à la TVA française en étant implantées en Irlande ou au Luxembourg, mais ce ne sera plus le cas en 2015, date à laquelle c’est la TVA du pays où se trouve l’acheteur qui sera prise en compte, et non plus la TVA du pays où se trouve le vendeur.

En quoi les DRM et les formats propriétaires sont-ils dangereux ?

J’ai assisté la semaine dernière, dans le cadre du salon de l’édition indépendante L’Autre Livre, à un débat sur le thème “Face aux nouvelles technologies”, débat qui a rapidement tourné à la diatribe contre le livre numérique. Les arguments des anti sont toujours les mêmes : par opposition au livre papier, le livre numérique ne pourrait pas être prêté, ne serait pas durable, etc. Il est intéressant de noter que tous ces arguments s’appliquent non au livre numérique lui­-même, mais uniquement aux livres commercialisés dans un format propriétaire et/ou avec DRM, ce que semblait ignorer l’intervenant du débat. C’est la marque inquiétante d’une grande confusion dans l’esprit du grand public (et, visiblement, dans celui de certains professionnels).

Le risque est donc d’ancrer durablement dans l’esprit des lecteurs l’idée que les livres numériques achetés légalement présentent de nombreux désavantages (complexité d’utilisation, copie et prêt restreint, etc.), là où les livres piratés leurs permettent de conserver les usages auxquels le livre papier les a habitués. C’est commettre la même erreur que l’industrie musicale et les diriger avec un coup de pied aux fesses vers les plateformes pirates et les réseaux peer-to-peer.

Pourquoi l’amendement a-t-il été retiré ?

Le gouvernement français est actuellement en procès avec l’Union Européenne pour défendre l’idée que les livres numériques sont bien des livres, et doivent bénéficier d’un taux de TVA réduit, comme les livres papiers. La crainte du gouvernement est que cet amendement ne complique cette négociation, mais nombreux sont ceux qui pensent qu’au contraire, la TVA réduite serait d’autant plus légitime si elle distingue les livres en format interopérable et en format ouvert des licences d’utilisation qui sont de fait des services.

Tout espoir est-il perdu ?

En l’état, cet amendement n’est pas parfait et pose encore beaucoup de questions. Si le livre numérique avec DRM est considéré comme un service plutôt qu’un livre, la Loi lang est-elle encore applicable ? Les éditeurs qui voient des DRM apposés sur leurs livres contre leur avis seront-elles également pénalisés par la TVA ? Mais il a au moins le mérite de porter le problème sur la place publique.

Une pétition a été lancée peu de temps après le retrait de cet amendement pour demander son retour. Personnellement, je ne crois pas trop au pouvoir des pétitions — mais il faut bien dire que ça ne coûte pas grand-chose de les signer. Pétition ou pas, il est peu probable que l’amendement passe en l’état. Comme dit Actualitté, les éditeurs pro-DRM n’ont « pas même eu à décrocher leurs téléphones pour que l’amendement soit remis au vote, l’initiative émanerait du gouvernement seul ». Il est probable qu’il s’y préparent sérieusement pour le deuxième examen de l’amendement.

Néanmoins, il faut espérer que l’affaire permettra au moins de sensibiliser lecteurs et éditeurs aux problèmes que posent DRM et formats propriétaires et à quoi ils s’engagent souvent sans le savoir. À cette fin, n’hésitez pas à évoquer la question avec les lecteurs numériques qui vous entourent et à réclamez aux éditeurs que vous aimez des fichiers numériques interopérables et sans protection technique !

Il va sans dire que les avis exprimés dans ce billet n’engagent que moi et pas les professionnels du livre qui sont mes clients et les maisons d’édition auxquelles je participe.

À lire :

Citriq : automatiser le référencement des critiques avec WordPress

Si vous avez un blog de critiques littéraires sous WordPress, il est possible d’automatiser simplement le référencement de vos critiques dans Citriq. La manipulation consiste à utiliser les champs personnalisés de WordPress pour associer à chaque critique l’ISBN du livre critiqué, puis de modifier votre thème pour qu’il génére automatiquement le code du widget Citriq en utilisant cet ISBN.

MAJ du 08/02/2014 : Il existe désormais une extension WordPress pour Citriq, bien plus facile à mettre en oeuvre, et qui vous évitera d’avoir à modifier votre thème.

Avant toute chose, il faut bien entendu, si ce n’est pas déjà fait, que votre blog soit inscrit à Citriq.

Marche à suivre

1. Choisissez une critique de votre blog déjà en ligne mais encore non référencée sur Citriq. Cliquez sur Modifier pour accéder à la page d’édition de l’article.

2. Cliquez en haut à droite de la fenêtre d’édition sur Options de l’écran, puis cochez la case Champs personnalisés pour faire apparaître la section correspondante sur la page d’édition, sous la zone de texte.

citriq-wordpress-1.jpg

3. Repérez la zone Ajouter un champ personnalisé et entrez isbn (en minuscules, c’est important) dans le champ Nom et entrez l’ISBN du livre critiqué dans le champ Valeur. Cliquez sur Mettre à jour pour enregistrer votre article.

citriq-wordpress-2.jpg

NB : L’ISBN est un numéro unique attribué à chaque livre publié, long de 13 chiffres et commençant toujours par 978 ou 979. On le trouve dans les premières pages du livre ou au dos, généralement près du code barre. Il peut être entré avec ou sans tiret.

Il va falloir ensuite modifier votre thème pour permettre à WordPress de générer automatiquement le code du widget Citriq. La manipulation peut varier selon le thème utilisé, dans les exemples ci-dessous, j’utilise le thème par défaut Twenty Twelve.

4. Rendez-vous dans le menu Apparence puis dans le sous-menu Éditeur pour modifier le thème actuellement utilisé. Dans la liste des fichiers à droite, ouvrez celui qui gère l’affichage des articles (ici content.php, parfois content-single.php).

citriq-wordpress-3.jpg

5. Repérez l’endroit où vous voulez faire apparaître le widget Citriq, probablement après le contenu du billet (affiché par la fonction the_content()). Copiez-collez-y le code php ci-dessous.

<?php 
    $isbn = get_post_meta(get_the_id(), "isbn", true);
    if(is_singular() && $isbn != '') echo '<script type="text/javascript" src="http://citriq.net/w/crawl?uid='.get_the_id().'&isbn='.get_post_meta(get_the_id(),'isbn',true).'"></script>'; 
    ?>

6. Cliquez sur Mettre à jour le fichier pour enregistrer vos modifications.

7. Vous pouvez à présent afficher le code source de l’article pour vérifier que le code Citriq est bien généré. Pensez à vider votre cache et celui de WordPress si le code ne s’affiche pas.

citriq-wordpress-4.jpg

8. Afin que le référencement automatique fonctionne, il faut que j’active l’option de mon côté dans Citriq pour votre blog. Une fois que vous avez ajouté le widget à votre thème et associé au moins un ISBN à une critique, contactez-moi pour que je vérifie que tout est en ordre et que j’active le référencement automatique.

9. Vous pourrez ensuite ajouter facilement d’autres critiques à Citriq. Il suffira à chaque fois d’indiquer l’ISBN du livre concerné dans le champ personnalisé isbn de chaque critique.

Si le code du widget n’apparaît pas dans le code source

  • Vérifiez que vous avez bien le nom du champ personnalisé isbn en minuscule et non en majuscule.
  • Vérifiez que le fichier que vous avez modifié (content.php dans l’exemple) est bien celui qui gère l’affichage d’un article seul, par exemple en effectuant d’autres modifications pour voir si elles apparaissent.
  • Si vous utilisez une extension pour gérer le cache, pensez à le vider.
  • Effectuez les vérifications décrites sur cette page (en anglais).

Résolution des problèmes

Si le code du widget est correctement généré mais que le référencement ne fonctionne pas, ajoutez ?debug=1 ou &debug=1 à l’adresse de la page de l’article dans la barre de votre navigateur. Le widget Citriq affichera un message d’erreur détaillant le problème s’il y a lieu.

citriq-wordpress-5.jpg

Pour aller plus loin

Nous avons vu ci-dessus un cas simple d’utilisation du widget, mais il est également possible d’utiliser d’autres champs personnalisés pour communiquer à Citriq d’autres informations lors du référencement de la critique. Il faut pour cela modifier le code du widget pour ajouter d’autres paires clés/valeurs et créer les nouveaux champs personnalisés équivalents. Par défaut, le code du widget se présente ainsi :

<script type="text/javascript" src="http://citriq.net/w/crawl?uid=9&isbn=978-2-207-11266-3"></script>

Avec deux variables obligatoires : uid qui est un identifiant unique (ici on utilise l’identifiant de l’article dans la base WordPress affiché grâce à la fonction get_the_id()) et isbn qui correspond à l’ISBN du livre concerné (notre champ personnalisé, affiché grâce à la fonction get_post_meta()).

Il existe trois autres variables facultatives :

  • reviewer : le nom de l’auteur de la critique (utile si plusieurs chroniqueurs interviennent sur le même blog)
  • source : la source originelle de la critique (par exemple, nooSFere référence, en plus de ses propres critiques, des critiques issues de Bifrost, Galaxies, etc.)
  • note : la note donnée au livre, qui doit être sur 100 (3/5 = 60, 18/20 = 90, etc.)
  • excerpt : un extrait de la critique (500 caractères maximum). Pour un résultat optimal, il vaut mieux encoder le texte, par exemple avec la fonction php urlencode().

Pour utiliser une variable, il suffit de d’ajouter les variables sous la forme &clé=valeur au code du widget, par exemple :

<script type="text/javascript" src="http://citriq.net/w/crawl?uid=9&isbn=978-2-207-11266-3&reviewer=Clément&note=75"></script>

Il faudra pour cela ajouter un premier champ personnalisé reviewer et un deuxième note à chaque article, puis utiliser la fonction get_post_meta() pour générer le code du widget en utilisant ces champs. Voici le code php à insérer dans ce cas :

<?php

    $isbn = get_post_meta(get_the_id(), "isbn", true);
    if(is_singular() && $isbn != '') echo '<script type="text/javascript" src="http://citriq.net/w/crawl?uid='.get_the_id().'&isbn='.get_post_meta(get_the_id(),'isbn',true).'&reviewer='.get_post_meta(get_the_id(),'reviewer',true).'&note='.get_post_meta(get_the_id(),'note',true).'&excerpt='.urlencode(get_post_meta(get_the_id(),'excerpt',true)).'"></script>';

?>

Bien sûr, il n’est pas toujours pertinent d’utiliser les champs personnalisés. Pour l’auteur de la critique (reviewer), on utilisera plus probablement l’auteur de l’article dans WordPress, en utilisant la fonction the_author() plutôt que la fonction get_post_meta().

Voici un exemple de code qui ne transmettra à Citriq que l’ISBN (d’après le champ personnalisé isbn) et le nom de l’auteur du billet :

<?php

    $isbn = get_post_meta(get_the_id(), "isbn", true);
    if(is_singular() && $isbn != '') echo '<script type="text/javascript" src="http://citriq.net/w/crawl?uid='.get_the_id().'&isbn='.get_post_meta(get_the_id(),'isbn',true).'&reviewer='.the_author().'"></script>';

?>

Quelques blogs sous WordPress qui utilisent le référencement automatique

La littérature de genre en numérique (table ronde)

table-ronde-assises-genre.png

Lors du dernier salon du livre, dans le cadre des assises du livre numérique, j’ai représenté Le Bélial’ à l’occasion d’une table ronde ayant pour thème la « La littérature de genre en numérique », face à Stéphane Marsan de Bragelonne et Stéphane Aznar de Harlequin. La table ronde peut-être intégralement visionnée ci-dessous, il existe également une synthèse à télécharger en PDF.

On peut également retrouver en vidéo, sur le site du SNE, l’ensemble des tables rondes données ce jour-là dans le cadre des Assises.

Ci-dessous, en bonus, les quelques notes que j’avais préparées pour la table ronde, qui ne correspondent pas forcément à ce que j’ai pu dire concrètement pendant la table ronde, faute de temps ou, parfois, de clarté :

Vos expériences respectives confirment-elles ce constat ? Pouvez-vous nous donner des exemples de titres phares en numérique ? Avez-vous eu des surprises par rapport aux titres phares parus en papier ?

Globalement, nos best-sellers en papier sont aussi nos best-sellers en numérique. Par exemple, le roman Tau Zéro de Poul Anderson, paru en juin dernier, qu’on a réimprimé plusieurs fois, et qui en numérique (266 ventes) est loin devant tous nos autres titres (85 titres pour le second).

Il y a toutefois des spécificités : la revue trimestrielle Bifrost se vend très bien en numérique, ce que l’on peut imputer à son contenu (textes courts : nouvelles, articles, dossiers, critiques) et au fait qu’il s’agit d’un périodique. Autre bonne surprise : l’intégrale Féerie pour les ténèbres qui rassemble trois romans et cinq nouvelles en un seul livre numérique à 20 €, preuve que les lecteurs sont prêt à payer cher en numérique si le contenu suit (50 € pour l’équivalent en en papier).

Quels sont d’après vous les raisons qui expliquent cette appétence des lecteurs de genre pour le numérique ?

Le lecteur de SF est technophile, il aime les gadgets et n’a pas peur des nouvelles technologies. Plus encore, il est déjà habitué à l’idée que l’information peut-être dématérialisée, que ce qui importe, c’est l’oeuvre elle-même, quelque soit le support de lecture.

Paradoxal parce que dans la littérature de genre, l’objet compte beaucoup, notamment les illustrations de couverture et au Bélial’ on attache beaucoup d’importance à la fabrication de l’objet (livre cousu, rabat, etc.)

Est-ce votre lectorat habituel qui se tourne vers le numérique ou recrutez-vous de nouveaux lecteurs ?

Ventes papier/numérique sur le site : 21% du CA (20% de prog. depuis 2010)

Ventes numériques sur le site : 42% des ventes numérique totales

Part du numérique dans les ventes du site : 6% en 2010, 13% en 2012

Et si on parlait promotion ? Chacune de vos maisons manie les réseaux sociaux et fédère de véritables communautés de lecteurs par ce biais. Là encore, est-ce lié aux genres de vos ouvrages ? Pouvez-vous nous donner des exemples d’actions en la matière ?

Outre les réseaux sociaux, on a aussi un forum très actif, où on discute avec nos lecteurs de l’actualité du Bélial’ mais aussi plus généralement du monde de l’édition en général et des mutations liées au numérique en particulier. On les a impliqué dès le lancement de notre plateforme en proposant deux livres numériques dont ils pouvaient fixer le prix eux-mêmes, c’est-à-dire à “voter avec leur porte-monnaie” pour exprimer ce qu’ils pensaient être le bon prix en numérique. Résultat : de 1,00 € à 15,00 € avec un prix moyen de 4,72 €.

La créativité éditoriale est-elle plus facile en numérique ?

On reçoit parfois des manuscrits qui nous paraissent intéressant mais trop risqué pour un tirage papier et que nous refusons donc à regret. Le numérique nous permet de contourner le problème. En février 2011, on a publié Genèse 2.0 : loin des étoiles, un premier roman arrivé par La Poste qui nous a beaucoup plu mais qui nous semblait peu viable commercialement. On a donc proposé à l’auteur de le publier en numérique tout en lui permettant de conserver les droits papiers.

J’ai également fondé Dystopia, une petite maison d’édition associative avec deux autres libraires, pour pouvoir rééditer des livres épuisés qu’on aimait et qu’on avait envie de pouvoir conseiller, ou pour travailler sur de nouveaux livres d’auteurs publiés. Ici, le numérique nous permet de nous faire plaisir, d’expérimenter, de prendre la température, de satisfaire une demande restreinte, sans avoir à nous soucier du point mort.

On entend beaucoup parler d’auto-édition, notamment chez les auteurs de SF.

Au moment du lancement de notre plateforme, alors que la plupart des gens s’accordaient à dire qu’on allait plutôt dans le bon sens, un auteur de SF nous est tombé dessus en disant que c’était pas du tout ce qu’il fallait faire, que le numérique était une chance pour les auteurs de s’émanciper des éditeurs et qu’il allait fabriquer ses fichiers lui-même pour les vendre à 2,00 €. Trois ans après, son nouveau roman sort chez son éditeur habituel, en papier et à 7 € pour la version numérique.

Je pense que personne, et surtout pas les auteurs, n’a intérêt à véhiculer l’idée que, grâce au numérique, on peut publier n’importe quoi n’importe comment sans intermédiaire, au risque d’être noyé dans une masse de livres globalement médiocre. Outre le travail éditorial, je pense qu’on aura toujours besoin de prescripteurs pour séparer le bon grain de l’ivraie et mettre en lumière les livres intéressants.

Au Bélial’, on compte beaucoup sur la librairie indépendante et sur le conseil du libraire pour faire exister nos livres, qui peuvent être parfois un peu pointu et s’adresser à un public précis. Se pose véritablement aujourd’hui la question de savoir comment reproduire cette expérience du conseil en librairie, essentielle pour nous, dans le domaine du numérique.