Search 4 Truth

Search 4 Truth

Pythonと仮想通貨

【Python】LINE Notifyを使ってPythonから通知を送ってみる

LINE Notifyというサービスをご存知でしょうか。IFTTTやmythingsといったウェブサービスと連携して様々な通知を受け取ることができるLINEのサービスです。前回のブログで”LINE Notify”という固有名詞は出しませんでしたがこれもLINE Notifyを使って通知を送っています。

LINE notifyでは開発者向けにAPIを提供していてウェブサービスを連携しなくても通知を送ることができます。今回はPythonを使って通知を送るところまで紹介します。次回のブログではこれを応用し、スクレイピング結果をLINEで通知するプログラムを書きたいと思います。

使用した環境、モジュール

  • MacBook Air Early 2015 Sierra 10.12.6
  • Python 3.6.2
  • iTerm2(コマンドプロント)
  • requests(モジュール pip install requests でインストール)
  • アクセストークン

アクセストークンを取得する

1, 以下のリンクでアクセストークンを取得します。

https://notify-bot.line.me/my/

2, トークンを発行するを選択

f:id:lisbeths:20180110005528p:plain

3, 通知を行う方法を選択します。

"1:1でLINE Notifyから通知を受け取る"を選択するとLINE Notifyから直接通知が来ます。それ以外のグループを選択するとグループを通して通知が来ます。(グループを選択した場合はLINE Notifyをそのグループに招待する必要があります)トークン名を記入して(なんでもいい)発行するを選びましょう。

f:id:lisbeths:20180109212556p:plain


ちなみにトークン名は通知本文上部の”これ” です。

f:id:lisbeths:20180110003229p:plain

4, 発行されました。

このページから...二度と発行されませんと書いてありますが表示されたコードはという意味でいくらでも再発行は可能です。スクショするなりメモするなりしておきましょう。

f:id:lisbeths:20180110003628p:plain

コード

import requests

def line(Me):
    line_notify_token = 'アクセストークン' #先程発行したコードを貼ります
    line_notify_api = 'https://notify-api.line.me/api/notify'
    message = '\n' + Me 
    #変数messageに文字列をいれて送信します トークン名の隣に文字が来てしまうので最初に改行しました
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    line_notify = requests.post(line_notify_api, data=payload, headers=headers)

line('Hello World!!') #関数lineの引数に任意の文字列を入れます

実行するとアクセストークン作成時の画像のようにメッセージが送信されます。今回は通知を送るところまでです。次回は電車の遅延情報をスクレイピングしてLINEに通知を送る実践活用方法をご紹介します。

www.pypi.cf

おまけ

さっきのコードにおまけ機能として複数のアクセストークンを扱うコードを作ってみました。第二引数に変数numを代入して指定したアクセストークンから通知を送るものです。私は天気予報や電車の運行情報などでグループを作りグループごとにアクセストークンを発行しました。

import requests

def line(Me,num):
    if num == 0:
        line_notify_token = 'アセストークン1'
    if num == 1:
        line_notify_token = 'アセストークン2'
    if num == 2:
        line_notify_token = 'アセストークン3'
    line_notify_api = 'https://notify-api.line.me/api/notify'
    message = '\n' + Me
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    line_notify = requests.post(line_notify_api, data=payload, headers=headers)