Show HN: iMessage-exporter, a full-featured CLI app and library (github.com)

15 points by css ↗ HN
I've spent a long time reverse engineering nearly every aspect of Apple's iMessage SQLite tables to build this program. As far as I know, there are no other tools that support the full corpus of iMessage features, including edited messages, app messages, reactions, and threads.

I built this software to preserve some conversations with loved ones; I hope others find it useful as well.

For the curious, here are some of the more interesting aspects of the database I came across:

- Dates are stored as Unix timestamp with an epoch of 1/1/2001 00:00:00

- Messages can have multiple parts, denoted by some special invisible characters

- Reactions are stored by prefixing the GUID of the reacted message with the index of the message part [0].

- URL messages cache data in the table, which we can parse and display [1].

- Edited messages store the history message edits [2] (I wanted to try out DDD here, which was fun!).

[0]: https://docs.rs/imessage-database/latest/imessage_database/m...

[1]: https://docs.rs/imessage-database/latest/imessage_database/m...

[2]: https://docs.rs/imessage-database/latest/imessage_database/m...

2 comments

[ 4.8 ms ] story [ 16.1 ms ] thread
Honestly, don't understand why this didn't get more traction here.