
由于楼主比较懒,想着如果未来几天要下雨,那就自动提醒我,不下雨就别提醒我,通知通过 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 那也可以,稍微改改,改为当前的天气 查询就行了 |