#sqlite #message #imessage #table #parser #apple

imessage-database

用于与iMessage SQLite数据交互的解析器和工具

23个版本 (12个稳定版本)

2.0.1 2024年8月3日
1.9.0 2024年6月10日
1.8.0 2023年12月4日
1.7.0 2023年11月20日
0.1.4 2022年12月30日

#799 in 数据库接口

Download history 85/week @ 2024-05-02 88/week @ 2024-05-09 86/week @ 2024-05-16 86/week @ 2024-05-23 86/week @ 2024-05-30 226/week @ 2024-06-06 116/week @ 2024-06-13 98/week @ 2024-06-20 90/week @ 2024-06-27 103/week @ 2024-07-04 120/week @ 2024-07-11 132/week @ 2024-07-18 105/week @ 2024-07-25 419/week @ 2024-08-01 139/week @ 2024-08-08 115/week @ 2024-08-15

每月798次下载
用于 imessage-exporter

GPL-3.0-or-later

475KB
7.5K SLoC

imessage-database

此库提供了与iMessage数据库交互的接口。

安装

此库可在 crates.io 上找到。

文档

文档可在 docs.rs 上找到。

示例

use imessage_database::{
    error::table::TableError,
    tables::{
        messages::Message,
        table::{get_connection, Table},
    },
    util::dirs::default_db_path,
};

fn iter_messages() -> Result<(), TableError> {
    /// Create a read-only connection to an iMessage database
    let db = get_connection(&default_db_path()).unwrap();

    /// Create SQL statement
    let mut statement = Message::get(&db)?;

    /// Execute statement
    let messages = statement
        .query_map([], |row| Ok(Message::from_row(row)))
        .unwrap();

    /// Iterate over each row
    for message in messages {
        let mut msg = Message::extract(message)?;

        /// Deserialize message body
        msg.generate_text(&db);

        /// Emit debug info for each message
        println!("{:?}", msg)
    }

    Ok(())
}

依赖项

~27MB
~506K SLoC