Skip to content

Commit

Permalink
Optimisation du script d'extraction JSON
Browse files Browse the repository at this point in the history
- Simplification de la logique d'écriture des données, réduction de la condition pour ajouter une virgule entre les objets JSON.
- Fusion des promesses pour vérifier l'existence du fichier d'entrée et créer le répertoire de sortie.
- Amélioration de la gestion des erreurs avec des messages plus spécifiques lors de la lecture des données.
- Réduction du code pour rendre le processus d'extraction plus clair et efficace.

Code plus concis et optimisé pour la manipulation des flux JSON.
Rate limit · GitHub

Access has been restricted

You have triggered a rate limit.

Please wait a few minutes before you try again;
in some cases this may take up to an hour.

PotiteBulle committed Oct 22, 2024
1 parent 1809e63 commit 954367d
Showing 1 changed file with 12 additions and 23 deletions.
35 changes: 12 additions & 23 deletions index.js
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ const path = require('path');
const JSONStream = require('JSONStream');

// Chemin du fichier d'entrée
const inputFilePath = 'Artefacts/********.json'; // CHANGE THIS
const inputFilePath = 'Artefacts/artefact_********.json'; // CHANGE THIS
// Générer un nombre aléatoire entre 1 et 999
const randomNum = Math.floor(Math.random() * 999) + 1;
// Chemin du dossier et du fichier de sortie
@@ -12,58 +12,47 @@ const outputFilePath = path.join(outputDir, `data_artefact_messages_${randomNum}

async function extractAndSaveData() {
try {
// Vérifier si le fichier d'entrée existe
// Vérifier si le fichier d'entrée existe et créer le dossier de sortie
await fs.promises.access(inputFilePath);

// Créer le dossier de sortie s'il n'existe pas
await fs.promises.mkdir(outputDir, { recursive: true });

// Créer un flux de lecture pour le fichier d'entrée
// Utiliser des promesses pour créer les flux de lecture/écriture
const fileStream = fs.createReadStream(inputFilePath);

// Créer un flux d'écriture pour le fichier de sortie
const outputStream = fs.createWriteStream(outputFilePath);

// Créer un transformateur pour le flux JSON
// Transformer les messages JSON
const jsonStream = JSONStream.parse('messages.*');

// Écrire le début du tableau dans le fichier de sortie
outputStream.write('[');

// Compteur pour gérer la virgule entre les objets
let first = true;

// Traiter chaque message du flux
fileStream
.pipe(jsonStream)
.on('data', (message) => {
if (!first) {
outputStream.write(',');
}
// Simplification de la logique pour écrire une virgule
outputStream.write(first ? '' : ',');
first = false;
// Écrire chaque message dans le fichier de sortie
outputStream.write(JSON.stringify({
id: message.id, // ID du message
timestamp: message.timestamp, // Horodatage du message
content: message.content // Contenu du message
id: message.id,
timestamp: message.timestamp,
content: message.content
}));
})
.on('end', () => {
// Écrire la fin du tableau dans le fichier de sortie
outputStream.write(']');
outputStream.end();
console.log(`Les données ont été sauvegardées avec succès dans ${outputFilePath}`);
})
.on('error', (err) => {
console.error('Erreur:', err);
console.error('Erreur lors de la lecture des données:', err);
});
} catch (err) {
if (err.code === 'ENOENT') {
console.error('Le fichier d\'entrée est introuvable:', inputFilePath);
console.error(`Le fichier d'entrée est introuvable: ${inputFilePath}`);
} else {
console.error('Erreur:', err);
}
}
}

extractAndSaveData();
extractAndSaveData();

0 comments on commit 954367d

Please sign in to comment.