#以前的文章应该会视情况搬上来(黑 历 史),视频也有打算做个文字稿发一下什么的,总之敬请期待吧。","metadata":{"headings":[{"depth":2,"slug":"历程","text":"历程#"},{"depth":2,"slug":"技术","text":"技术#"},{"depth":2,"slug":"过去的遗留","text":"过去的遗留#"}],"localImagePaths":["image.png"],"remoteImagePaths":[],"frontmatter":{"title":"0xAbCd Log,堂堂复活!","published":"2025-08-11T00:00:00.000Z","description":"时隔三年,我的个人网站终于重建……","image":"cover.png","tags":["建站","Astro","Fuwari","Netlify"],"category":"技术","draft":false,"minutes":4,"words":725,"excerpt":"你已经历许多。现在,开启你伟大的探索吧:从早期网站的摇篮,到浩瀚星宇(?"},"imagePaths":["image.png"]}},"collection":"posts","slug":"site-revive"};
const umamiConfig = {"enable":true,"baseUrl":"https://us.umami.is","shareId":"43Xmt1sB9z6bG1e0","timezone":"Asia/Shanghai"};
// 获取文章浏览量统计
async function fetchPostCardViews(slug) {
if (!umamiConfig.enable) {
return;
}
try {
// 调用全局工具获取 Umami 分享数据
const { websiteId, token } = await getUmamiShareData(umamiConfig.baseUrl, umamiConfig.shareId);
// 第二步:获取统计数据
const currentTimestamp = Date.now();
const statsUrl = `${umamiConfig.baseUrl}/api/websites/${websiteId}/stats?startAt=0&endAt=${currentTimestamp}&unit=hour&timezone=${encodeURIComponent(umamiConfig.timezone)}&url=%2Fposts%2F${slug}%2F&compare=false`;
const statsResponse = await fetch(statsUrl, {
headers: {
'x-umami-share-token': token
}
});
if (statsResponse.status === 401) {
clearUmamiShareCache();
return await fetchPostCardViews(slug);
}
if (!statsResponse.ok) {
throw new Error('获取统计数据失败');
}
const statsData = await statsResponse.json();
const pageViews = statsData.pageviews?.value || 0;
const visits = statsData.visits?.value || 0;
const displayElement = document.getElementById(`page-views-${slug}`);
if (displayElement) {
displayElement.textContent = `浏览量 ${pageViews} · 访问数 ${visits}`;
}
} catch (error) {
console.error('Error fetching page views for', slug, ':', error);
const displayElement = document.getElementById(`page-views-${slug}`);
if (displayElement) {
displayElement.textContent = '统计不可用';
}
}
}
// 页面加载完成后获取统计数据
function initPostCardStats() {
const slug = entry.slug;
if (slug) {
fetchPostCardViews(slug);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPostCardStats);
} else {
initPostCardStats();
}
})();