Code Monkey home page Code Monkey logo

imessageanalyzer's Introduction

Written by Ryan D'souza

iMessage Analyzer - Mac App

Analyzes a user's iMessages while providing cool functionality

Analyzes a user's iMessage database (chat.db*) to understand a user and their friends' messaging habits by graphing (and calculating statistics) on those characteristics.

Adds some unique functionality from Messages.app that provides a better experience, including a refined search for messages.

*chat.db, where a user's messages are stored, can be found in 2 ways:

  1. Where Messages.app (Apple's official Messages.app - iMessage for Mac) stores its data
  2. Where the iPhone's chat.db database is stored after a backup to the computer

Demo Video

Download .app

Newest features
  • Double messages: See who sends the most followup messages; defined as successive messages sent by the same person within 3 minutes to 8 hours of the last message send time
  • Conversation starters: See who starts the most conversations; defined as who messages first after 8 hours of the last message in the conversation

Current Features:

  • Looks like iMessage
    • Contacts tableview on left side with contact name + profile picture
    • iMessages you sent are in blue on the right side of messages panel
      • Normal text messages you send are in green
    • iMessages you received are in gray on the left side of messages panel
    • Shows each message's date/time and read receipts
Unique from iMessage Features
  • Loads all of a user's messages (as opposed to scrolling up forever to see the first few messages)

    • Still memory efficient and quick for large conversations
      • Tested on conversations with > 26,000 messages
      • Tested on total messages > 60,000
      • Barely uses 110MB of RAM
      • Minimal CPU usage
  • Searching for text shows conversations

    • With text that matches the conversation
    • With contact names/numbers/emails that match the text
    • Still (somehow) quicker than iMessage's search for conversations with text
    • Searched text is highlighted in yellow
    • Pressing enter moves to the next occurrence of that text
  • View messages sent and received on a certain date for a conversation

    • Calendar view pops up and a date can be chosen to view all messages with that conversant on
    • Pressing "Reset to All" shows all messages with person
  • Double clicking on contact in Contacts Tableview on the left shows

    • Total number of messages you sent and received in that conversation
    • Option to perform More Analysis
  • More Analysis

    • Shows the following for All Time or on a specific date
      • Words organized by frequency/occurrence for each person
        • Uses a Heap Data Structure I wrote
      • Total number of messages sent and received
      • Total number of words sent and received
      • Average word per message sent and received
      • Date selected from calendar view on bottom left
      • The actual messages sent and received
      • The number of double messages for each conversant: defined as two successive messages sent by the same person between 3 minutes and 8 hours of the last message sent
      • The number of times each conversant started a conversation: defined by who sends the first message at least 8 hours after the last message was sent/received
  • Graphs and charts

    • Line graph of messages with that person since your first message
      • Allows for zooming in on specific date ranges
      • Data can be changed to show
        • Messages with that person compared to all other messages sent during that time period
        • Your sent vs received messages with that person over time
        • Your sent vs received words with that person over time
    • Pie Chart
      • Sent messages vs received messages with person
      • Sent words vs received words with that person
      • Total messages with person vs all other messages in inbox
    • Bar Chart
      • Sent vs received messages per hour of day --> When y'all talk the most
      • Sent vs received words per hour of day --> When y'all talk the most
      • Percentage of total messages with person per hour of day vs percentage of all other messages with other people per hour of day --> When y'all talk the most in comparison to when you mainly talk to everyone else

Features in implementation:

  • Statistics on actual messaging habits
    • Average reply time over the course of a day
  • Autoreply based on replies to certain messages --> Machine Learning

Screenshots

  • Scroll to the bottom to see beginning flow

Screenshot 31 A graph of all messages with a person over the course of a year. This person seems like a good friend


Screenshot 32 Zooming in on that graph


Screenshot 33 Clicking on a point shows the y-value above it.


Screenshot 34 Graphing message frequency with another one. This seems like a broken-off friendship


Screenshot 35 Overlaying the messages with a friend (white) with all other messages on that day (green)


Screenshot 36 Zooming in on that overlay


Screenshot 19 Sent vs Received messages


Screenshot 20 Sent vs Received words


Screenshot 21 Pie chart of sent vs received messages


Screenshot 22 Pie chart of sent vs received words


Screenshot 23 Pie chart of total messages to that person vs all other messages


Screenshot 24 When y'all send the most amount of messages to each other throughout the day


Screenshot 25 When y'all type the most to each other throughout the day


Screenshot 26 That conversation vs all other conversations throughout the day


Screenshot 27 A percentage breakdown of that conversation vs all other conversations throughout the day


Screenshot 37 How that can vary from person to person


Screenshot 29 More analysis screen

  • Shows all messages sent and received

  • Shows the total word count, sent and received

  • Shows the average word per message

  • Shows all words for each participant in order of freuency

  • All messages are displayed on tableview at bottom of the screen


Screenshot 30 More analysis screen

Clicking on a date in the calendar on the bottom left - Shows above statistics but on that date + Includes recalculating word frequencies, words sent and received on date, and average word/message on date ("Avg. Word/Message (D)") - Shows messages sent on that day - Pressing "Clear" resets everything to the initial screen


Screenshot 0 View full conversations - all at once - with a person, starting from the first interaction Also shows delivered/read receipts for each person


Screenshot 1 View messages sent on a certain date (no messages)


Screenshot 2 View messages sent on a certain date (messages)


Screenshot 3 Searching for text brings up contacts + contacts with messages that match the text. Pressing Enter brings up the next text occurence. Message occurrences are highlighted in yellow and pressing enter scrolls to the next occurrence


Screenshot 4 Attachments sent are shown in a message. Clicking on them opens a popup with that attachment


Screenshot 5 For multiple attachments in a message, the popup allows scrolling through each attachment as well as the ability to open each attachment in the right application


Screenshot 6 Movie attachments and PDFs are also shown and movies begin playing automatically


Screenshot 28 Double clicking a contact shows quick statistics and gives the option to view more icon (circle icon)

imessageanalyzer's People

Contributors

dsouzarc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imessageanalyzer's Issues

Feature request: export report

Awesome work, thank you!! Just made an analysis of emoji use with a friend much easier.

A few stacked feature requests:

  1. Would be great if there was a way to export the word frequencies to CSV
  2. Better yet, a word frequency of just emoji would be particularly useful
  3. Would be nice to export the graphs to PNG or GIF as well, but that's easier to screenshot.
  4. Finally, a report of overall emoji use for me -> anyone, and anyone -> me, would be of interest.

Thanks again for the great tool!

Issue Pulling from Messages.app in macOS Mojave

Hello, I updated to macOS mojave today, and am no longer to use iMessageAnalyzer when pulling the data from messages.app.

Namely, it complains Cannot make a backup of chat.db with the reason given being that

Could not make a backup of your messages.db . Error Domain = NSCocoaErrorDomain Code=513 ""chat.db" couldn't be copied because you don't have permission to access "T"."

Let me know if there is any additional information that you might need in order to reproduce this. I would not be surprised if this had to do with some of the new security/privacy features in mojave.

Attachments not opening

Attachments not showing up. macOS Catalina. Screenshot included. Otherwise fantastic app, 10/10 dude thank you

image

App doesn't work

When I run the app using Messages.app chats, it gives me an error saying it failed to make a backup.

Running 10.15.7

Emoji Processing

Do you currently have any code to process emojis? For the life of me, I cannot find anything anywhere on how to process that. Ideally, I would like to count frequency of emojis in a conversation.

App is launched but window does not pop up

I have attempted to open the analyzer multiple times. The top right hand corner shows that the app is opened on my mac, but no window pops up. What could be the problem?

error about "encrypted" backup

I backed up my phone through iTunes, and then attempted to open an "iPhone backup" via iMessageAnalyzer.

When I select the most recent backup folder I got the message:

Either the iPhone's text message backups were not found in this directory or they were encrypted. When syncing or backing up with iTunes, disable encryption

After noodling around a little, I was able to get it to work by instead selecting the subdirectory backup_directory/3d/

Apologies in advance if I'm being silly and missed something in the readme that already explains how to do this ๐Ÿ˜‹

Crash with huge message bank

The app crashed multiple times when I wanted to see the graph for a message thread that was ~29000 messages long

Datetime issue

Hi,
This is a fantastic app, great info.
When I run it on my Mac messages app, it runs flawlessly. However, the messages on my phone go back a good bit further. So, I ran a backup of my phone and pointed it at that instead. When it runs from the backup, all the dates on the messages are all over the place, with dates running from 1940 to 2068 and everywhere in-between. Anything I'm doing wrong?
Thanks,
Dara

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.