一直使用Templater的Quote功能,使用方法也很简单,直接使用<% tp.web.daily_quote() %>
,但是默认调用的接口是:https://api.quotable.io, 返回的英文的名言,如果想要中文的名言或者每日诗词等就没法做到。 好在Templater的作者还留了一个口子:用户脚本,用户可以自己按照CommomJS的规范来编写自己的脚本,文档参考这里:Templater User function,这里需要注意的是:不支持第三方node module!!
创建脚本
因此我们只需要调用一个今日诗词的接口就行了,这里选择了今日诗词的接口,接下来就是请求数据然后解析数据了。
然后由于obsidian的限制,我们不能直接引用第三方的node module,比如node-fetch
,好在Templater暴露了obsidian自身的接口,接口都在tp.obsidian
中,因此,我们可以利用Obsidian自身的request
方法来调用古诗词的api返回我们自己想要的内容,下面是示例代码:
1 | async function daily_poem(tp) { |
代码中对cite的位置做了调整,默认是向左对齐的,我改成了向右对齐,如果不喜欢的,可以手动修改。
使用脚本
保存脚本
复制上面的脚本代码保存为一个js文件,这里命名为daily_poem.js
,并将脚本存放在Vault中的一个文件夹中,笔者设置的是:Assets/Script
,你可以根据自己的实际需求设定,这个文件夹在下面使用的使用要用。
设定脚本所在的文件夹
在Daily Notes模板中使用
在自己的Daily Notes的模板中直接使用 <% tp.user.daily_poem(tp) %>
即可使用,这里必须要传tp进去,因为tp是Templater的全局变量,如果不手动传入,就不能调用obsidian的request方法。
下面是我在Daily Notes中使用的效果:
当然,除了调用现成的API处理json数据之外,如果访问的页面是原始HTML,还可以处理DOM元素,使用选择器来获取我们想要的数据,可玩性更高了。