很多人会使用 obsidian 写日记,需要在日记中添加当天天气。既然已经使用电子日记,日期和时间都可以十分便捷的自动更新到笔记中,那么天气要怎么自动获取呢?

天气插件(不推荐)

截止到目前,obsidian 的插件市场已经更新了两款天气插件,分别是 OpenWeatherWeatherFetcher

OpenWeather 需要注册账号,配置 API,比较繁琐。 WeatherFetcher 需要自己输入指令生成,比自己手动输入天气区别不大,而且出现过多次拿不到当地信息的或者获取到错误位置信息的情况。

模板自动化(推荐)

安装 Chocolatey 软件管理自动化工具

检查是否已经安装 Chocolatey,终端输入

1
choco --version

如果没有输出版本号,则继续执行下面的安装步骤。如果输出版本号,则跳到下一步。

推荐官网安装方式,参考(Chocolatey Software | Installing Chocolatey)。

一般来说,windows 系统打开【administrative shell】,复制以下内容到命令行

1
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

其他系统或者安装出现问题,请参考官网步骤或者网上搜寻

安装 curl 命令工具

命令终端中输入命令

1
choco install curl

测试 curl 获取天气

命令终端中输入命令

1
curl wttr.in/Beijing?format=1

正常的情况下,终端上会输出北京市的天气信息和一些其他信息。

image.png

终端上成功输出天气后,可以进入下一步。

配置日记模板

  1. 创建每日日记的模板。比如 /_templates/_log

仅对于天气自动更新而言,日记模板的 front matter 中需要添加语句如下

1
2
3
---
weather: <% tp.user.getWeather() %>
---

image.png

  1. 配置【日记】创建来自模板文件下的

image.png

配置 obsidian 插件 templater

需要先从插件市场或者第三方来源安装插件 templater

  1. 安装后设置模板文件夹和上一步【模板】功能设置的模板文件夹相同。

image.png

  1. 打开选项 Trigger Templater on new file creation

image.png

  1. 下拉至 Enable User System Command Functions

  2. 添加 User Function ,如下

  • Function name: getWeather
  • System Command: curl wttr.in/Beijing?format=4

image.png

  1. 新创建当日日记,即可看见天气自动填写(必须是新创建日记或者文件)

image.png

wttr 格式

wttr 还有很多可选格式,参考(chubin/wttr.in: :partly_sunny: The right way to check the weather (github.com)

format 之后可以直接使用 1,2,3,4 四个默认的格式,也可以细致的使用更多格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    c    Weather condition,
C Weather condition textual name,
x Weather condition, plain-text symbol,
h Humidity,
t Temperature (Actual),
f Temperature (Feels Like),
w Wind,
l Location,
m Moon phase 🌑🌒🌓🌔🌕🌖🌗🌘,
M Moon day,
p Precipitation (mm/3 hours),
P Pressure (hPa),
u UV index (1-12),

D Dawn*,
S Sunrise*,
z Zenith*,
s Sunset*,
d Dusk*,
T Current time*,
Z Local timezone.

(*times are shown in the local timezone)

比如

1
curl wttr.in/Beijing\?format=”%l:+%c+%t+feels+like+%f\nSunrise:+%S\nSunset:++%s\nMoon:++++%m\n”

可以上网查询尝试替换,找到自己满意的使用格式。