QuickAdd 脚本 - 随机漫游笔记

QuickAdd 脚本 - 随机漫游笔记

前言

随机笔记是很有乐趣的:很多用户发现这个功能能让他们重新想起那些已经遗忘了的想法,从而将这些想法利用起来。它还给大脑带来与我们沉迷于社交媒体相同的刺激。

随机漫游笔记是一种充满惊喜和发现的笔记方式。它不同于传统的笔记系统,没有严格的分类和结构,而是让你的笔记像一颗颗散落的种子,在心灵的原野上自由生长。它像一个神奇的指南针,指引你走向被遗忘的田野。在随机漫游的过程中,你可能会偶然发现一些意想不到的联系,这些联系或许能激发出新的灵感,或者解决一直困扰你的问题。

核心插件 漫游笔记 的漫游范围是全库,很多时候,我们并不想随机漫游到某些笔记

已经有一些插件对此进行了优化:advanced-random-noteimproved-random-notecanvas-randomnotesmart-random-note

还有  obsidian-spotlight 插件,可以将随机的粒度缩小到块 a block of note

而我使用自己写的脚本,既少装个插件,而且可控性高,自由筛选,添加一些个性化功能

功能

  1. 可按照文件夹筛选漫游范围
  2. 不考虑笔记的新增/删除/修改,每一次随机都是独立的
  3. 最近半个月回顾过的不要重复回顾:把回顾时间写进笔记的 properties 里  random_review_date 📋,然后在筛选时进行比较

代码

module.exports = async (params) => {
    const currentDate = new Date();
    const halfMonthAgo = new Date(
        currentDate.getTime() - 15 * 24 * 60 * 60 * 1000
    );

    const files = app.vault
        .getMarkdownFiles()
        .filter((f) => f.path.startsWith("4-zettelkasten/")) //更改目标文件夹
        .filter((f) => {
        const reviewDate = app.metadataCache.getFileCache(f)?.frontmatter?.random_review_date;
            return (
                !reviewDate ||
                reviewDate == null ||
                new Date(reviewDate) <= halfMonthAgo
            );
        });

    if (files.length == 0) {
        new Notice("没有近半个月未漫游的笔记");
        return;
    }

    const randomIndex = Math.floor(Math.random() * files.length);
    const randomFile = files[randomIndex];
    app.workspace.openLinkText(randomFile.path, "");
    const KEY = "random_review_date";
    app.fileManager.processFrontMatter(randomFile, (fm) => {
        fm[KEY] = currentDate.toISOString().slice(0, 10);
    });
};

讨论

若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。



反馈交流

其他渠道

版权声明