Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 

文章代表作者个人观点,少数派仅对标题和排版略作修改。


本文介绍了基于 Notion 强大的数据库和完善的 API,通过 Quicker 和快捷指令导入我们的书影音数据,从而构建一个属于自己的「豆瓣」。

豆瓣是一款我很喜欢的应用,可以标记自己看过的书影音并进行评分,同时其综合评分在筛选时也有一定的参考价值。但是随着国内网络环境的恶化,豆瓣上一些书影音的条目经常会「被消失」,甚至你的豆瓣账号也可能因各种各样的原因被封禁,导致你之前标记的所有数据在一夜之间就全都消失了。以上种种原因,使我一个多年的豆瓣忠实用户萌生了去意。

其实,豆瓣也有一些替代品,比如国外的 IMDBGoodreads,但是这些平台大部分国内用户无法流畅访问,而且它们不支持中文,对于国内书影音的评分也大多没有什么参考价值。后来,出现了去中心化的平台 NeoDB,需要通过 Mastodon 账户进行登录,其书影音的数据也基本来自于豆瓣或者用户的提交。

寻找了一圈,没有发现一个好用顺手的豆瓣替代品。既然这样,不如索性通过 Notion 强大的数据库构建一个自己的书影音系统。同时,Notion 还拥有完善的 API 支持,可以很方便地自动导入数据。接下来,我会分为书籍、影视、音乐三个部分来介绍该系统,并提供了相应的数据库模板、Quicker 动作和快捷指令。不过,在此之前,我们还需要一些准备工作。

准备工作

豆瓣历史数据导入

如果你的历史数据比较少,可以考虑跳过这部分,通过该方法导入的数据会有缺失,因此直接使用下文介绍的方法,将数据一项项手动导入是个更好的选择。

由于豆瓣自身不支持导出自己标记的内容,所以我们需要借助浏览器扩展 豆伴,其是一个豆瓣账号的备份工具。安装完成后,先在 豆瓣 网页中登录你的帐号,然后打开该扩展,点击新建任务,选择你要备份的项目,最后点击新建,等待任务备份完成后,就可以在设置中浏览备份了。

豆伴

点击右上角的「导出数据」,可以将我们标记的内容导出为一个 xlsx 表格。其中包含标题、简介、豆瓣评分、豆瓣链接、标记时间,个人评分,评论。如果你要将这些数据导入 Notion ,需要先将该 xlsx 表格另存为 CSV 文件,然后新建一个 Notion 页面,依次选择「Import」、「CSV」,最后上传文件并等待导入完成即可。

通过这种方式导入的数据并不完整,如果你想导入更多的数据,比如集数、海报、单集时长、上映时间、页数,就需要采用我下文介绍的方法。同时,我在下文进行介绍时,会以我分享的模板为例,如果你选择通过这种方式导入历史数据,那么需要将你自建的数据库属性的名称和类型改为和我的模板相同,否则无法通过我分享的 Quicker 动作和快捷指令自动导入新数据。

Notion integration 创建

Notion API 的使用依赖于 integration,所以我们需要先创建一个自己的 Notion integration。首先进入 My integrations,点击「New integration」,「Name」和「Logo」随便填,接着选择要关联的 Workspace,然后在「User Capabilities」中选择第一项「No user information」,最后点击「Submit」,在自动跳转的新页面中会有该 integration 的 Token,请妥善保存,下文会多次用到。

创建 integration

安装 Quicker Connector 浏览器扩展

通过 Quicker 导入数据需要获取豆瓣网页的信息,所以我们需要先安装 Quicker Connector 浏览器扩展。安装完成后,打开网址同步并授予权限。如果连接状态显示为「已连接」,则表示与 Quicker 客户端匹配成功,可以正常使用了。

Quicker Connector 浏览器扩展

书籍

数据库

首先,打开我分享的「书籍库」模板,然后点击右上角的「Duplicate」,将该数据库复制到你自己的 Notion Workspace 中。该数据库一共包含了 15 项属性,其中封面、书名、作者、出版社、页数、豆瓣评分、豆瓣链接、ISBN 通过豆瓣自动导入,日期、类别、个人评分(十分制)、文件需要我们手动填写,状态(包括想读、在读、读过、放弃,默认为想读)、综合评分(豆瓣评分和个人评分的平均值)、创建时间由 Notion 自动生成。

此外,该数据库一共有六种不同的视图。「总览」中以 Table 的形式展示了所有书籍的各项属性,「想读」、「在读」、「读过」中,以 Gallery 的形式分别展示了对应状态的书籍,「最佳」中包含了个人评分为 10 的书籍,「年度统计」中包含了今年读过的所有书籍,并自动统计了总页数,方便进行年度总结。

书籍库

如果你对模板不满意,可以自行调整数据库的视图形式、显示属性、过滤选项、排序规则,但是请不要更改通过豆瓣自动导入的八项属性的名称和类型,否则无法通过下文的 Quicker 动作导入新数据。影视库与音乐库中自动导入的属性也同样不要更改其名称和类型,下文不再赘述。

导入新数据

第一步是将上文创建的 integration 添加到书籍库中,点击页面右上角的「•••」,然后在「Connections」中搜索并添加对应的 integration 即可。

添加 integration

第二步是安装 Quicker 动作 「豆瓣书籍导入 Notion」,然后进入该动作的编辑页面,在右侧的变量「token」中填入上文得到的 integration Token,在「database_id」中填入书籍库网址中 ? 前和 \ 后的字符串,这是 Database ID,在「notion_url」中填入书籍库的整个网址,最后保存退出即可。

Database ID

第三步是在我们需要导入的豆瓣读书网页上运行该动作,就可以将书籍的各项信息自动导入到 Notion 的书籍库中,在导入完成后还会自动打开书籍库的页面,方便你进行二次编辑。

导入书籍

影视

数据库

首先,打开我分享的「影视库」模板,然后点击右上角的「Duplicate」,将该数据库复制到你自己的 Notion Workspace 中。相比于书籍库,影视库会更加复杂,包含更多的属性,总共有 19 个。其中,海报、名称、类型、标签、制片地区、导演(如有多个导演,默认导入前三个)、豆瓣评分、豆瓣链接、单集时长、集数、上映日期通过豆瓣自动导入,日期、个人评分、Trakt 链接需要我们手动填写,状态(包括想看、在看、看过、放弃,默认为想看)、综合评分(豆瓣评分与个人评分的平均值)、总时长(集数乘以单集时长)、上映状态(根据上映日期进行判断,默认为未上映)、创建时间由 Notion 自动生成。

此外,该数据库一共有八种不同的视图,「总览」中以 Table 的形式展示了所有影视的各项属性,「想看」「在看」「看过」中分别包含了对应状态的影视,「最佳」中包含了个人评分为 10 的影视,「年度统计」中包含了今年看过的所有影视,并自动统计了观看的总时长,方便进行年度总结。「未上映」中包含了上映状态为未上映的影视,「待补充」中包含了有部分属性为空的影视,方便我们日后进行手动补充。

影视库

导入新数据

影视的导入方法和上文的书籍基本相同。首先,在影视库中添加 integration,然后安装 Quicker 动作 「豆瓣影视导入 Notion」,填入三项变量的默认值,其中「token」是相同的,其余两项需要修改为影视库的 Database ID 和网址。最后,在需要导入的豆瓣电影网页上运行该 Quicker 动作,就可以将影视的各项信息自动导入到 Notion 的影视库中。在导入完成后,还会自动打开影视库和 Trakt 的搜索界面,方便进行二次编辑。

导入影视

Trakt 是一款影视追踪应用,能够在剧集更新或者电影上映时提醒你,详细的介绍可以参看少数派的这篇文章:记不住电视剧看到哪集的你,可以试试 Trakt。其现在已经推出了官方的 iOS 客户端,可以免费使用。如果你没有这方面的需求,可以在影视库中删除该列属性,并在 Quicker 动作中删除「在 Trakt 中进行搜索」的步骤。

音乐

豆瓣中音乐部分的数据质量相比于书籍和影视要差不少,且更注重于整张专辑,因此构建音乐库我们需要另辟蹊径,将我们现有的歌单导入到 Notion 中,而非豆瓣中标记的专辑。下文以 Apple Music 为例进行介绍。

歌单导出

由于 Apple Music 本身不支持导出歌单,所以我们需要借助 Tune My Music 。Tune My Music 是一款在不同的音乐服务平台之间迁移歌单的工具,支持众多的音乐服务,比如 Apple Music、Spotify、YouTube Music,免费版只支持一次性导出 500 首歌曲,如果你单个播放列表的歌曲数量很多,可以考虑拆分成多次导出。

打开网站后,首先创建或登录账号,然后点击「让我们开始吧」,随后选择 Apple Music 音乐服务,登录我们的 Apple 账号,接着选择要导出的播放列表,点击下一步,再选择「导出文件」,选择 CSV 格式,最后点击「开始移动我的音乐」。导出完成后,会自动下载一个名为「My Apple Playlist」的 CSV 文件。

Tune My Music

请不要直接打开该 CSV 文件,因为其中的中文内容由于编码的原因会显示为乱码。我们先在 Excel 中新建一个空白的工作簿,接着点击上方的「数据」,选择「从文本/CSV」,然后导入我们上文得到的文件。Excel 会自动分析格式、分隔符等信息,点击「加载」后就可以得到一个中文显示正常的 xlsx 文件,最后再将该文件另存为可以导入 Notion 的 「CSV UTF-8逗号分隔(*.csv)」文件。

