-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c4f7ac7
commit fa4319d
Showing
5 changed files
with
170 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
// 从配置文件中获取 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); | ||
} |