Skip to main content

iMessage Analysis

Python scripts to analyze your iMessage data. Completely private and locally hosted. Please see TODO for more details and examples.

Example Plot

Table of Contents:

  1. 💽 Installation
  2. ⚡️ Quickstart
  3. 🧑‍💻 Advanced

💽 Installation

pip install imess

⚡️ Quickstart

First, load your messages and contacts data.

# Copy data into /tmp/imess/ so that this script can access it
imess_init

# Preprocess data
imess_load

Second, generate plots:

# General plots (top-K) of all-time
imess_run --mode top_K_chats_with_sender_counts --K 20

# General plots (top-K) of chats over time
imess_run --mode top_K_chats_over_time --K 20

# Plots about a specific named group chat
imess_run --mode specific_chat_over_time --chat <chat-name>

# Plots about a specific set of senders
imess_run --mode specific_chat_over_time --senders <comma-separated-list-of-senders>

# Plots about a specific chat's word cloud
imess_run --mode specific_chat_word_cloud --senders <comma-separated-list-of-senders>

# Outputs all chat histories, one CSV and TXT per chat
imess_run --mode output_chat_history

All plots and outputs will be saved to ./plots/.

🧑‍💻 Advanced

Install

For local development:

conda create -n imess python=3.10 -y
conda activate imess
pip install -e .

Merging Contacts

TODO

If you have contacts that you want to merge but don't think that's captured in the contacts.vcf file, you can provide a data/merges.txt file to imless_load to specify how you want to merge contacts.

First, create a data/merges.txt file. Each row is a separate contact that will be merged into a single contact. The row should contain a comma-separated list of contact info that will be merged into a single contact.

An example is below:

test@gmail.com,test@comcast.com,599-559-4499
1121122222,999-999-9999,mom@icloud.com

Anytime we see test@gmail.com, test@comcast.com, or 599-559-4499, we will merge them into a single contact.

The script imess_load will automatically try to load data/merges.txt. If you don't want to use this file, you can set the --path_to_merges_txt flag to None or delete the file.

imess_load --path_to_merges_txt ./data/merges.txt

Metadata

Release files for imess 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imess 0.1.2
File Size Uploaded Provenance Actions
imess-0.1.2.tar.gz 10.9 kB Without provenance Details for imess-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for imess 0.1.2
File Interpreter ABI Platform Actions
imess-0.1.2-py3-none-any.whl Python 3 none any Details for imess-0.1.2-py3-none-any.whl

Total release size: 22.8 kB

Release files / imess-0.1.2.tar.gz

Download URL imess-0.1.2.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
db435dbc48560c08a3de9d2abae869610927c87ed888cc45740745b9ddae3283
BLAKE2b-256 checksum
How to use checksums
2c6428c1402d9af485edaf70121c3008f938c311e566fe937346f0a788f8b11d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.10.16

Release files / imess-0.1.2-py3-none-any.whl

Download URL imess-0.1.2-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a6b2e00fdefaa54d092389a40d029dcb8ea1bd2aab2fe41b2b1a6361be4bfbc9
BLAKE2b-256 checksum
How to use checksums
cbaa0be72fc03306cd10eafdd6c9abb2e74a0b54d5aadbfc6b7c1c9afa03fcc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.10.16

Security for imess 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page