50 lines
No EOL
2 KiB
Python
50 lines
No EOL
2 KiB
Python
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) |