请教:如何在日记笔记里自动加天气?

代码:

let nl = /<dd class="week">(.*?)<\/dd>/. exec (res)
let 农历 = nl[1]

调用:

<% 农历 %>

试试,我这边能正常显示。如果有问题就坐等大佬解答吧,我只不过是依样画葫芦 :rofl:

可以可以,非常可以。谢谢大神!

搭配 templater 插件,放在模板文件里。一楼大佬回答蛮清楚的了。

1 个赞

分享一段我自用的 templater 脚本,可以实现位置自动获取,效果如图:
image

<%* 
// 高德天气API,需要高德Key
let ipUrl = 'https://restapi.amap.com/v3/ip';
let weatherUrl = 'https://restapi.amap.com/v3/weather/weatherInfo'
let key = YOUR_KEY;

// 腾讯IP定位,需要腾讯Key
let tencentIpUrl = 'https://apis.map.qq.com/ws/location/v1/ip';
let tencentKey = YOUR_KEY;

let adcode = eval("(" + await request({url: tencentIpUrl + `?key=${tencentKey}`, method: "GET"}) + ")").result.ad_info.adcode

console.log("adcode: " + adcode)

let 位置 = ''
let 天气 = ''
let 温度 = ''
let 风向 = ''
await fetch(weatherUrl + `?key=${key}&city=${adcode}&extensions=all`)
.then(res => res.json())
.then((data) => {
	let info = data.forecasts[0]
	
	console.log("info:" + info)
	
	位置 = info.province + '-' + info.city
	天气 = '🌅' + info.casts[0].dayweather + ' / 🌃' + info.casts[0].nightweather
	温度 = '🌅' + info.casts[0].daytemp_float + '℃' + '/ 🌃' + info.casts[0].nighttemp_float + '℃'
})
-%>
🌻日期🌻 ::  <% tp.file.creation_date("YYYY MM DD dddd") %> 
⌚️时间⌚️ ::  <% tp.file.creation_date("HH:mm:ss") %> 
🌍位置🌍 ::  <% 位置 %>
☁️天气☁️ ::  <% 天气 %>
🌡️温度🌡️ ::  <% 温度 %> 
2 个赞

template 插件自己写脚本,或用 weather 插件

感谢分享,不过尝试你的脚本失败,发现几个问题

  1. let weatherUrl = 'https://restapi.amap.com/v3/weather/weatherInfo' 这个应该是高德地图的天气api,而不是注释的和风天气
  2. 高德地图天气api请求返回的数据脚本无法处理。

感谢您的反馈,注释错误已修正,能否给出第二点的错误信息,在我这里脚本是可以正常工作的

image

我的问题,之前的key是web端(js api),申请为 web服务才对。

image

没问题了,再次感谢分享。

我是在Android手机上使用Obsidian。通常这段代码都能正确获取天气信息。但是偶尔显示的却是前一天的天气信息, 并未正确获取网站上已经更新的天气信息。今天又这样了,很奇怪。

以前遇上过类似故障,莫名其妙就好了。这次故障已经持续一周了,同样的代码,电脑上正常,手机上总是获取的前一天的天气信息。搞不懂哦。

故障原因找到了,网页缓存的问题。

解决办法:GET请求URL后加随机数,让服务器认为不是相同的请求,将url: url 修改为url: url + new Date().getTime() 。

很尴尬,故障又出现了。添加随机数没解决问题。

现状:将URL后附加的参数从new date().gettime()修改为 tp.date.now(“YYYYMMDDHHmmss”) ,已连续五天都正常获取天气信息了。

是不是不能用了 直接复制显示报错哎

1 个赞

为啥这段代码时不时的就会报错无法运行啊,有时候又能用,求大佬解答