【Python】Python から Line Notify で LINEメッセージを送信する

2018年3月31日Python,開発

おはようございます。

Bitflyer で取得できる情報を LINE で通知するために、
とりあえず試しにプログラムを書いてみました。

ただのサンプルプログラムなのですが、プログラムは前回のものを流用しました。

【Python】BitflyerのTickerをSQLiteに突っ込む

スポンサーリンク

Line Notify の利用準備

次のURLにブラウザからアクセスし、LINEのアカウントでログインします。

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

アクセストークンの発行

アクセストークンの発行

ログイン後、アクセストークンの発行セクションにある、「トークンを発行する」ボタンをクリックします。

対象の選択

自分のLINEアカウントに登録されている、「自分」またはグループトークの選択画面が表示されるので、ひとまず自分を選択して「発行する」ボタンをクリックします。

トークンのコピー

発行されたトークンをコピーし、テキスト等に張り付けておきます。

ページを離れると発行されたトークンはどこからも確認できなくなってしまうので気を付けましょう。

連携の解除

マイページに戻ると、連携(トークンを発行した)設定が表示されるようになります。
解除する場合はこの画面より「解除」ボタンをクリックしてください。

画面の修正

Main.html

<div style="clear:both; padding-top:10px;">
   <div class="entry_title">
      <div class="pull_left">資産情報</div>
      <div class="pull_right">
                     <input type="button" value="更新" />
                     <input type="button" value="LINE送信" />
                 </div>
   </div>
   <table id="balanceTable">
      <tr><th>円</th><td id="jpy"></td><th>イーサクラシック</th><td id="etc"></td></tr>
      <tr><th>ビットコイン</th><td id="btc"></td><th>ライトコイン</th><td id="ltc"></td></tr>
      <tr><th>ビットコインキャッシュ</th><td id="bch"></td><th>モナコイン</th><td id="mona"></td></tr>
      <tr><th>イーサ</th><td id="eth"></td><th>リスク</th><td id="lsk"></td></tr>
   </table>
</div>

プログラムの修正

新規クラス追加

LineNotifyApi.py

# -*- coding: utf-8 -*-
"""
Created on 2018/03/14
@author: doraxdora
"""


import requests
import logging

api_url = "https://notify-api.line.me/api/notify"


class LineNotifyApi:
    """
    Line Notify を利用するためのツールクラス
    """

    def __init__(self, api_token=None):
        global api_url
        self.api_token = api_token
        self.api_url = api_url

    def send_message(self, message):

        headers = {
            "Content-Type": "application/x-www-form-urlencoded",
            "Authorization": "Bearer " + self.api_token
        }

        req = requests.post(self.api_url, headers=headers, data={"message": message})

        logging.info("送信結果:" + str(req.status_code))

リクエストハンドラ、URLマッピングの追加

BfTool.py

class SendLine(RequestHandler):
    """
    ティッカー情報の更新を停止
    """

    def initialize(self):
        logging.info("SendLine [initialize]")

    def post(self):
        logging.info("SendLine [post]")
        line = LineNotifyApi(api_token="uJ7TsKVodBmPJ6gnjcwmm17Ugj7qS66a34yZmXHuSx6")

        line.send_message("Python からの通知です。 Hello Python!")


app = tornado.web.Application([
    (r"/", MainHandler),
    (r"/ws", SendWebSocket),
    (r"/balance", GetBalanceHandler),
    (r"/execution", GetExecutionHandler),
    (r"/childOrder", GetChildOrderHandler),
    (r"/sendOrder", SendChildOrderHandler),
    (r"/cancelOrder", CancelChildOrderHandler),
    (r"/startTicker", StartTicker),
    (r"/stopTicker", StopTicker),
    (r"/sendLine", SendLine)
    ],
    template_path=os.path.join(os.getcwd(), "templates"),
    static_path=os.path.join(os.getcwd(), "static"),
    js_path=os.path.join(os.getcwd(), "js"),
)

ボタン押下時の処理を追加

script.js

/**
 * LINE送信
 */
function sendLine() {

   $.ajax({
      url: "http://localhost:8080/sendLine",
      type: "POST",
      success: function(jsonResponse) {
          console.log(jsonResponse);
      },
      error: function() {
      }
   });
}

メッセージを送ってみる

ということで、いつも通りサーバーを起動し、追加した「LINE送信」ボタンをクリックします。

LINE画面

無事にメッセージが届きました。

まとめ

とりあえずメッセージの送信ができたので、次回はこの仕組みで何か便利なことが出来たらいいなと思います。

ではでは。

 

スポンサーリンク


関連するコンテンツ

2018年3月31日Python,開発LINE,LINE Notify,Python,プログラミング

Posted by doradora