Récupérer conversations SMS dans Libre Office ?

choucroot Membre non connecté
-
- Voir le profil du membre choucroot
- Inscrit le : 07/08/2015
- Groupes :
Reprise du message précédent
Bonjour Ami ageDans /e/, il est où l'export? J'avais proposé une demande d'évolution ici /e/ Feature Request . Un type m'a répondu en me proposant son application "MyPhoneExplorer" qui permet depuis un client sous Windows d'y rapatrier tous ses textos (entre autres). Mais pas sous Linux
Après, il existe des applications dans l'APP Lounge, comme "SMS Backup and restore", "SMS Sauvegarde", ... mais pareil, pas tellement confiance. Je préférerais vraiment que ça soit une fonctionnalité native de /e/
Ordinateurs : Mageia9 64bits XFCE: MSI Cubi N-8GL-002BEU (Pentium N5000), NUC11ATKPE (Pentium N6005), HP ELITEBOOK 820-G3 (I5-6200U)
Smartphone: /e/OS ( Samsung S7 Edge )
Smartphone: /e/OS ( Samsung S7 Edge )

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Ouvrir l'application SMS
Et haut à gauche cliquer sur les 3 petites barres horizontales
Puis sur sauvegarde et restauration.
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

choucroot Membre non connecté
-
- Voir le profil du membre choucroot
- Inscrit le : 07/08/2015
- Groupes :

Je ne pensais pas que les fichiers de sauvegarde étaient lisibles. J'imaginais qu'ils étaient cryptés pour que seulement l'application message puisse les manipuler. Donc c'est nickel!
Du coup ma demande d'évolution est complètement inutile!

