Dataviewjs的奇技淫巧

1. 书签插件使用

Obsidian提供了核心插件—书签(Bookmarks),让用户对关注的东西进行标记,可以进一步利用标签组(类似文件夹)进行组织,通过命令或者菜单可以标记:

  • 文件(含Markdown笔记文件和非Markdown附件文件)
  • 文件夹
  • Markdown笔记文件的标题(Heading)、段落(block)
  • Obsidian的核心插件-搜索(search)的搜索条件。

2. Dataview插件检索

Dataview插件在文件属性中给出了starred,这是一个Boolean值,如果文件被书签插件进行了关注,则为true

const files = dv.pages().filter(f=>f.file.starred)
dv.header(4,"被书签化标记的文件")
const files = dv.pages().filter(f=>f.file.starred)
dv.list(files.map(f=>f.file.path))

3. Bookmark插件检索

const bookmarkfiles = app.internalPlugins.getEnabledPluginById("bookmarks").getBookmarks()

通过书签插件获取的书签信息,包含了:

  1. 书签类型(type),包括:file、search、folder、group;
  2. 文件路径(path)
  3. 子路径(subpath)
  4. 标签时间(ctime),number类型的,应该可以使用moment进行转换。
  5. 标签标题(title),打标签时输入的名字,没有输入为空;
  6. 标签分组(group),在items中记录了标签的type、path、ctime、title等信息。

下面简单给出了文件类型的标签信息表。

const bookmarkfiles = app.internalPlugins.getEnabledPluginById("bookmarks").getBookmarks();

dv.header(4,"文件类型书签")
dv.table(["标签标题","标签类型","文件路径","打标时间"],bookmarkfiles.filter(bf=>{return (bf.type==='file')}).map(bf=>[bf.title,bf.type,bf.path,moment(bf.ctime).format("LLL")]))

吐槽:文件中已经删除了曾经打标的welcome.md文件,但是还是检索到了书签信息,这应该是一个 :beetle: bug :beetle: 吧。

1 个赞