26个版本

0.8.0 2022年12月11日
0.7.0 2022年1月8日
0.6.0 2021年10月31日
0.5.1 2020年12月7日
0.2.4 2019年9月2日

#1117解析器实现

Download history 32/week @ 2024-03-11 26/week @ 2024-03-18 16/week @ 2024-03-25 48/week @ 2024-04-01 23/week @ 2024-04-08 23/week @ 2024-04-15 46/week @ 2024-04-22 19/week @ 2024-04-29 23/week @ 2024-05-06 26/week @ 2024-05-13 34/week @ 2024-05-20 23/week @ 2024-05-27 34/week @ 2024-06-03 24/week @ 2024-06-10 39/week @ 2024-06-17 22/week @ 2024-06-24

122 每月下载量

MIT 许可证

155KB
3K SLoC

mobi-rs

Build Status crates.io crates.io Docs
用于处理MOBI格式电子书的crate。

用法

  • 添加到 Cargo.toml
[dependencies]
mobi = "0.8"
  • main.rs
use mobi::{Mobi, MobiError};
fn main() -> Result<(), MobiError> {
    let book = vec![0, 0, 0];
    // You can either create a Mobi struct from a slice
    let m = Mobi::new(&book)?;
    // Or from an instance of io::Read
    let stdin = std::io::stdin();
    let mut handle = stdin.lock();
    let m = Mobi::from_read(&mut handle)?;
    // Or from filesystem
    let m = Mobi::from_path("/some/path/to/book.mobi")?;

    // Access metadata
    let title = m.title();
    let author = m.author().unwrap_or_default();
    let publisher = m.publisher().unwrap_or_default();
    let desc = m.description().unwrap_or_default();
    let isbn = m.isbn().unwrap_or_default();
    let pub_date = m.publish_date().unwrap_or_default();
    let contributor = m.contributor().unwrap_or_default();

    // Access Headers
    let metadata = &m.metadata;
    let header = &metadata.header; // Normal Header
    let pdheader = &metadata.palmdoc; // PalmDOC Header
    let mheader = &metadata.mobi; // MOBI Header
    let exth = &metadata.exth; // Extra Header

    // Access content
    let content = m.content_as_string();

    Ok(())
}

许可证

MIT许可证 (MIT)

感谢

kroo 提供灵感和想法。

依赖关系

~4MB
~68K SLoC