Exportar el historial de chat de WhatsApp a Excel usando Python

En este artículo, discutiremos cómo exportar los chats de un usuario específico a una hoja de Excel . Para exportar los chats, usaremos varios módulos y bibliotecas de Python. 

En el archivo de Excel, crearemos cuatro columnas: Fecha, Hora, Nombre y Mensaje. Crearemos estas columnas a través de Pandas, exportaremos todos los detalles del chat a sus respectivas columnas y usaremos Pushbullets para recuperar los datos usando la clave API.

Módulo necesario:

  • Pandas : Pandas es una biblioteca de código abierto que se basa en la biblioteca NumPy. Es un paquete de Python que ofrece varias estructuras de datos y operaciones para manipular datos numéricos y series de tiempo.
pip install pandas
pip install pushbullet.py == 0.9.1
  • openpyxl : es una biblioteca de Python con la que se pueden realizar múltiples operaciones en archivos de Excel, como lectura, escritura, operaciones aritméticas y trazado de gráficos. Veamos cómo realizar diferentes operaciones aritméticas usando openpyxl.
pip install openpyxl

Implementación paso a paso :

Paso 1: configure una cuenta Pushbullet en su PC y teléfono

Paso 2: Instale la aplicación Pushbullet en su teléfono. Inicie sesión con la misma dirección de correo electrónico que utilizó para iniciar sesión en su PC.

Paso 3: Después de crear una cuenta tanto en la computadora como en el teléfono.

Navegue a la opción Dispositivos en la esquina superior izquierda de su PC. Y luego seleccione Agregar un dispositivo y agregue su teléfono. Cuando agregue su teléfono, el nombre de su teléfono se mostrará allí.

Paso 4: ahora exporta las conversaciones del usuario específico.

Sigue estos pasos:

  1. Ve a la aplicación WhatsApp de tu teléfono .
  2. Seleccione el usuario cuya conversación desea exportar haciendo clic en su nombre.
  3. Ahora, en la esquina superior derecha, haz clic en los tres puntos.
  4. Seleccione Exportar chats en el menú que aparece cuando hace clic en más .
  5. Después de hacer clic en Exportar chats, aparecerá una lista de aplicaciones y debes seleccionar Pushbullet .
  6. Ahora puede ver un archivo de texto en Pushbullet.com en su PC que contiene los chats.

Paso 5: ahora, obtenga la clave API de Pushbullet.com

Abra Pushbullet.com en su PC y vaya a Configuración . Luego, desplácese hacia abajo y haga clic en Tokens de acceso. Haga clic en Crear token de acceso y copie el token

Paso 6: escriba el código para exportar el chat a Excel.

  • Con PushBullet , autentique la clave ahora. Se lanza un InvalidKeyError si su clave no es válida (la API de Pushbullet devuelve 401 ).

Sintaxis: PushBullet(Tu_token_de_acceso)

  • Puede obtener todas las inserciones anteriores creadas por usted, lo que implica todos los archivos que envió a Pushbullet, utilizando get_pushes . Sin embargo, queremos la inserción más reciente, que aparecerá en el índice0 ‘ en una lista de todas las inserciones. Ahora que hemos recibido el envío más reciente, necesitamos recuperar la URL de nuestras conversaciones de exportación de Pushbullet, así que solo proporcione file_url .

Sintaxis:

pb.get_pushes() # Obtener todos los Empujes 

all_pushes[0] # Obtener los últimos envíos 

  • Cree un archivo de texto para guardar todos los chats y luego use el método urlretrieve para recuperar todos los datos de la URL . urlretrieve acepta dos argumentos: la URL y el archivo de texto en el que guardar todos los datos.

Sintaxis: urllib.request.urlretrieve(Chats_URL, Text_file_name)

  • Abra el archivo de texto y lea todos los datos línea por línea, utilizando la codificación utf8 para codificar los datos. Guardará el contenido del archivo de texto en formato de lista después de leerlo del archivo de texto. Debido a que el índice0 ‘ contiene algo de texto basura , debemos eliminarlo utilizando la división de listas .
  • Ejecute un bucle para extraer la fecha , la hora , el nombre y el mensaje de los datos del archivo mediante el corte de listas. Simplemente agréguelos a una lista una vez que se hayan extraído.
  • Finalmente, use la biblioteca Pandas para construir un marco de datos que se usará para almacenar todos los datos en una hoja de Excel . pd.DataFrame acepta dos argumentos: una lista de texto y las columnas que se crearán en una hoja de Excel. Después de eso, solo use el método to_excel para guardarlos en un archivo de Excel.

A continuación se muestra la implementación completa:

Python3

# Import following modules
import urllib.request
import pandas as pd 
from pushbullet import PushBullet 
 
# Get Access Token from pushbullet.com
Access_token = "Your Access Token"
 
# Authentication
pb = PushBullet(Access_token) 
 
# All pushes created by you
all_pushes = pb.get_pushes() 
 
# Get the latest push
latest_one = all_pushes[0] 
 
# Fetch the latest file URL link
url = latest_one['file_url'] 
 
 
# Create a new text file for storing
# all the chats
Text_file = "All_Chats.txt" 
 
# Retrieve all the data store into
# Text file
urllib.request.urlretrieve(url, Text_file)
 
# Create an empty chat list
chat_list = [] 
 
# Open the Text file in read mode and
# read all the data
with 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
# data
final_data_set = data[1:]
 
# Run a loop and read all the data
# line-by-line
for 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 file
df = pd.DataFrame(chat_list,
                  columns = ['Date', 'Time',
                             'Name', 'Message'])
df.to_excel("BackUp.xlsx", index = False)

Producción: 

Publicación traducida automáticamente

Artículo escrito por gittysatyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *