import pandas as pd import json import os from pathlib import Path from utils.documents_to_database import documents_to_database from utils.convert_encoding_meta import convert_encoding_meta ## %% Déterminer le chemin du répertoire du script 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 fb_data_path = [os.path.join(project_root, 'import_data', 'data', 'FacebookBusiness', 'posts', 'profile_posts_1.json')] ## %% Lire et parser le fichier JSON des posts Facebook try: with open(fb_data_path[0], "r", encoding="raw-unicode-escape") as posts: posts_json = json.loads(convert_encoding_meta(posts.read())) except Exception as e: print(f"Error reading JSON file: {e}") exit(1) ## %% Extraire les données pertinentes de chaque post posts_medias = [] for post in posts_json: # Extraire le texte du post data_post_items = post['data'] texte_post_list = [] for item in data_post_items: if item.get('post'): texte_post_list.append(item['post']) texte = "\n".join(texte_post_list) # Traiter les pièces jointes du post for attachment in post['attachments']: if attachment.get('data'): for data_item in attachment['data']: if data_item.get('media'): media = data_item['media'] if len(texte) > 1: posts_medias.append({"network": "FacebookBusiness", "type": "posts", "index": "rs_facebookbusiness_posts", "chemin": fb_data_path[0], "texte": texte, "creation_timestamp": media["creation_timestamp"]}) ## %% Créer un DataFrame à partir des données extraites posts_medias_df = pd.DataFrame(posts_medias) ## %% Remplacer les valeurs NaN par des chaînes vides posts_medias_df.fillna(value="", inplace=True) ## %% Supprimer les doublons basés sur le texte et le timestamp de création posts_medias_df.drop_duplicates(subset=['texte', 'creation_timestamp'], inplace=True) ## %% Envoyer les données à la base de données documents_to_database(posts_medias_df)