从文本/CSV获取数据

在歌单导出完成后,如果你担心数据泄露,可以在 Apple Music 的账户中取消对 Tune My Music 的授权。

取消授权

数据库

首先打开我分享的「音乐库」模板,点击右上角的「Duplicate」,将该数据库复制到你自己的 Notion Workspace 中。该数据库是书影音三者中最简单的,只有 7 项属性,其中歌名、艺人、专辑是通过快捷指令自动导入的,播放列表和标签需要我们手动填写,状态(包括想听、在听、不听,默认为在听)和创建时间是由 Notion 自动生成的。

该数据库一共有四种不同的视图,「总览」中包含了所有音乐的各项属性,「播放列表」中包含了所选播放列表的歌曲,「艺人」中包含了所选艺人的歌曲,「专辑」中包含了所选专辑的歌曲,你可以自行调整过滤选项。

音乐库

最后,我们需要将上文导出的歌单导入该音乐库中。在导入之前,需要先修改该 CSV 文件,将「Track name」改为「歌名」,「Artist name」改为「艺人」,「Album」改为「专辑」,「Playlist name」改为「播放列表」,并将第一行「Column」和最后一列「Type」删除,保存并退出。然后点击音乐库页面右上角的「•••」,选择「Merge with CSV」,上传修改后的 CSV 文件,等待其导入完成即可。在导入完成后,可以将播放列表的属性类型改为「Select」或者「Multi-select」,方便下次快速选择。

导入新数据

和前文一样,先在音乐库中添加上文创建的 integration,然后安装 苹果音乐导入 Notion 快捷指令,在两处文本中分别填入 integration token,音乐库的 Database ID,然后保存退出。

苹果音乐导入 Notion

在播放 Apple Music 时,运行该快捷指令,就可以将当前播放音乐的歌名、艺人、专辑自动导入到音乐库中。为了更方便地使用,我们可以将该快捷指令添加到「辅助触控」中,具体方法是进入 iPhone 的设置,然后依次点击「辅助功能」、「触控」、「辅助触控」、「自定义顶层菜单」,找到并添加该快捷指令。添加完成后,就可以在需要导入时点击屏幕上的辅助触控球,快速运行快捷指令将当前播放的音乐信息导入到 Notion 的音乐库中了。

由于 Spotify、YouTube Music 不支持通过快捷指令获取音乐信息,所以需要借助 Zapier 等自动化平台通过喜欢等操作来触发导入,本文不作展开,有需要的可以自行研究。至于国内各大封闭的音乐平台,则不在本文的讨论范围内。

更多玩法

通过上述步骤,我们已经完成了书影音系统的底层构建,但是 Notion 数据库最强大的功能在于其丰富的可扩展性。例如,我们可以邀请朋友进入影视库进行协作,一起添加想看的电视剧,一起筛选想看的电影。还可以利用数据库的 Relation 和 Rollup 属性,将书影音库与日历进行关联,从而多维度展示我们一天的经历。当然,以上只是我的抛砖引玉,更多的玩法还是要靠大家自行探索,探索的过程也是 Notion 这类工具所能带给我们的一大乐趣。

存在的问题

诚然,没有什么系统是完美的,在我使用的过程中,还是遇到了一些小问题:

  • 豆瓣评分无法实时变动,一些新的书影音条目,评分会随着人数和时间发生比较大的变化,需要我们手动更改。
  • 部分图片无法正常显示,由于豆瓣图片链接的变动,小部分封面或者海报会失效,需要自己重新手动添加。
  • 时间过滤不正确,在「年度统计」的视图中,对于日期的过滤仅仅依赖于开始时间,如果一部剧的日期开始时间是 2022 年,结束时间是 2023 年,那么这部剧并不会包含在今年的过滤结果中,我已经向 Notion 反馈了这个问题。
  • Notion 老生常谈的性能问题,当数据库中积累的数据越来越多,对你设备的性能要求就越来越高,否则浏览时会有些许卡顿,尤其是移动端。

瑕不掩瑜,对于整个书影音系统的使用我个人的体验还是挺满意的。看到这里,有人可能会有疑问,Notion 不也是一个云端的应用吗?没错,但是 Notion 支持多种导出方式,我们可以通过定期备份,来实现云端一份数据,本地一份数据。

总结

如果你有许多的历史数据,那么前期的导出、整理、导入的工作量还是挺大的。不过当整个书影音的系统构建完成后,通过上文介绍的方法导入新数据就很方便了,整体的使用体验也会更加流畅。虽然我目前还在使用豆瓣来查看一些热门榜单、口碑榜单,从中寻找自己感兴趣的内容,但对于离开豆瓣的决定我并没有后悔。对于一个封闭的系统,我们要想办法打破禁锢,将数据掌握在自己的手中。