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