Libmobi
C -Bibliothek zur Behandlung von Mobipocket/Kindle (MOBI) E -Book -Formatdokumenten.
Die Bibliothek verfügt über mehrere Befehlszeilen -Tools für die Arbeit mit Mobi -E -Books. Die Tools -Quelle kann auch als Beispiel für die Verwendung der Bibliothek verwendet werden.
Merkmale:
- Lesen und Parsen:
- Einige ältere Textpalmdoc -Formate (PDB),
- Mobipocket -Dateien (PRC, MOBI),
- Neuere MOBI -Dateien einschließlich KF8 -Format (AZW, AZW3),
- Replik -Druckdateien (AZW4)
- Quellendateien mit Indizes nachbauen
- Rekonstruktion von Referenzen (Links und eingebettet) in HTML -Dateien
- Rekonstruktion der Quellstruktur, die dem Kindlegen zurückgeführt werden kann
- Rekonstruktion des Wörterbuchs (Orth, Inflags)
- Zurückschreiben geladener Dokumente
- Metadatenbearbeitung
- Umgang mit verschlüsselten Dokumenten
- Verschlüsseln Sie Dokumente für die Verwendung von Eink Kindles
Todo:
- Schreiben verbessern
- Serialisieren Sie RAWML in Rohdatensätze
- Prozessrettungsaufzeichnungen
Doxygen -Dokumentation:
- Funktionen,
- Strukturen für die metadaten und Daten mit ungeretteten, ungeretteten Aufzeichnungen,
- Strukturen für die Parsen -Datensätze Metadaten und Daten,
- Aufschwung
Quelle:
Pakete:
Installation:
[for git] $ ./autogen.sh
$ ./configure
$ make
[optionally] $ make test
$ sudo make install
Auf macOS können Sie über Homebrew mit brew install libmobi installieren.
Alternative Build -Systeme
- Die unterstützte Art des Projekts besteht darin, Autotools zu verwenden.
- Optional bietet das Projekt grundlegende Unterstützung für CMAKE-, XCODE- und MSVC ++ -Systeme. Diese alternativen Konfigurationen behandeln jedoch nicht alle Optionen des Autotools -Projekts. Sie werden auch nicht getestet und nicht regelmäßig aktualisiert.
Verwendung
- Single Include -Datei:
#include <mobi.h> - Linker Flag:
-lmobi - Grundnutzung:
#include <mobi.h>
/* Initialize main MOBIData structure */
/* Must be deallocated with mobi_free() when not needed */
MOBIData * m = mobi_init ();
if ( m == NULL ) {
return ERROR ;
}
/* Open file for reading */
FILE * file = fopen ( fullpath , "rb" );
if ( file == NULL ) {
mobi_free ( m );
return ERROR ;
}
/* Load file into MOBIData structure */
/* This structure will hold raw data/metadata from mobi document */
MOBI_RET mobi_ret = mobi_load_file ( m , file );
fclose ( file );
if ( mobi_ret != MOBI_SUCCESS ) {
mobi_free ( m );
return ERROR ;
}
/* Initialize MOBIRawml structure */
/* Must be deallocated with mobi_free_rawml() when not needed */
/* In the next step this structure will be filled with parsed data */
MOBIRawml * rawml = mobi_init_rawml ( m );
if ( rawml == NULL ) {
mobi_free ( m );
return ERROR ;
}
/* Raw data from MOBIData will be converted to html, css, fonts, media resources */
/* Parsed data will be available in MOBIRawml structure */
mobi_ret = mobi_parse_rawml ( rawml , m );
if ( mobi_ret != MOBI_SUCCESS ) {
mobi_free ( m );
mobi_free_rawml ( rawml );
return ERROR ;
}
/* Do something useful here */
/* ... */
/* For examples how to access data in MOBIRawml structure see mobitool.c */
/* Free MOBIRawml structure */
mobi_free_rawml ( rawml );
/* Free MOBIData structure */
mobi_free ( m );
return SUCCESS ;- Beispiele für die Nutzung finden Sie in Tools
Anforderungen
- Compiler unterstützt C99
- ZLIB (optional, konfigurieren-mit Zlib = Nein, um eingeschlossenes Miniz.C zu verwenden).
- libxml2 (optional, konfigurieren-mit libxml2 = Nein, um den internen XMLWriter zu verwenden)
- Mit GCC (> = 4.2.4), Clang (LLVM> = 3,4), Sun C (> = 5,13), MSVC ++ (2015) getestet.
- Builds auf Linux, macOS, Windows (MSVC ++, Mingw), Android, Solaris
- getestete Architekturen: x86, x86-64, Arm, PPC
- Arbeiten auf dem Kindle gekreuzigt :)
Tests
Projekte mit libmobi
- KYBOOK 2 LESER
- @Voice laut Leser
- Qlmobi QuickLook Plugin
- Librera -Leser
- ... (Lassen Sie mich wissen, dass Sie Ihr Projekt einbeziehen)
Lizenz:
- LGPL, entweder Version 3 oder später
Credits:
- Die Huffman -Dekompression und die KF8 -Parsingalgorithmen wurden gelernt, indem der Python -Quellcode von Kindleunpack untersucht wurde.
- Vielen Dank an alle Mitwirkenden von Mobileread Mobi Wiki