All Projects → bfabiszewski → Libmobi

bfabiszewski / Libmobi

Licence: lgpl-3.0
C library for handling Kindle (MOBI) formats of ebook documents

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Libmobi

Soma
Ulysses.app blueprint for a better ePub stylesheet
Stars: ✭ 23 (-88.32%)
Mutual labels:  ebook, kindle
Geektime dl
把极客时间装进 Kindle,内含快手内推等福利
Stars: ✭ 1,033 (+424.37%)
Mutual labels:  kindle, ebook
bookery
Manage all your ebooks and send them to your reader
Stars: ✭ 35 (-82.23%)
Mutual labels:  ebook, kindle
mpspider
公众号文章抓取&生成kindle电子书
Stars: ✭ 51 (-74.11%)
Mutual labels:  ebook, kindle
Pwning Juice Shop
GitBook markdown content for the eBook "Pwning OWASP Juice Shop"
Stars: ✭ 110 (-44.16%)
Mutual labels:  kindle, ebook
eBookDesignChecklist
A progressive web app to help you design eBooks
Stars: ✭ 15 (-92.39%)
Mutual labels:  ebook, kindle
Epub Press Clients
📦 Clients for building books with EpubPress.
Stars: ✭ 370 (+87.82%)
Mutual labels:  kindle, ebook
ComicBookMaker
Script to fetch webcomics and use them to create ebooks.
Stars: ✭ 27 (-86.29%)
Mutual labels:  ebook, kindle
Calibre
The official source code repository for the calibre ebook manager
Stars: ✭ 11,221 (+5595.94%)
Mutual labels:  kindle, ebook
Kindle maker
a tool to make mobi-format file wich could be load into Kindle
Stars: ✭ 70 (-64.47%)
Mutual labels:  kindle, ebook
InMangaKindle
Descarga manga en español en diferentes formatos (PNG, PDF, EPUB, MOBI)
Stars: ✭ 43 (-78.17%)
Mutual labels:  ebook, kindle
Asciidoctor Epub3
📘 Asciidoctor EPUB3 is a set of Asciidoctor extensions for converting AsciiDoc to EPUB3 & KF8/MOBI
Stars: ✭ 166 (-15.74%)
Mutual labels:  kindle, ebook
Laravel Book
Up to date Epub, Mobi and PDF versions from the official Laravel Docs
Stars: ✭ 221 (+12.18%)
Mutual labels:  kindle, ebook
EbookReader
The EbookReader Android App. Support file format like epub, pdf, txt, html, mobi, azw, azw3, html, doc, docx,cbz, cbr. Support tts.
Stars: ✭ 37 (-81.22%)
Mutual labels:  ebook, kindle
Koreader
An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices
Stars: ✭ 9,467 (+4705.58%)
Mutual labels:  kindle, ebook
The Economist Ebooks
经济学人(含音频)、纽约客、自然、新科学人、卫报、科学美国人、连线、大西洋月刊、新闻周刊、国家地理等英语杂志免费下载、订阅(kindle推送),支持epub、mobi、pdf格式, 每周更新. The Economist 、The New Yorker 、Nature、The Atlantic 、New Scientist、The Guardian、Scientific American、Wired、Newsweek magazines, free download and subscription for kindle, mobi、epub、pdf format.
Stars: ✭ 3,471 (+1661.93%)
Mutual labels:  kindle, ebook
Blitz
An eBook Framework (CSS + template)
Stars: ✭ 179 (-9.14%)
Mutual labels:  kindle, ebook
Rpi Backlight
🔆 A Python module for controlling power and brightness of the official Raspberry Pi 7" touch display
Stars: ✭ 190 (-3.55%)
Mutual labels:  library
C Macro Collections
Easy to use, header only, macro generated, generic and type-safe Data Structures in C
Stars: ✭ 192 (-2.54%)
Mutual labels:  library
Libmoji
📚 Bitmoji's API made easy for everyone
Stars: ✭ 189 (-4.06%)
Mutual labels:  library

Libmobi

C library for handling Mobipocket/Kindle (MOBI) ebook format documents.

For examples on how to use the library have a look at tools folder.

Features:

  • reading and parsing:
    • some older text Palmdoc formats (pdb),
    • Mobipocket files (prc, mobi),
    • newer MOBI files including KF8 format (azw, azw3),
    • Replica Print files (azw4)
  • recreating source files using indices
  • reconstructing references (links and embedded) in html files
  • reconstructing source structure that can be fed back to kindlegen
  • reconstructing dictionary markup (orth, infl tags)
  • writing back loaded documents
  • metadata editing
  • handling encrypted documents

Todo:

  • improve writing
  • serialize rawml into raw records
  • process RESC records

Doxygen documentation:

Source:

Installation:

[for git] $ ./autogen.sh
$ ./configure
$ make
[optionally] $ make test
$ sudo make install

Optionally provided Xcode and MSVC++ project files

Usage

  • single include file: #include <mobi.h>
  • linker flag: -lmobi
  • basic usage:
#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;
  • for examples of usage, see tools

Requirements

  • compiler supporting C99
  • zlib (optional, configure --with-zlib=no to use included miniz.c instead)
  • libxml2 (optional, configure --with-libxml2=no to use internal xmlwriter)
  • tested with gcc (>=4.2.4), clang (llvm >=3.4), sun c (>=5.13), MSVC++ (2015)
  • builds on Linux, MacOS X, Windows (MSVC++, MinGW), Android, Solaris
  • tested architectures: x86, x86-64, arm, ppc
  • works cross-compiled on Kindle :)

Tests

  • Travis status
  • Coverity status

Projects using libmobi

License:

  • LGPL, either version 3, or any later

Credits:

  • The huffman decompression and KF8 parsing algorithms were learned by studying python source code of KindleUnpack.
  • Thanks to all contributors of Mobileread MOBI wiki
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].