一直使用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
2
3
4
5
6
7
async function daily_poem(tp) {
const response = await tp.obsidian.request('https://v1.jinrishici.com/all/');
const { content,origin,author } = JSON.parse(response) ;
return `>[!quote] \n ${content} <cite style="text-align: right; display: block;" > — ${author}·《${origin}》</cite>`
}

module.exports = daily_poem;

代码中对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元素,使用选择器来获取我们想要的数据,可玩性更高了。

References

  1. 使用脚本自定义用户函数
  2. Obsidian内置函数

本站由 Hank Zhao 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
本站总访问量