Ordinateurs : Mageia9 64bits XFCE: MSI Cubi N-8GL-002BEU (Pentium N5000), NUC11ATKPE (Pentium N6005), HP ELITEBOOK 820-G3 (I5-6200U)
Smartphone: /e/OS ( Samsung S7 Edge )
Smartphone: /e/OS ( Samsung S7 Edge )

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
1 ligne par message.
les rubriques sont à la files séparées par des virgules mais on ne peut pas importer facilement dans libre office en utilisant un séparateur car le nombre de rubrique par ligne n'est pas toujours le même, et les données seraient décalées dans les colonnes.
nous avons donc
{"_id":"4636","thread_id":"29","address":"33600000000","date":"1711867093387","date_sent":"1711867090000","read":"1","status":"-1","type":"1","body":"ceci est le contenu du message que je viens d'anonymiser ","locked":"0","sub_id":"2","error_code":"-1","creator":"foundation.e.message","seen":"1"}
soit "nom rubrique1": "valeur rubrique1", "nom rubrique2": "valeur rubrique2", ...................
Il faut donc analyser le titre de la rubrique qui nous intéresse et prendre ce qui est derrière entre les guillemets.
Édité par Ami age Le 21/04/2024 à 18h39
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
(ce que j'ai demandé mais je vois toujours des instructions jq, donc il n'a pas du respecter ma consigne)
Code TEXT :
#!/bin/bash # Votre fichier JSON (remplacez par le chemin vers votre fichier) json_file="sms.json" # Les champs que vous souhaitez extraire (séparés par des virgules) fields="id,message,date,address,status,body" # Créez un fichier CSV vide csv_file="sms.csv" > "$csv_file" # Parcours du fichier JSON et extraction des champs while IFS= read -r line; do id=$(echo "$line" | jq -r ".id") message=$(echo "$line" | jq -r ".message") date=$(echo "$line" | jq -r ".date") address=$(echo "$line" | jq -r ".address") status=$(echo "$line" | jq -r ".status") body=$(echo "$line" | jq -r ".body") echo "$id,$message,$date,$address,$status,$body" >> "$csv_file" done < "$json_file" echo "Conversion terminée ! Le fichier CSV est disponible dans $csv_file"
Édité par Ami age Le 21/04/2024 à 18h38
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Juste pour extraire du texte entre guillement derrière un champ précis, on peut peut-être faire plus simple ?
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
Déjà, oublie Copilot, utilise ChatGPT si tu veux une réponse. Je ne sais pas si c'est ce que tu veux mais un truc comme ça fonctionne t'il ?
Code BASH :
#!/bin/bash # Read input JSON from file input=$(<myJson.json) # Remove leading and trailing curly braces trimmed_input="${input#"{"}" trimmed_input="${trimmed_input%"}"}" # Define CSV file csv_file="Output.csv" # Initialize CSV file with headers echo "Key,Value" > "$csv_file" # Split by comma and iterate over key-value pairs IFS=',' read -r -a pairs <<< "$trimmed_input" for pair in "${pairs[@]}"; do # Extract key and value IFS=':' read -r key value <<< "$pair" # Trim leading and trailing quotes from the key and value key="${key//\"}" value="${value//\"}" # Append key-value pair to CSV file echo "$key,$value" >> "$csv_file" done echo "Extraction complete. Data written to $csv_file"

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Je vais essayer, mais il y a une contrainte dont je ne vois pas comment elle pourrait être prises en compte,
Le nombre de rubriques n'est pas toujours le même selon les lignes (il me semble, car en mettant des séparateur avec import direct libre office, mes lignes étaient décalées)
--------------------------
voilà le résultat de l'essai
J'ai renommé le fichier en début de script comme suit :
# Read input JSON from file
input=$(<myJson.json)
et ce que celà donne en console :
[s@localhost import sms]$ dir
importsms.sh messages.ndjson
[s@localhost import sms]$ ./importsms.sh
./importsms.sh: ligne 25: erreur de syntaxe : fin de fichier prématurée
la 24ième ligne est celle ci value="${value//\"}"
et la 25ième est vide
Édité par Ami age Le 22/04/2024 à 09h09
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
quel est le problème avec l'utilisation de jq ?
Yves

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Je ne suis pas d'accord avec ton raisonnement.
1/ quand tu utilises bash, tu utilises plein d'autres commandes, grep, sed, awk, sort, et j'en passe. Pourquoi blacklister jq ?
2/ pour celui qui a un marteau, tout problème est un clou. En fait, tu disposes de plein d'outils qui ont leur degré de pertinence en fonction du problème à résoudre. Je ne vois pas de bonne raison de s'interdire de les utiliser par principe.
Yves

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
mais si sans jq, c'est vraiment trop compliqué a faire, pourquoi pas. Mais je ne pense pas qu'il soit compliqué d'extraire des chaînes de caractères après des repères dans un fichier.
Édité par Ami age Le 22/04/2024 à 14h20
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
voici ma demande :
Citation :Bonjour Chatgpt,
Je souhaite avoir un script linux en bash qui permet d'obtenir un fichier csv, à partir d'un fichier export de sms nommé messages.ndjson qui est au format json, (mais je ne suis pas sur). c
Ce fichier comporte un message par ligne. voici comment est la première ligne:
{"_id":"4636","thread_id":"29","address":"33600000000","date":"1711867093387","date_sent":"1711867090000","read":"1","status":"-1","type":"1","body":"ceci est le contenu du message que je viens d'anonymiser","locked":"0","sub_id":"2","error_code":"-1","creator":"foundation.e.message","seen":"1"}
soit "nom rubrique1": "valeur rubrique1", "nom rubrique2": "valeur rubrique2", ...................
Il faut donc analyser le titre de la rubrique qui nous intéresse et prendre la valeur, c'est à dire ce qui est derrière entre les guillemets après les deux points
Je souhaite avoir tous les champs de cette ligne 1 pour toutes les lignes du fichier avec 1 ligne par message dans le fichier csv
Je préfère ne pas avoir à utiliser l'instruction jq pour ne pas avoir de composant supplémentaire à installer
dans le fichier CSV, il ne faut pas utiliser des virgules comme séparateur car celà crée une confusion avec les virgules dans le champs "body"messages, alors il faut retenir comme séparateur Tabulation
et le résultat :
Code TEXT :
#!/bin/bash # Déclaration du nom du fichier CSV de sortie output_file="messages.csv" # Écriture de l'en-tête du fichier CSV echo "_id thread_id address date date_sent read status type body locked sub_id error_code creator seen" > $output_file # Lecture du fichier messages.ndjson ligne par ligne while IFS= read -r line; do # Extraction de chaque champ de la ligne _id=$(echo "$line" | grep -o '"_id":"[^"]*"' | cut -d':' -f2 | tr -d '"') thread_id=$(echo "$line" | grep -o '"thread_id":"[^"]*"' | cut -d':' -f2 | tr -d '"') address=$(echo "$line" | grep -o '"address":"[^"]*"' | cut -d':' -f2 | tr -d '"') date=$(echo "$line" | grep -o '"date":"[^"]*"' | cut -d':' -f2 | tr -d '"') date_sent=$(echo "$line" | grep -o '"date_sent":"[^"]*"' | cut -d':' -f2 | tr -d '"') read=$(echo "$line" | grep -o '"read":"[^"]*"' | cut -d':' -f2 | tr -d '"') status=$(echo "$line" | grep -o '"status":"[^"]*"' | cut -d':' -f2 | tr -d '"') type=$(echo "$line" | grep -o '"type":"[^"]*"' | cut -d':' -f2 | tr -d '"') body=$(echo "$line" | grep -o '"body":"[^"]*"' | cut -d':' -f2 | tr -d '"') locked=$(echo "$line" | grep -o '"locked":"[^"]*"' | cut -d':' -f2 | tr -d '"') sub_id=$(echo "$line" | grep -o '"sub_id":"[^"]*"' | cut -d':' -f2 | tr -d '"') error_code=$(echo "$line" | grep -o '"error_code":"[^"]*"' | cut -d':' -f2 | tr -d '"') creator=$(echo "$line" | grep -o '"creator":"[^"]*"' | cut -d':' -f2 | tr -d '"') seen=$(echo "$line" | grep -o '"seen":"[^"]*"' | cut -d':' -f2 | tr -d '"') # Écriture des champs dans le fichier CSV (séparateur Tabulation) echo "$_id $thread_id $address $date $date_sent $read $status $type $body $locked $sub_id $error_code $creator $seen" >> $output_file done < messages.ndjson echo "Le fichier CSV a été créé avec succès : $output_file"
Édité par Ami age Le 23/04/2024 à 11h34
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Je peux faire la converstion dans calc, mais ça serait plus simple que celà soit fait dans le script,
mais quand je redemande à chat gpt, il me refait un autre script différent,
A suivre.
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie