Либмоби
C Библиотека для обработки документов формата электронных книг Mobipocket/Kindle (MOBI).
Библиотека поставляется с несколькими инструментами командной строки для работы с Ebooks Mobi. Источник инструментов также может использоваться в качестве примера того, как использовать библиотеку.
Функции:
- Чтение и анализ:
- Некоторые старые текстовые форматы Palmdoc (PDB),
- Mobipocket files (prc, mobi),
- Новые файлы MOBI, включая формат KF8 (AZW, AZW3),
- Реплика печатные файлы (AZW4)
- воссоздание исходных файлов с использованием индексов
- Реконструкция ссылок (ссылки и встроенные) в HTML -файлах
- Восстановление структуры исходной структуры, которую можно вернуть в Kindlegen
- Реконструирование наценки словаря (орто, теги Infl)
- Написание загруженных документов
- Редактирование метаданных
- Обработка зашифрованных документов
- шифрование документов для использования в Eink Kindles
Тодо:
- улучшить письмо
- сериализовать RAWML в RAW Records
- процесс спасения записей
Доксиген документация:
- функции,
- Структуры для необработанных метаданных записей и данных.
- структуры для проанализированных метаданных и данных,
- перечисление
Источник:
Пакеты:
Установка:
[for git] $ ./autogen.sh
$ ./configure
$ make
[optionally] $ make test
$ sudo make install
На MacOS вы можете установить через Homebrew с brew install libmobi .
Альтернативные системы сборки
- Поддерживаемый способ строительства - это использование AutoTools.
- Необязательно Project обеспечивает базовую поддержку систем CMAKE, XCODE и MSVC ++. Однако эти альтернативные конфигурации не охватывают все варианты проекта AutoTools. Они также не тестируются и не обновляются регулярно.
Использование
- Сингл включает файл:
#include <mobi.h> - Флаг линкера:
-lmobi - Основное использование:
#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 ;- Примеры использования см. Инструменты
Требования
- Компилятор, поддерживающий C99
- Zlib (необязательно, Configure-with-Zlib = no для использования включенного miniz.c вместо этого)
- libxml2 (необязательно, configure--with-libxml2 = no для использования внутреннего XMLWriter)
- Протестировано с помощью GCC (> = 4.2.4), clang (LLVM> = 3,4), Sun C (> = 5,13), MSVC ++ (2015)
- Настройки Linux, MacOS, Windows (MSVC ++, Mingw), Android, Solaris
- Протестированные архитектуры: x86, x86-64, ARM, PPC
- Работает с перекрестной скоростью на Kindle :)
Тесты
Проекты с использованием Libmobi
- Kybook 2 читатель
- @Voice aloud читатель
- Qlmobi QuickLook Plugin
- Bibrera Reader
- ... (дайте мне знать, чтобы включить ваш проект)
Лицензия:
- LGPL, либо версия 3, либо еще позже
Кредиты:
- Алгоритмы декомпрессии Huffman и анализа KF8 были изучены путем изучения исходного кода Python Kindleunpack.
- Спасибо всем участникам MobileDead Mobi Wiki