Day 28:专案07 - 天气小助理02 | LINE Notify

图片来源:https://3c.ltn.com.tw/news/45392

现在已经是人手一机的时代了,基本上大家每天起来後一定会做的事情就是打开手机检查讯息,其中LINE又几乎是每个人都有的通讯软件,比起将讯息印在终端机或存成txt档,传送LINE讯息肯定是更方便且更容易接收讯息的选择。今天就来使用LINE Notify,将气象资料用LINE传给我吧!

LINE Notify

LINE Notify是LINE一个特殊的官方帐号,是一个专门用来推送讯息的LINE机器人,特点是只要去申请一个服务提供者,就会以LINE Notify的帐号主动推送讯息给使用者! 而且最大的优点在於,他不像LINE Bot要收费,LINE Notify推送讯息是完全免费的! 适合用於传送客户通知或现有服务的错误讯息。

底下就来教你如何使用LINE Notify。

  1. 来到LINE Notify网页,登入你的LINE帐号。

  1. 登入後,点「个人页面」。

  1. 点发行存取权障底下的「发行权杖」。

  1. 输入权杖名称(通常是填功能名称,像是天气小助理),底下选择要推送讯息到哪个聊天室,如果只给自己看的话就选择「透过1对1聊天接收LINE Notify的通知」,填完後按「发行」。

  1. 发行後显示权杖,请务必将这个权杖记住,不然离开这页後就不会再显示罗!

  1. 画面上会出现目前申请的权杖,如果未来这个权杖不小心外流了,可以来这里解除。

传送测试讯息

取得权杖後就可以试着传送讯息了! LINE Notify使用POST的方式将权杖以及讯息送到LINE Notify的API,接着再将讯息传给这个权杖所绑定的使用者。

程序码如下:

import requests

def line_notify():

    token = "你的权杖"
    message = "Hello! 这是测试文字!"

    # line notify所需资料
    line_url = "https://notify-api.line.me/api/notify"
    line_header = {
        "Authorization": 'Bearer ' + token,
        "Content-Type": "application/x-www-form-urlencoded"
    }
    line_data = {
        "message": message
    }

    requests.post(url=line_url, headers=line_header, data=line_data)


if __name__ == '__main__':
    line_notify()

结果:

传送天气讯息

再来结合昨天的气象资讯,回传气象通知的讯息吧!

因为要传的参数有点多,所以我们将资料打包成tuple,虽然说传递上比较安全,但麻烦的就是要记住每个参数的索引值。

line_notify(tuple([location, start_time, end_time, weather_state, rain_prob, min_tem, comfort, max_tem]))

因为也有无法取得气象资讯的情况(status code不等於200),就传一个空的tuple就好。

line_notify(tuple())

再来就只要将资料依序填入讯息字串中就好了,这部分不需要跟我一模一样,你也可以客制化自己的讯息! 另外,如果收到的是空tuple,就是没有取得资料的情况,所以回传错误讯息就好。

感觉讯息太过死板吗? 我们可以加上一些简单的条件判断,在下雨机率很高、很冷或很热的时候,给你一句暖心的提醒! 假装是女朋友的提醒,安慰一下孤单寂寞觉得冷的心QQ

def line_notify(data):

    token = "你的权杖"
    message = ""

    if len(data) == 0:
        message += "\n[Error] 无法取得天气资讯"
    else:
        message += f"\n今天{data[0]}的天气: {data[3]}\n"
        message += f"温度: {data[5]}°C - {data[7]}°C\n"
        message += f"降雨机率: {data[4]}%\n"
        message += f"舒适度: {data[6]}\n"
        message += f"时间: {data[1]} ~ {data[2]}\n"

        if int(data[4]) > 70:
            message += "提醒您,今天很有可能会下雨,出门记得带把伞哦!"
        elif int(data[7]) > 33:
            message += "提醒您,今天很热,外出要小心中暑哦~"
        elif int(data[5]) < 10:
            message += "提醒您,今天很冷,记得穿暖一点再出门哦~"

    # line notify所需资料
    line_url = "https://notify-api.line.me/api/notify"
    line_header = {
        "Authorization": 'Bearer ' + token,
        "Content-Type": "application/x-www-form-urlencoded"
    }
    line_data = {
        "message": message
    }

    requests.post(url=line_url, headers=line_header, data=line_data)

结果还不错哦!

你也可以更改参数,试试看暖心提醒是否有发挥功能。

例如,将下雨机率改成90%:

最高温改成35度:

最低温改成5度:

小结

今天使用LINE Notify推送气象资讯的LINE讯息,也加上了暖心的提醒语,小明的问题应该已经解决了吧?

这时你才察觉到一个严重的问题,目前程序都是在我们的电脑上运行,而且要我按执行後才会推送讯息,但总不可能叫我电脑随时都开着,而且每天六点爬起来按执行吧? 就算小明是我好朋友,但还是没有比睡眠时间来的重要,那这下该怎麽办呢?

明天就要教你将程序部署到HEROKU云端主机上,并每天固定时间执行哦! 明天教的内容真的超实用(认真推),不看就亏大了!


如果喜欢这系列文章麻烦帮我按Like加订阅,你的支持是我创作最大的动力~

本系列文章以及范例程序码都同步更新在GitHub上,後续会持续的更新,如果喜欢也麻烦帮我按个星星吧~

有任何问题或建议,都欢迎在底下留言区提出,还请大家多多指教。


<<:  版控图

>>:  Day21 Arrays and More Data Structures (Ⅰ)

[DAY6]从0开始装k8s(1)-kind

图片来源github Kind Kind = Kubernetes in Docker,简单说就是...

[Day29] CI /CD with GitLab CI

credit: https://medium.com/@brilvio/how-i-impleme...

Spring Framework X Kotlin Day 25 Behavior Driven Development

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

[Day 16] Data! — 资料就是我的超能力

Data is the hardest part of ML and the most impor...

Day.23 「更加认识 DOM,并初次了解事件绑定」 —— JavaScript DOM

我们之前在 HTML 篇章有介绍 DOM,是 Document Object Model 的缩写!...