123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // 从配置文件中获取 umami 的配置
- const website_id = CONFIG.web_analytics.umami.website_id;
- // 拼接请求地址
- const request_url = `${CONFIG.web_analytics.umami.api_server}/websites/${website_id}/stats`;
- const start_time = new Date(CONFIG.web_analytics.umami.start_time).getTime();
- const end_time = new Date().getTime();
- const token = CONFIG.web_analytics.umami.token;
- // 检查配置是否为空
- if (!website_id) {
- throw new Error("Umami website_id is empty");
- }
- if (!request_url) {
- throw new Error("Umami request_url is empty");
- }
- if (!start_time) {
- throw new Error("Umami start_time is empty");
- }
- if (!token) {
- throw new Error("Umami token is empty");
- }
- // 构造请求参数
- const params = new URLSearchParams({
- startAt: start_time,
- endAt: end_time,
- });
- // 构造请求头
- const request_header = {
- method: "GET",
- headers: {
- "Content-Type": "application/json",
- "x-umami-api-key": "oZKCH3msvqt10VlXKwoJvHclmaS4bVx0",
- },
- };
- // 获取站点统计数据
- async function siteStats() {
- try {
- const response = await fetch(`${request_url}?${params}`, request_header);
- const data = await response.json();
- const uniqueVisitors = data.uniques.value; // 获取独立访客数
- const pageViews = data.pageviews.value; // 获取页面浏览量
- let pvCtn = document.querySelector("#umami-site-pv-container");
- if (pvCtn) {
- let ele = document.querySelector("#umami-site-pv");
- if (ele) {
- ele.textContent = pageViews; // 设置页面浏览量
- pvCtn.style.display = "inline"; // 将元素显示出来
- }
- }
- let uvCtn = document.querySelector("#umami-site-uv-container");
- if (uvCtn) {
- let ele = document.querySelector("#umami-site-uv");
- if (ele) {
- ele.textContent = uniqueVisitors;
- uvCtn.style.display = "inline";
- }
- }
- } catch (error) {
- console.error(error);
- return "-1";
- }
- }
- // 获取页面浏览量
- async function pageStats(path) {
- try {
- const response = await fetch(`${request_url}?${params}&url=${path}`, request_header);
- const data = await response.json();
- const pageViews = data.pageviews.value;
- let viewCtn = document.querySelector("#umami-page-views-container");
- if (viewCtn) {
- let ele = document.querySelector("#umami-page-views");
- if (ele) {
- ele.textContent = pageViews;
- viewCtn.style.display = "inline";
- }
- }
- } catch (error) {
- console.error(error);
- return "-1";
- }
- }
- siteStats();
- // 获取页面容器
- let viewCtn = document.querySelector("#umami-page-views-container");
- // 如果页面容器存在,则获取页面浏览量
- if (viewCtn) {
- let path = window.location.pathname;
- let target = decodeURI(path.replace(/\/*(index.html)?$/, "/"));
- pageStats(target);
- }
|