１分で実装！　PythonでLINE Notify

#はじめに
Pythonで長〜い処理をするときに、

**「終わるまで暇だけど、終わったらすぐ作業に取り掛かりたいから時間を無駄にしたくない！」**
**「エラーが起きたらすぐ対応したい！」
「けど、ずっとパソコンに張り付いて見てるのは疲れる」**

と、思っているそこの貴方！
この記事を読めば、一生そんな無駄な時間とはおさらば出来ます。

#LINE Notifyとは
LINEが提供しているAPIで、特別な認証なしにpythonのコードから自動でLINEにメッセージを送信できるようになります。（なお、これはLINEBotとは別物です）

#実装の流れ
記事のコードをコピペ（10秒）　-->　トークン取得（30秒）　-->　最後に少し手を加えて...　**完了！**

#実装
###コピペ
それでは、このコードを main.py なり、好きなファイルの末尾にコピペしてください。

```python:コピペコード.py
def notify(message):
        import requests

        url = "https://notify-api.line.me/api/notify"
        token = ""    # ここには後で取得するトークンを入力します
        headers = {"Authorization": "Bearer " + token}

        message = message
        payload = {"message": message}

        requests.post(url, headers=headers, params=payload)
```

###トークン取得
######（ここから画像が多いです、どんどん流して行ってもらって構いません）
トークンを取得します。
LINE Notifyのマイページを開きます。[リンクはこちら](https://notify-bot.line.me/my/)
ご自身のLINEアカウントでログインしてください。
<img width="2048" alt="qiita素材１.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364760/7219bf26-0d4f-b97e-7102-60c4a71b352b.png">
**「トークンを発行する」**を押します。
<img width="2048" alt="qiita素材２.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364760/da416a08-85b7-c2e4-6d08-6f06014e2570.png">
ここでは**「1:1でLINE Notifyから通知を受け取る」**を選択してください。（詳しくは後述）
<img width="2048" alt="qiita素材３.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364760/ca02daee-4d6c-af00-8f56-0be8b8cb79e3.png">
**トークン名**を記入してください、どんなものでも構いません。（ここでは**test** としています）
<img width="2048" alt="qiita素材４.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364760/1e9ea6d0-bf70-1c77-1061-ec75dbef4d46.png">
すると、トークンが発行されます。ここでは伏せてありますが、**「g7YIhv7W...」**と言ったような文字列が発行されます。これは**必ず**どこかにメモしておいてください。
もしメモを忘れてしまったら、もう一度新しいトークンを発行してください。（そんなに大ごとではありません） 
<img width="2048" alt="qiita素材５.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364760/ce91950f-8941-250a-c6cf-96e5c66b4697.png">
これでトークンの取得は完了です。
###仕上げ
それでは、取得したトークンをコピペコードに入力してください。

```python:コピペコード.py
def notify(message):
        import requests

        url = "https://notify-api.line.me/api/notify"
        token = "g7YIhv7W..."    # ここに取得したトークンを入力してください
        headers = {"Authorization": "Bearer " + token}

        message = message
        payload = {"message": message}

        requests.post(url, headers=headers, params=payload)
```

最後に、初めに**コピペコード**をペーストしたファイルに一行だけ書き加えます。
以下のコードを好きなところに挿入してください。

```python:仕上げ.py
message = "すべての処理が終了しました"    # ここには好きなメッセージを入力してください
notify(message)
```
これで完了です。
**notify(message)**が呼び出されたときにお手持ちのスマホやパソコンのLINEにメッセージが届くようになります。

###＜使用例＞
長い処理を実行するとき。

```python:使用例１.py

# 長い処理...
message = "処理が終了しました！"
notify(message)


def notify(message):
        import requests

        url = "https://notify-api.line.me/api/notify"
        token = "g7YIhv7W..."    # ここに取得したトークンを入力してください
        headers = {"Authorization": "Bearer " + token}

        message = message
        payload = {"message": message}
        
        requests.post(url, headers=headers, params=payload)
```

エラーが起こったとき。

```python:使用例２.py
while True:
    try:
        ...    # メインの処理
    except Exception as e:
        message = e
        notify(message)


def notify(message):
        import requests

        url = "https://notify-api.line.me/api/notify"
        token = "g7YIhv7W..."    # ここに取得したトークンを入力してください
        headers = {"Authorization": "Bearer " + token}

        message = message
        payload = {"message": message}
        
        requests.post(url, headers=headers, params=payload)
```


#最後に
このコピペコードのまま使用するのでもちろんOKですが、工夫の仕方によっていろんなことができます。ただ単に処理が終わったお知らせやエラーが起こったことを伝えるだけでなく、終了時間やどれくらいの時間がかかったか、どんなエラーが起こったかなどもお知らせすると面白いかもしれません。
また、今回はトークンを発行する際に**「1:1でLINE Notifyから通知を受け取る」**を選択しましたが、他にグループなども選択することができます。
いろいろ試して、自分だけのオリジナルテンプレートを作ってください。