1
Files
2025/tools/stats/unique_visitors_per_month.js
2025-11-28 13:40:20 +01:00

47 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
const fs = require("fs/promises");
const { renderChart, makeBarConfig } = require("../lib/stats/charts");
const { fetchGoAccessJson, groupVisitsByMonth } = require("../lib/stats/goaccess");
const { loadToolsConfig } = require("../lib/config");
async function run({ stat, outputPath, publicPath }) {
if (!outputPath) {
throw new Error("outputPath manquant pour unique_visitors_per_month");
}
const toolsConfig = await loadToolsConfig();
const url = stat.url || toolsConfig.goaccess?.url;
if (!url) {
throw new Error("URL GoAccess manquante (GOACCESS_URL ou goaccess.url dans tools/config.json)");
}
const data = await fetchGoAccessJson(url);
const months = groupVisitsByMonth(data, { adjustCrawlers: true });
const labels = months.map((entry) => entry.month);
const values = months.map((entry) => entry.visitors);
const buffer = await renderChart(
makeBarConfig({
labels,
data: values,
title: "Visiteurs uniques par mois (hors crawlers)",
color: "rgba(239, 68, 68, 0.8)",
}),
);
await fs.writeFile(outputPath, buffer);
const latest = months[months.length - 1];
return {
image: publicPath,
meta: {
month: latest?.month || null,
visitors: latest?.visitors || 0,
},
};
}
module.exports = { run };