前言
核心思路是利用 RSS 获得豆瓣标记数据,利用 Notion 的 RSS 插件拿到豆瓣标记数据,这样数据就增量同步到 Notion
大致效果
我的这个「豆瓣标记数据自动同步 Notion」效果大概如下:
注意
-
如果不太理解什么是 RSS 的话,或许可以看一下这篇文章 高效获取信息,你需要这份 RSS 入门指南 - 少数派 ,如果还是不明白那就不明白吧
-
需要使用电脑才能完成本教程
操作流程
2.1 制造数据
也就是正常使用豆瓣,在豆瓣上标记影音即可
2.2 获取新增的数据
我个人目前是基于 RSSHub 提供的豆瓣 RSS 来做,有兴趣的也可以试一试豆瓣官方 RSS
RSSHub 提供的 RSS 或者 豆瓣官方提供的 RSS,两者的区别:
-
这两种方式提供的数据内容和数据格式有所区别
-
RSSHub 能够抓取到用户所有的广播,不仅是影音标记
-
RSSHub 的文档地址: 社交媒体 | RSSHub ,在这个链接里找到「用户广播」
-
豆瓣官方的 RSS 地址,在页面的右下角可以获得
-
RSSHub 需使用用户 ID,怎么获取呢
-
这样就能拿到一个 RSS 链接了:https://rsshub.app/douban/people/1000001/status
2.3 同步新增数据到 Notion
这里主要利用到的是 NotionFeed 这个工具,它可以将RSS内容同步到Notion中,实现在Notion中阅读RSS订阅文章的效果
如果不会使用的话,可以参考这个视频 NOTION RSS 作为浏览器订阅|NOTION FEED 配置使用演示_哔哩哔哩
但由于一旦数据来到 Notion 中,那么它就是可编辑的,因此我们就可以在它的基础上做一些工作
2.4 格式化 Notion 中的豆瓣数据
刚拿到的的原始数据大概长这个样子,可以看到里面充斥着各种广播(如果你是一个发广播的人的话)
那么我们要做的第一件事是筛选出来影音标记,这个可以通过增加 Filter 实现,想要筛选看过的影音的话,就用「看过」来筛选,同理也可以筛选「听过」、「想看」、「玩过」之类的
筛选完之后的数据大概是这样子,虽然数据已经拿到,但这个数据非常粗糙,所有的文字都集中在 Title 列中
从豆瓣用插件导出,放到 Notion 中的 Page 长这样(以后我都叫它标记 Page),所以我们目前的目标就是为了让两者适配,也就是有着同样的格式
如果说你的格式和我的不一样,那么你善用属性的排序和隐藏即可实现
2.5 标题处理
可以看到标记 Page 的第一列是标题,所以我们的第一步是提取出来标题,这里是这样做的,新建一个 Type 为 Formula 的列
点击 Formula 的「Edit」,因为标题两边都是书名号,所以可以通过书名号提取出标题,输入 replace(replace(prop("Title"), ".*《", ""), "》.*", "")
,就能够得到标题列
2.6 解析短评
由于书名号之后的就是短评,所以我这里先将打分和评论一起提取了出来,方便下一步处理,也是增加一个 Formula 列,公式为 replace(prop("Title"), ".*》", "")
,也就是拿到书名号后面的所有内容
然后在评论之上拿到短评,这里用了个讨巧的办法,因为一般来说大家都会打分,而这在评论开头的五个字符就是★或者☆,所以直接截取评论第五个之后的内容即可,slice(prop("评论"), 5)
2.7 解析打分
打分这个要麻烦一些,我从豆瓣导出的数据中,是直接的数字而不是★,所以==我在标记 Page 中加了一个公式==,
,将数字转换成星星
因为星星有时候是实心,有时候是空心,所以我们就不能通过字符替换的方式来进行星星的截取,这里我用的方法是计算评论存在几个「★」,具体是这么做的 length(replaceAll(prop("评论"), "[^★]", ""))
,这样就把星星转换成了数字评分
最终效果长这样,日期是自带的
2.8 手动同步
接下来就是手动同步,我们的目标格式是这样的
由于星星是自动生成的,需要事先空出来,所以我增加了一列空白列作为 PlaceHolder,接下来只要复制再粘贴到「标记 Page」中即可,==注意,这里是可以一次性全部复制的,不需要一行一行的复制==
到这里就大功告成了
补充
总之就是活用公式来做到数据的处理。
但现在还存在一些问题,大部分是因为 RSSHub 提供的内容有限,比如说图片没有特别好的解析方法,评论后面的字会被吞掉。