-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild-data.js
More file actions
51 lines (39 loc) · 1.47 KB
/
build-data.js
File metadata and controls
51 lines (39 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env node
/**
* Script pour combiner tous les fichiers JSON de la revue de presse 2025
* en un seul fichier pour la visualisation "Course des Thèmes"
*/
const fs = require('fs');
const path = require('path');
const dataDir = path.join(__dirname, '..', '2025');
const outputFile = path.join(__dirname, 'data-combined.json');
console.log('🔍 Recherche des fichiers JSON...');
const files = fs.readdirSync(dataDir)
.filter(f => f.endsWith('.json'))
.sort();
console.log(`📁 ${files.length} fichiers trouvés`);
let allArticles = [];
let errors = 0;
files.forEach(file => {
const filePath = path.join(dataDir, file);
try {
const content = fs.readFileSync(filePath, 'utf-8');
const articles = JSON.parse(content);
if (Array.isArray(articles)) {
allArticles = allArticles.concat(articles);
}
} catch (e) {
console.error(`❌ Erreur avec ${file}:`, e.message);
errors++;
}
});
console.log(`\n📊 Statistiques:`);
console.log(` - Articles totaux: ${allArticles.length}`);
console.log(` - Fichiers traités: ${files.length - errors}`);
console.log(` - Erreurs: ${errors}`);
// Trier par date
allArticles.sort((a, b) => new Date(a.date) - new Date(b.date));
// Écrire le fichier combiné
fs.writeFileSync(outputFile, JSON.stringify(allArticles, null, 2));
console.log(`\n✅ Fichier créé: ${outputFile}`);
console.log(` Taille: ${(fs.statSync(outputFile).size / 1024 / 1024).toFixed(2)} Mo`);