分享个 macos 自动检测是否下雨的小工具

2020-08-26 12:24:26 +08:00
 xurunfei

由于楼主比较懒,想着如果未来几天要下雨,那就自动提醒我,不下雨就别提醒我,通知通过 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 拖进去就好

1990 次点击
所在节点    分享发现
12 条回复
tslling
2020-08-26 12:44:34 +08:00
“自动检测是否下雨”,总感觉怪怪的
sampeng
2020-08-26 12:54:55 +08:00
出去看一眼,完事
imn1
2020-08-26 13:32:56 +08:00
本来想问,如何分辨下雨还是楼上浇水……
还以为苹果硬件还能做这事
xurunfei
2020-08-26 13:57:13 +08:00
@tslling 哈哈,不要在意这些细节
@sampeng 未来,未来,总不能出去看一眼未来吧,未来几天的都能看
@imn1 那可不得了,你说的得去问问摄像头哈哈
yuhangch
2020-08-26 14:49:20 +08:00
懒人真的🐂🍺哈哈哈
lxfcool
2020-08-26 18:08:29 +08:00
之前也写过类似的 py, 直到某天很忙没用电脑, 导致当天没运行 py
再之后就挂到服务器上了, 邮件提醒了
murmur
2020-08-26 18:14:39 +08:00
这东西跟 mac 有啥关系,数据源也不行啊,至少得是彩云天气吧
murmur
2020-08-26 18:15:32 +08:00
说白了,实用性为 0,昨天天气预报就说今天下大雨,然后早晨改成晴转阴了,结果 5 点多真的下暴雨了,艹
morningtzh
2020-08-27 10:50:04 +08:00
天气预报没什么用,另外起床 hey Siri 就能解决啦~~
小米的闹钟,早上闹铃的时候也会播报天气和新闻~~
xurunfei
2020-08-27 11:35:56 +08:00
@murmur 天气预报一直都只是参考,还好吧,像我南方,夏天你就别奢望能准,一个小时变一次
@morningtzh 不太喜欢用 siri 哈哈,给我感觉有点傻傻的
KennyMcCormick
2020-08-27 16:59:56 +08:00
以为是人在室内,插件可以告诉我室外是否正在下雨。
xurunfei
2020-08-28 10:12:14 +08:00
@KennyMcCormick 那也可以,稍微改改,改为当前的天气 查询就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX