仕事の依頼はこちらから 依頼フォーム

【Python】LINE NotifyでLINEに通知する

PythonでLINE Notifyを使用してLINEアカウントへメッセージや画像付きメッセージを送信する方法を説明します。LINE Notify APIを介して操作を行うことで簡単にLINEに通知を行うことができますのでぜひ記事を読んでやってみていただければと思います。

そのためにはLINE Notify APIのトークンを発行する必要があります。以下の記事にLINE Notify APIの概要、トークン発行方法を説明していますのでまずはそちらをご覧ください。

目次

テキストメッセージの送信方法

APIを操作するにはrequestsモジュールを使用するのでまずはrequestsモジュールをインストールします。

pip install requests

以下のコードをコピペして定数TOKENの値に取得したトークンMESSAGEの値に送信したいテキストメッセージを設定して実行します。

import requests  # インストール必要


TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'  # 取得したトークンを設定
MESSAGE = 'こういう時、何を書けばいいかわからない'  # 送信するメッセージを設定


def main():
    url = 'https://notify-api.line.me/api/notify'
    headers = {'Authorization': f'Bearer {TOKEN}'}
    params = {'message': MESSAGE}

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


if __name__ == '__main__':
    main()

実行するとLINEアカウントに定数MESSAGEに設定したメッセージが送信されます。Softwareとなっている箇所はトークン発行時に設定したトークン名となります。

画像付きメッセージの送信方法

テキストメッセージを送信するときと同じくrequestsモジュールのインストールが必要となります。

以下のコードをコピペして今度は定数FILEPATHの値に追加で送信したい画像のファイルパスを設定して実行します。

import requests  # インストール必要


TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'  # 取得したトークンを設定
MESSAGE = 'こういう時、何を書けばいいかわからない'  # 送信するメッセージを設定
FILEPATH = './test.png'  # 送信するファイルのパスを設定


def main():
    url = 'https://notify-api.line.me/api/notify'
    headers = {'Authorization': f'Bearer {TOKEN}'}
    params = {'message': MESSAGE}

    with open(FILEPATH, 'rb') as f:
        files = {'imageFile': f}

        requests.post(url, headers=headers, params=params, files=files)


if __name__ == '__main__':
    main()

実行するとLINEアカウントにテキストメッセージに加えてFILEPATHに設定した画像が送信されます。

面倒なので自作モジュール化

便利だけど面倒だからこんなの覚えてらんねー

たしかにAuthorizationなんてスペル覚えるだけで大変ですからね

意味もよくわかんねーし

であれば自作モジュール化してしまいましょう

ということでLineNotifyというクラスを作成して自作モジュール化してしまいましょう。

import requests  # インストール必要


class LineNotify:
    token = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'  # 取得したトークンを設定
    url = 'https://notify-api.line.me/api/notify'

    @classmethod
    def send_message(cls, message):
        headers = {'Authorization': f'Bearer {cls.token}'}
        params = {'message': message}

        requests.post(cls.url, headers=headers, params=params)

    @classmethod
    def send_message_with_image(cls, message, filepath):
        headers = {'Authorization': f'Bearer {cls.token}'}
        params = {'message': message}

        with open(filepath, 'rb') as f:
            files = {'imageFile': f}

            requests.post(cls.url, headers=headers, params=params, files=files)

ポイントは以下のとおりです。

  • メソッドsend_messageでテキストメッセージを送信可能
  • メソッドsend_message_with_imageで画像付きメッセージを送信可能
  • クラス変数、クラスメソッドのみなのでインスタンス化不要

実際に使用するにはmyline.pyをインポートして以下のように使用します。インスタンス化不要でトークンを表示したり、メッセージを送信することが可能です。

from myline import LineNotify


MESSAGE = 'こういう時、何を書けばいいかわからない'  # 送信するメッセージを設定
FILEPATH = './test.png'  # 送信するファイルのパスを設定


def main():
    print(LineNotify.token)  # トークンを表示
    LineNotify.send_message(MESSAGE)  # テキストメッセージを送信
    LineNotify.send_message_with_image(MESSAGE, FILEPATH)  # 画像付きメッセージを送信


if __name__ == '__main__':
    main()

この記事が気に入ったら
フォローしてね!

シェアしていただけると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次