2024-07-18 20:04:51 -04:00
|
|
|
import pandas as pd
|
|
|
|
import datetime
|
|
|
|
|
2024-10-02 21:53:37 -04:00
|
|
|
import os
|
|
|
|
from pathlib import Path
|
2024-07-18 20:04:51 -04:00
|
|
|
|
2024-10-02 21:53:37 -04:00
|
|
|
from utils.documents_to_database import documents_to_database
|
2024-07-18 20:04:51 -04:00
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Obtenir le répertoire du fichier courant
|
|
|
|
# Obtenir le répertoire du fichier courant
|
2024-10-02 21:53:37 -04:00
|
|
|
try:
|
2024-11-30 22:03:49 -05:00
|
|
|
# Ceci fonctionnera lors de l'exécution en tant que script
|
2024-10-02 21:53:37 -04:00
|
|
|
script_dir = Path(__file__).parent.parent
|
|
|
|
except NameError:
|
2024-11-30 22:03:49 -05:00
|
|
|
# Ceci fonctionnera dans des environnements interactifs
|
2024-10-02 21:53:37 -04:00
|
|
|
script_dir = Path().absolute()
|
|
|
|
|
|
|
|
project_root = script_dir
|
|
|
|
linkedin_data_path = os.path.join(project_root, 'import_data', 'data', 'LinkedIn', 'comments', 'Comments.csv')
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Lire et nettoyer les données CSV des commentaires LinkedIn
|
2024-10-02 21:53:37 -04:00
|
|
|
raw_comments_csv = pd.read_csv(linkedin_data_path,
|
|
|
|
escapechar='\\',
|
|
|
|
skipinitialspace=True)
|
|
|
|
raw_comments_csv['MessageFix'] = raw_comments_csv['Message'].str.replace(r'[\r\n\t]+', ' ', regex=True)
|
|
|
|
raw_comments_csv = raw_comments_csv.drop(columns=['Message'])
|
2024-07-18 21:54:15 -04:00
|
|
|
raw_comments = raw_comments_csv[(raw_comments_csv['MessageFix'] != "")].drop_duplicates()
|
2024-07-18 20:04:51 -04:00
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Ajouter des colonnes d'identification au DataFrame
|
2024-07-18 20:04:51 -04:00
|
|
|
raw_comments['index'] = "rs_linkedin_comments"
|
|
|
|
raw_comments['type'] = "comments"
|
|
|
|
raw_comments['network'] = "LinkedIn"
|
|
|
|
raw_comments['chemin'] = linkedin_data_path
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Convertir la date en timestamp et supprimer la colonne originale
|
2024-10-02 21:53:37 -04:00
|
|
|
raw_comments["creation_timestamp"] = raw_comments["Date"].apply(
|
|
|
|
lambda x: int(datetime.datetime.fromisoformat(x).timestamp())
|
|
|
|
)
|
2024-07-18 20:04:51 -04:00
|
|
|
del raw_comments["Date"]
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Renommer les colonnes pour correspondre au format standard
|
2024-07-18 21:54:15 -04:00
|
|
|
raw_comments.rename(columns={"Link": "uri", "MessageFix": "texte"}, inplace=True)
|
2024-07-18 20:04:51 -04:00
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Ajouter le chemin du fichier source
|
2024-07-18 20:04:51 -04:00
|
|
|
raw_comments["chemin"] = linkedin_data_path
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Remplacer les valeurs NaN par des chaînes vides
|
2024-07-18 20:04:51 -04:00
|
|
|
raw_comments.fillna(value="", inplace=True)
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Supprimer les doublons basés sur le texte et la date de création
|
2024-10-02 21:53:37 -04:00
|
|
|
raw_comments.drop_duplicates(subset=['texte', 'creation_timestamp'], inplace=True)
|
2024-07-18 20:04:51 -04:00
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Filtrer les commentaires avec un texte vide
|
|
|
|
# Filtrer les textes vides
|
2024-07-18 20:04:51 -04:00
|
|
|
raw_comments = raw_comments[~raw_comments['texte'].str.strip('\n').str.strip().eq('')]
|
|
|
|
|
2024-11-30 22:03:49 -05:00
|
|
|
## %% Envoyer les données à la base de données
|
|
|
|
documents_to_database(raw_comments)
|