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 ## %% 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 instagram_data_path = os.path.join(project_root, 'import_data', 'data', 'Instagram', 'threads', 'threads_and_replies.json') ## %% Lire et parser le fichier JSON des posts Threads with open(instagram_data_path, "r") as posts: post_comments_1 = json.loads(convert_encoding_meta(posts.read())) ## %% Extraire les données pertinentes de chaque post Threads threads_comments = [] for post in post_comments_1['text_post_app_text_posts']: for element in post['media']: threads_comments.append({"texte": element['title'], 'creation_timestamp': element['creation_timestamp'], "chemin": instagram_data_path, "index": "rs_instagram_threads", "type": "posts", "network": "Threads"}) ## %% Créer un DataFrame à partir des données extraites ig_comments_df = pd.DataFrame(threads_comments) ## %% Remplacer les valeurs NaN par des chaînes vides ig_comments_df.fillna(value="", inplace=True) ## %% Supprimer les doublons basés sur le texte et la date de création ig_comments_df.drop_duplicates(subset=['texte', 'creation_timestamp'], inplace=True) ## %% Filtrer les posts avec un texte vide # Filtrer les textes vides ig_comments_df = ig_comments_df[~ig_comments_df['texte'].str.strip('\n').str.strip().eq('')] ## %% Envoyer les données à la base de données documents_to_database(ig_comments_df)