50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
import fs from 'fs';
|
|
import path, {dirname} from 'path';
|
|
import axios from 'axios';
|
|
import {fileURLToPath} from 'url';
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
|
// Charger le fichier JSON
|
|
const wikiArticles = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'assets', 'documents', 'all_wiki_osm.json'), 'utf8'));
|
|
|
|
// Sélectionner un article au hasard
|
|
const randomIndex = Math.floor(Math.random() * wikiArticles['elements'].length);
|
|
console.log('wikiArticles[\'elements\']', wikiArticles['elements'].length)
|
|
const selectedArticle = wikiArticles['elements'][randomIndex];
|
|
|
|
// Récupérer le titre et la description de l'article
|
|
const title = selectedArticle.title;
|
|
const pageId = selectedArticle.pageid;
|
|
|
|
// Récupérer le contenu de l'article via l'API de MediaWiki
|
|
const wikiApiUrl = `https://wiki.openstreetmap.org/w/api.php`;
|
|
const params = {
|
|
action: 'parse',
|
|
pageid: pageId,
|
|
format: 'json',
|
|
prop: 'text',
|
|
section: 0
|
|
};
|
|
|
|
axios.get(wikiApiUrl, {params})
|
|
.then(response => {
|
|
const articleContent = response.data.parse.text['*'];
|
|
const firstParagraph = articleContent.split('<p>')[1].split('</p>')[0];
|
|
|
|
// Sanitizer le texte
|
|
const sanitizedText = firstParagraph.replace(/<\/?[^>]+(>|$)/g, '');
|
|
const sanitizedTextWithoutEntities = sanitizedText.replace(/&#(\d+);/g, (match, code) => {
|
|
return String.fromCharCode(code);
|
|
});
|
|
|
|
// Générer le message
|
|
const message = `Je vous recommande de lire l'article "${title}" sur le wiki d'OpenStreetMap :
|
|
${sanitizedTextWithoutEntities}
|
|
Lire la suite sur : https://wiki.openstreetmap.org/wiki/${title}`;
|
|
|
|
console.log(message);
|
|
})
|
|
.catch(error => {
|
|
console.error(error);
|
|
}); |