由于楼主比较懒,想着如果未来几天要下雨,那就自动提醒我,不下雨就别提醒我,通知通过 macos 的通知提醒给用户
脚本代码如下 ak 为百度地图的秘钥,可以自己去申请一个,个人用免费的就够用了
#!/usr/local/bin/python3
# coding=utf-8
from urllib import request, parse
import json
from subprocess import Popen, PIPE
if __name__ == '__main__':
# 百度地图的 ak,需要自己去申请
ak='xxxx'
# 获取地理位置
locationUrl = "http://api.map.baidu.com/location/ip?ak=%s"%ak
response = request.urlopen(locationUrl)
read = response.read()
info = json.loads(read)
address = info["content"]["address"]
# 获取天气
url = "http://api.map.baidu.com/telematics/v3/weather?output=json&ak=%s&location="%ak
response = request.urlopen(url + parse.quote(address))
response_read = response.read()
weater = json.loads(response_read)
weater_data = weater["results"][0]["weather_data"]
# 判断是否下雨
hasWeater = False
msg = ''
msgDetail = ""
day = {1: '今天', 2: '明天', 3: '后天', 4: '大后天'}
i = 1
for we in weater_data:
encode = we['weather']
if '雨' in encode:
hasWeater = True
msg += day[i] + ','
msgDetail += day[i] + ' : ' + encode + ' '
i += 1
msg += '有雨'
args = ['display notification "' + msgDetail + '" with title "天气预报" subtitle "' + msg + '"']
if hasWeater:
p = Popen(['osascript', '-e'] + args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
crontab -e 写入
0 9,11,15,18 * * * python3 /User/.../weather.py
注: 文件地址需要全路径 我这里设置的是 9,11,15,18 点检查下,可以自己改
macos 新版本需要给 cron 弄下权限,这个当时找了我好久
系统偏好设置 > 安装性与隐私 > 完全磁盘访问权限 > 隐私 > 完全的磁盘访问权限 把 /usr/sbin/cron 拖进去就好
1
tslling 2020-08-26 12:44:34 +08:00 via Android
“自动检测是否下雨”,总感觉怪怪的
|
2
sampeng 2020-08-26 12:54:55 +08:00 via iPhone
出去看一眼,完事
|
3
imn1 2020-08-26 13:32:56 +08:00
本来想问,如何分辨下雨还是楼上浇水……
还以为苹果硬件还能做这事 |
4
xurunfei OP |
5
yuhangch 2020-08-26 14:49:20 +08:00
懒人真的🐂🍺哈哈哈
|
6
lxfcool 2020-08-26 18:08:29 +08:00
之前也写过类似的 py, 直到某天很忙没用电脑, 导致当天没运行 py
再之后就挂到服务器上了, 邮件提醒了 |
7
murmur 2020-08-26 18:14:39 +08:00
这东西跟 mac 有啥关系,数据源也不行啊,至少得是彩云天气吧
|
8
murmur 2020-08-26 18:15:32 +08:00
说白了,实用性为 0,昨天天气预报就说今天下大雨,然后早晨改成晴转阴了,结果 5 点多真的下暴雨了,艹
|
9
morningtzh 2020-08-27 10:50:04 +08:00
天气预报没什么用,另外起床 hey Siri 就能解决啦~~
小米的闹钟,早上闹铃的时候也会播报天气和新闻~~ |
10
xurunfei OP |
11
KennyMcCormick 2020-08-27 16:59:56 +08:00
以为是人在室内,插件可以告诉我室外是否正在下雨。
|
12
xurunfei OP @KennyMcCormick 那也可以,稍微改改,改为当前的天气 查询就行了
|