Obsidian 每日一句组件
// 每日自动更新的中文名句 (24小时刷新)
(async () => {
// 配置区(可自定义)
const CACHE_KEY = 'dailyChineseQuote'; // 本地存储键名
const API_URL = 'https://v1.hitokoto.cn/?c=i'; // 诗词类API
// 尝试读取缓存
const cachedData = localStorage.getItem(CACHE_KEY);
const now = new Date().getTime();
// 如果有缓存且未过期
if (cachedData) {
const { quote, author, timestamp } = JSON.parse(cachedData);
if (now - timestamp < 86400000) { // 24小时 = 86400000毫秒
return renderQuote(quote, author);
}
}
// 无缓存或已过期时请求新数据
try {
const response = await fetch(API_URL);
const data = await response.json();
// 缓存新数据(带时间戳)
localStorage.setItem(CACHE_KEY, JSON.stringify({
quote: data.hitokoto,
author: data.from,
timestamp: now
}));
renderQuote(data.hitokoto, data.from);
} catch (error) {
dv.paragraph("> [!error] 今日名句获取失败,可尝试手动刷新");
console.error('[名句更新失败]', error);
}
// 渲染函数
function renderQuote(quote, author) {
dv.paragraph(`> [!跑马灯]\n${quote}\n<cite style="text-align: right; display: block;">——《${author}》</cite>`);
}
})();