dataview图书分类模板

Weread 微信读书导出插件

#weread #dataview图书分类模板

展示

代码实现

代码的创新点是 可以提取在 原数据内的分类,不受 yaml 的要求,使用默认的导出模版,可以提取出分类,再按照一级分类,分组建表

```dataviewjs
const pages = dv.pages('"2-Outputs/笔记"')

Promise.all(pages.map(async (p) =>{
  let result = await app.vault.readRaw(p.file.path)
  let classes = '未分类'
    result.split('\n').some((w) => {
      if (w.includes('> - 分类')) {
        classes = w.split(':')[1].split('-')[0]
        return true
      }
      if (w.includes('# 高亮划线')) return true
    })
    p.classes = classes
})).then( ()=>{
for (let page of pages.groupBy((p) =>p.classes)) {

dv.header("2",page.key )
let data =[]
page.rows.map( m => {
data.push([`![|40](${m.cover})`,m.file.link,m.author,m.readingTime,m.progress,m.lastreaddate])
})

// 按最后阅读时间排序
dv.table(["封面","名字","作者","阅读时间","进度","最后阅读时间"],data.sort((a,b)=>b[5].ts - a[5].ts ))
}
})

```

笔记的yaml



1 个赞

非常不错,解决我的痛点了

1 个赞

第二种 分类放在 yaml 内

不需要对文件解析,速度更快

p?.categorycategory 改成你自己定义的属性

```dataviewjs
const pages = dv.pages('"2-Outputs/笔记"')

// p?.category 中 category 改成你自己定义的属性
for (let page of pages.groupBy((p) => p?.category?.split('-')[0] ?? "未分类")) {
console.log(page)
dv.header("2",page.key )
let data =[]
page.rows.map( m => {
data.push([`![|40](${m.cover})`,m.file.link,m.author,m.readingTime,m.progress,m.lastreaddate])
})

// 按最后阅读时间排序
dv.table(["封面","名字","作者","阅读时间","进度","最后阅读时间"],data.sort((a,b)=>b[5].ts - a[5].ts ))
}
```