Create pretty graphs of chat log history! Can combine information from multiple chat services all at once.
Supports:
- Facebook Messenger (JSON export)
- Discord (GDPR data request)
- Google Hangouts (Takeout)
- Download your data
- Facebook Messenger
- instructions at https://www.facebook.com/help/1701730696756992
- Be sure to export in JSON format and include your chat data!
- Unzip your download, make sure the folder is named something like "facebook-Name12345", and put it in
data
- Discord (GDPR request)
- instructions at https://support.discordapp.com/hc/en-us/articles/360004027692-Requesting-a-Copy-of-your-Data
- Unzip your download, rename the folder named "package" to something like "discord-YourUsername", and put it in
data
- NOTE that Discord data export only includes your sent messages, not received messages!!!!
- Google Hangouts
- instructions at https://support.google.com/accounts/answer/3024190?hl=en
- Be sure to include your Hangouts (chat) data!
- Unzip your download, rename the folder named "Takeout" to something like "google-YourUsername", and put it in
data
- Facebook Messenger
- Install the dependencies
- Make sure you have Conda installed
- Set up the Conda environment:
conda env create -f environment.yml
- Activate the conda environment:
conda activate chatloggrapher
- If you don't want to have Conda installed... make sure you have the dependency packages installed: JupyterLab, numpy, pandas, matplotlib, gensim, nltk
- Run the code
- Set up
aliases.json
to map multiple names/nicknames/usernames to each person's actual name- This is especially relevant for Discord, since Discord usernames are almost always different from someone's actual name and will also always include the 4-digit username ID.
- If you have contacted the same person on multiple platforms where they may be listed under multiple names/usernames, make sure that those names are tied all to the same single name in the aliases file.
- See the default lines in there for examples of how to write those lines.
- Map any name/username to "null" to ignore it entirely.
- Run
jupyter lab
and open the main notebook filedata_processing.ipynb
- Run the cells in order!
- Set up
Potential future features?
- Support for Facebook group chat data (> 2 person chats)
- Support for DiscordChatExporter data
- Support for any other chat or chat log scraper service that provides consistently formatted data dumps!
- Put the code that's currently in
data_processing.ipynb
into an independent Python file of its own, or something that can be more easily run!
Inspired by https://github.com/rohanp/MessengerGrapher (which handles messages through Facebook Messenger only)