查询了非常多的文档和教程,发现没啥人搞这个无聊的功能,于是自己尝试实现。
原先是想利用官方 api 的字数统计然后遍历文件实现的,但是发现 better-word-count 插件提供了现成且功能更多的 api,就该用该插件了。
步骤
-
安装 dataview,并开启 dataview js 功能。
-
安装 better-word-count 插件:
-
[可选] 开启 better-word-count 选项中的 Collect Statistics 选项卡,可用于日级别的统计,例如每日编辑 word, characters 等。
-
cv
// 查询第一个文件的创建日期
const firstFile = dv.pages("").file.sort(t = t.cday)[0];
const daysUsed = Math.floor((new Date() - firstFile.ctime) / (1000 * 60 * 60 * 24));
const hoursUsed = daysUsed * 24;
const totalPages = dv.pages().length;
// better-word-count api
const bwc = app.plugins.plugins["better-word-count"].api;
const totalWords = await bwc.getTotalWords();
const totalCharas = await bwc.getTotalCharacters();
// yyyy-mm-dd
const now = new Date().toISOString().slice(0, 10).replace('T', ' ');
const dateStr = `累计至 ${now} :`;
dv.paragraph(dateStr);
dv.list([
`使用 **Obsidian** **${daysUsed}** 天,**${hoursUsed}** 小时`,
`创建 **${totalPages}** 篇文章,总记 **${totalWords}** words, **${totalCharas}** characters`
]);
const todayWords = bwc.getDailyWords();
const todayCharas = bwc.getDailyCharacters();
dv.paragraph(`今日编辑 ${todayWords} words, ${todayCharas} characters`)
效果展示:
better-word-count api 还提供了其他可实现统计的功能,详细可查 better-word-count/src/api/api.ts at master · lukeleppan/better-word-count · GitHub