Skip to content

Commit

Permalink
Merge pull request #208 from ReagentX/develop
Browse files Browse the repository at this point in the history
Velvet Ash
  • Loading branch information
ReagentX authored Dec 4, 2023
2 parents f907848 + ff27e9c commit 4deeac9
Show file tree
Hide file tree
Showing 52 changed files with 2,210 additions and 826 deletions.
31 changes: 15 additions & 16 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,27 @@ name: Test
on:
pull_request:
branches:
- release
- develop
- release
- develop

env:
CARGO_TERM_COLOR: always

jobs:
Test:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Lint
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Lint
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
133 changes: 82 additions & 51 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
[workspace]
resolver = "2"
members = [
"imessage-database",
"imessage-exporter",
]
members = ["imessage-database", "imessage-exporter"]

[profile.release]
# Perform Link Time Optimization
Expand Down
22 changes: 21 additions & 1 deletion docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ No, `imessage-exporter` only reads data present on the host system.

#### How does the exporter handle previously exported messages?

All messages are exported every time `imessage-exporter` runs. `imessage-exporter` appends to files when writing, so make sure to specify a different location!
If files with the current output type exist in the output directory, `imessage-exporter` will alert the user that they will overwrite existing exported data and the export will be cancelled. If the export directory is clear, `imessage-exporter` will export all messages by default. Alternatively, it will export messages between the dates specified by the `--start-date` and `--end-date` arguments.

See [here](../imessage-exporter/README.md#how-to-use) for details on `imessage-exporter` arguments.

***

Expand Down Expand Up @@ -49,3 +51,21 @@ This software can recover some, but not all, deleted messages.
Messages removed by deleting an entire conversation or by deleting a single message from a conversation are moved to a separate collection for up to 30 days. Messages present in this collection are restored to the conversations they belong to. Apple details this process [here](https://support.apple.com/en-us/HT202549#delete).

Messages that have expired from this restoration process are permanently deleted and cannot be recovered.

***

#### How fast is `imessage-exporter`?

This is a complicated question that depends on CPU, database size, chosen export type, and chosen attachment handling style.

On my M1 Max MacBook Pro, approximate performance is as follows:

| `--copy-method` | Messages exported per second |
|---|---|
| `disabled` | 18,000 |
| `efficient` | 13,000 |
| `compatible` | 300 |

For more information on `--copy-method`, see [here](../imessage-exporter/README.md#how-to-use) and [here](./features.md#supported-message-features).

However, if you recently deleted a large amount of data from Messages, the database will be slow for awhile, resulting in significantly reduced performance from `imessage-exporter`.
24 changes: 16 additions & 8 deletions docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@ This tool targets the current latest public release for macOS and iMessage. It m
- Threads are displayed both threaded under the parent as well as in-place
- This is to preserve context, which can be lost if replying to older messages
- Messages from a thread and were rendered in-place are annotated as such
- In HTML exports, threaded messages are hyperlinked to allow for easy reading in context
- For multi-part messages, replies are threaded under the correct message part
- Attachments
- Any type of attachment that can be displayed on the web is embedded in the HTML exports
- Attachments can be copied to the export directory or referenced in-place
- Less-compatible images are converted for portable exports:
- Less-compatible images can be converted for even more portable exports:
- Attachment `HEIC` files convert to `JPEG`
- Sticker `HEIC` files convert to `PNG`
- Sticker `HEICS` files convert to `GIF`
Expand All @@ -57,20 +58,27 @@ This tool targets the current latest public release for macOS and iMessage. It m
- Displayed in HTML exports
- Annotated in TXT exports
- For multi-part messages, stickers are placed under the correct message part
- Sticker effects are annotated in all exports
- Apple Pay
- Detects the transaction source, amount, and type
- URL Previews
- URL previews
- Parses the `NSKeyedArchiver` payload to extract preview data
- Extracts cached metadata for each URL
- Preview images display in HTML exports
- URLs that have rotten may still retain some context if they have cached data
- Extracts cached metadata for each URL
- Preview images display in HTML exports
- URLs that have rotten may still retain some context if they have cached data
- Handles cases where URL messages are overloaded with other message types
- Apple Music (including preview streams)
- Apple Maps (including Placemark data)
- App Store (including app metadata)
- Rich Collaboration
- App Integrations
- Parses the `NSKeyedArchiver` payload to extract balloon data
- Supports system message types as well as third party applications
- Apple Music preview streams
- Rich Collaboration messages
- Apple Fitness messages
- Photo Slideshow messages
- SharePlay/Facetime messages
- App Store preview messages
- Check In messages
- Find My messages
- Duplicated group chats
- Handles (participants) and chats (threads) can become duplicated
- On startup:
Expand Down
Binary file modified docs/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion imessage-database/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ version = "0.0.0"
[dependencies]
chrono = "0.4.31"
plist = "1.6.0"
rusqlite = {version = "0.30.0", features = ["blob", "bundled"]}
rusqlite = { version = "0.30.0", features = ["blob", "bundled"] }
sha1 = "0.10.6"
2 changes: 1 addition & 1 deletion imessage-database/src/error/attachment.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*!
Errors that can happen when parsing attachment data
Errors that can happen when parsing attachment data.
*/

use std::{
Expand Down
2 changes: 1 addition & 1 deletion imessage-database/src/error/message.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*!
Errors that can happen when parsing message data
Errors that can happen when parsing message data.
*/

use std::fmt::{Display, Formatter, Result};
Expand Down
Loading

0 comments on commit 4deeac9

Please sign in to comment.