Le forum de livrotheque

Vous n'êtes pas identifié.

#1 04-05-2014 14:47:50

CireComme
débutant
Date d'inscription: 04-05-2014
Messages: 2

Codage de la base - ANSI vers UTF8 et export en BIB

Bonjour à tous,

Je trouve "Livrotheque" très très bien mais juste un peu faible côté export (Le csv c'est bien mais il faudrait également du XML, bib etc). J'ai donc voulu attaquer la base sqlite .db directement par requêtes et là surprise, les caractères accentués passent mal (avec SQLITE Manager sous Firefox ou directement avec sqlite). En cherchant un peu j'ai cru voir que l'encodage était en ANSI au lieu d'être en UTF8. Bref, pour ceux que ça intéresse voici quelques manips qui peuvent vous être utiles avec sqlite :

- Faire une copie de votre base de livres (que je nomme ici livres.db et que je mets dans un dossier quelconque)

Export en SQL de la base (se placer dans le dossier précédent et ouvrir une commande DOS) :

- C:\sqlite3 livres.db .dump > livres.sql

(Si avant vous voulez supprimer toutes les images (c'est ce qui prend le plus de place dans la base) voici une méthode simple : On ouvre la base, on efface les images et on compresse) :

C:\sqlite3 livres.db
sqlite>update livre set image_face=null;
sqlite>vacuum;

- Ouvrir livres.sql avec Notepad++ par exemple puis Encodage - Encoder en UTF8 (sans BOM)

Création d'une nouvelle base (toujours dans le même dossier) :
- C:\sqlite3 livres2.db
sqlite>.read livres.sql

Voilà, les accents seront ok.

Pour terminer, un très court programme en Python 3 qui crée un fichier livres.bib (que vous pourrez importer dans Zotero ou sur un téléphone Android avec RefMaster par exemple)

# -*- coding: utf8 -*-
import sqlite3
import codecs

sortie=codecs.open("livres.bib","w", "utf-8")

cnx=sqlite3.connect("livres2.db")
cursor = cnx.cursor()
query = ("SELECT livre.rowid,titre,isbn,resume,auteur.nom,editeur.nom FROM auteur,livre,editeur where livre.id_auteur=auteur.rowid and livre.id_editeur=editeur.rowid")
cursor.execute(query)
for (livre) in cursor:
    book="@book{livre_"+str(livre[0])+", \ntitle={"
    book+=livre[1].capitalize()+"},\nisbn={"
    book+=livre[2]+"},\nabstract={"
    book+=livre[3]+"},\nauthor={"
    book+=livre[4].upper()+"},\npublisher={"
    book+=livre[5].capitalize()+"}},\r\n"
    sortie.write(book)
sortie.close()
cursor.close()
cnx.close()

Dernière modification par CireComme (04-05-2014 14:48:40)

Hors ligne

 

#2 04-05-2014 16:44:01

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Codage de la base - ANSI vers UTF8 et export en BIB

Tres interessant.

Je stick

D'ailleur si vous avez de la doc sur ce format bib je suis preneur. (format, par qui c'est utilisé ce genre de choses)

Hors ligne

 

#3 04-05-2014 17:46:21

CireComme
débutant
Date d'inscription: 04-05-2014
Messages: 2

Re: Codage de la base - ANSI vers UTF8 et export en BIB

Bonjour,

Depuis le milieu des années 80 les références bibliographiques sous LaTeX (le logiciel préféré des scientifiques) se gèrent avec BibTeX. Mais ce format est aussi utilisé par des bibliothèques (la mienne en particulier) car il permet de décrire tout un tas d'objets (livres, articles de revues, conférences, thèses, etc). Le format est assez simple. On peut mettre tous les @book{} les uns à la suite des autres dans un même fichier .bib donc techniquement ça va beaucoup ressembler à l'export en .csv qui existe déjà.

En version grand public il y a l'excellent Zotero (en standalone ou add-on firefox) qui permet de gérer très facilement des livres (pour une bibliographie par ex), pages web (remplace les favoris des navigateurs), etc en un clic. C'est le logiciel rêvé des personnes qui ont une bibliographie à faire puisqu'elle va se créer toute seule ! Zotero propose également l'export et l'import du format .bib.

Ci-dessous l'import que j'ai fait dans Zotero à partir de Livrotheque + conversion du .db sous Python. Tout fonctionne bien (même les accents ;-) ).

http://eschraf.perso.sfr.fr/zotero/T1.jpg

L'autre intérêt est que le format .bib peut se lire sous Android en utilisant l'appli RefMaster. Il suffit de copier le fichier .bib sur la carte sd par exemple. Pour iPhone, iPad etc je pense que PocketBib (payant) fonctionnera aussi.

Ci-dessous l'import sur mon tél (Android 4.1), idem tout fonctionne très bien

http://eschraf.perso.sfr.fr/zotero/T2.jpg

Bon bien sûr j'aurais pu partir du .csv pour le parser en .bib mais j'avais aussi en tête de pouvoir effectuer des requêtes sur le .db créé par livrotheque.

J'espère avoir répondu à la question !

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson