Export WhatsApp Chat History to Excel Using Python - GeeksforGeeks

18 Nov, 2021
In this article, we will discuss how to export a specific user’s chats to an Excel sheet. To export the chats, we will use several Python modules and libraries. 
In the Excel file, we will create four columns: Date, Time, Name, and Message. We’ll create these columns through Pandas, export all the chat details to their respective columns, and use Pushbullets to retrieve the data using the API key.
Pandas: Pandas is an open-source library that is built on top of NumPy library. It is a Python package that offers various data structures and operations for manipulating numerical data and time series.
pip install pandas
pushbullet: It allows you to send push notifications to Android and iOS devices.
pip install pushbullet.py == 0.9.1
openpyxl: It is a Python library using which one can perform multiple operations on excel files like reading, writing, arithmetic operations and plotting graphs. Let’s see how to perform different arithmetic operations using openpyxl.
pip install openpyxl
Step 1: Set up a Pushbullet account on your PC and Phone
Step 2: Install the Pushbullet app on your phone. Log in using the same email address that you used to log in to your PC.
Step 3: After creating an account on both the computer and the phone.
Navigate to the Devices option in the top left corner of your PC. And then select Add a device, and add your phone. When you add your phone, the name of your phone will be shown there.
Step 4: Now export the specific user’s conversations.
Follow these steps:
Go to your phone’s WhatsApp app.Select the user whose conversation you wish to export by clicking on his or her name.Now, in the upper right corner, click on the three dots.Select Export chats from the menu that appears when you click on more.After clicking on Export chats, a list of apps will appear, and you must select Pushbullet.You may now see a text file on Pushbullet.com on your PC that contains the chats.
Go to your phone’s WhatsApp app.
Select the user whose conversation you wish to export by clicking on his or her name.
Now, in the upper right corner, click on the three dots.
Select Export chats from the menu that appears when you click on more.
After clicking on Export chats, a list of apps will appear, and you must select Pushbullet.
You may now see a text file on Pushbullet.com on your PC that contains the chats.
Step 5: Now, get the API key from Pushbullet.com
Open Pushbullet.com on your PC and Go to Settings Then scroll down and click on Access Tokens. Click on Create Access Token and copy the Token
Step 6: Write the code for export chat into excel.
Using PushBullet, authenticate the key now. An InvalidKeyError is thrown if your key is invalid (the Pushbullet API returns 401).
Syntax: PushBullet(Your_Access_token)
You may obtain all of your past pushes produced by you, which implies all of the files you submitted to Pushbullet, by using get_pushes. However, we want the most recent push, which will appear at index ‘0‘ in a list of all pushes. Now that we’ve received the most recent push, we need to retrieve the URL of our export conversations from Pushbullet, so just give the file_url.
Syntax:
pb.get_pushes() # Get all the Pushes 
all_pushes[0] # Get the latest pushes 
Create a text file to save all of the chats, and then use the urlretrieve method to retrieve all of the data from the URL. urlretrieve accepts two arguments: the URL and the text file in which to save all of the data.
Syntax: urllib.request.urlretrieve(Chats_URL, Text_file_name)
Open the text file and read all of the data lines by line, using the utf8 encoding to encode the data. It will save the content of the text file in a list format after reading it from the text file. Because index ‘0‘ contains some trash text, we must delete it using list slicing.
Run a loop to extract the Date, Time, Name, and Message from the file data using list slicing. Simply add them to a list once they’ve been extracted.
Finally, use the Pandas library to construct a data frame that will be used to store all of the data on an Excel sheet. pd.DataFrame accepts two arguments: a list of text and the columns to be created on an excel sheet. After that, just use the to_excel method to save them to an excel file.
Below is the full implementation:
Python3
# Import following modulesimport urllib.requestimport pandas as pd from pushbullet import PushBullet  # Get Access Token from pushbullet.comAccess_token = "Your Access Token" # Authenticationpb = PushBullet(Access_token)  # All pushes created by youall_pushes = pb.get_pushes()  # Get the latest pushlatest_one = all_pushes[0]  # Fetch the latest file URL linkurl = latest_one['file_url']   # Create a new text file for storing# all the chatsText_file = "All_Chats.txt"  # Retrieve all the data store into# Text fileurllib.request.urlretrieve(url, Text_file) # Create an empty chat listchat_list = []  # Open the Text file in read mode and# read all the datawith open(Text_file, mode='r', encoding='utf8') as f:        # Read all the data line-by-line    data = f.readlines()  # Excluded the first item of the list# first items contains some garbage# datafinal_data_set = data[1:] # Run a loop and read all the data# line-by-linefor line in final_data_set:      # Extract the date, time, name,    # message    date = line.split(",")[0]     tim = line.split("-")[0].split(",")[1]     name = line.split(":")[1].split("-")[1]     message = line.split(":")[2][:-1]          # Append all the data in a List    chat_list.append([date, tim, name, message]) # Create a dataframe, for storing# all the data in a excel filedf = pd.DataFrame(chat_list,                  columns = ['Date', 'Time',                             'Name', 'Message'])df.to_excel("BackUp.xlsx", index = False)
Output: 
sumitgumber28
Python-excel
python-utility
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Box Plot in Python using Matplotlib
Bar Plot in Matplotlib
Python | Get dictionary keys as a list
Python | Convert set into a list
Ways to filter Pandas DataFrame by column values
Python - Call function from another file
loops in python
Multithreading in Python | Set 2 (Synchronization)
Python Dictionary keys() method
Python Lambda Functions