PythonとLine Notifyで遊ぼう.

はじめに.

Line Notify のAPI とPythonを用いて,Lineに通知を送信するプログラムを組んでみました.

さらにTkinterをつかうことで,手軽なGUIアプリも作ってみました.やはり目に見えるものはいいですね.モノづくりの実感をひしひしと感じることができます.

enter your token にLine Notifyで入手したアクセストークン,enter notification に送信したいメッセージを入力し,SEND ボタンを押すことで実行する仕組みです.

まずはシンプルなプログラム

まずはLine Notifyのアクセストークンを入手しましょう.

Line Notify の公式サイトに飛び,「ログイン」から自分のマイページにアクセスし,パーソナルアクセストークンを取得します.パーソナルアクセストークンが入手出来たらPythonを書きます.特にpipしなくても動くと思います.

import  requests

token = 'YOUR TOKEN'

def send_notify():
    message = "hello"
    line_header  = {
    'Content-Type' : 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer' + ' ' + token }
    line_message = 'message=' + message 
    req = requests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message)
    req.close()
    
send_notify()

tokenには,Line Notifyで入手したプライベートアクセストークンを書き換えてください.また,message =”hello”の部分を書き換えてスキなメッセージを送信することもできます.

tkinterでお気軽なGUIアプリ

PythonからGUIを構築,操作することができるTkinterを用いてGUIアプリを作っていきます.Tkinterはシンプルで書きやすく,実装しやすいのが特徴です.

import tkinter as tk
import requestscd 

root = tk.Tk()
root.title("notify system")
root.geometry("300x200")

def button_click():
    token = entry_token.get()
    message = entry_text.get("1.0", tk.END).strip()
    line_header  = {
    'Content-Type' : 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer' + ' ' + token }
    line_message = 'message=' + message 
    req = requests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message)
    req.close()

label_token = tk.Label(text="enter your token")
entry_token = tk.Entry(width=26)
label_notify = tk.Label(text="enter notification")
entry_text = tk.Text(width=30,height=5)
button = tk.Button(text="SEND",width=10,command=button_click)

label_token.place(x=55,y=15)
entry_token.place(x=55,y=40)
label_notify.place(x=55,y=65)
entry_text.place(x=55,y=87)
button.place(x=105,y=165)

root.mainloop()

こちらも特にpipなど必要なく実行できると思います.def button_click() の中身で token と message を入手し,送信しています.それ以外でGUIを構築しています.

root.geometry(“300×200”)でウインドウの大きさを指定.
label_token = tk.Label(text=”enter your token”) , label_notify = tk.Label(text=”enter notification”)でラベルを作成,entry_token = tk.Entry(width=26),entry_text = tk.Text(width=30,height=5)で入力欄を作成しました.

それぞれのウィジェットはplaceで直接座標指定しました.

このプログラムを実行すると,

Tkinterを使ってGUIアプリを作成することができました.実績解除.

ちなみに,こんな感じで通知が届きます.

ついでにクラス化(おまけ)

さらに機能を追加するため,またコードを読みやすくするためにクラス化しておきます.

import tkinter as tk
import requests

class Application():
    def __init__(self, master):
        self.master = master
        self.master.title("notify system") 
        self.master.geometry("300x200")  
        self.widget()

    def widget(self):
        # ウィジェットの作成
        self.label_token = tk.Label(text="enter your token")
        self.entry_token = tk.Entry(width=26)
        self.label_notify = tk.Label(text="enter notification")
        self.entry_text = tk.Text(width=30, height=5)
        self.button = tk.Button(text="SEND", width=10, command=self.button_click)

        # ウィジェットの配置
        self.label_token.place(x=55, y=15)
        self.entry_token.place(x=55, y=40)
        self.label_notify.place(x=55, y=65)
        self.entry_text.place(x=55, y=87)
        self.button.place(x=105, y=165)

    def button_click(self):
        token = self.entry_token.get()
        message = self.entry_text.get("1.0", tk.END).strip()
        line_header  = {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Authorization': 'Bearer ' + token
        }
        line_message = {'message': message}
        req = requests.post('https://notify-api.line.me/api/notify', headers=line_header, data=line_message)
        req.close()

def main():
    root = tk.Tk()
    app = Application(master=root)
    root.mainloop()

if __name__ == "__main__":
    main()

ついでにexe化(おまけのおまけ)

ついでにexe化もしてみました.pythonをexeにすることができる,pyinstaller を使います.
pyinstallerはpipしました.

pyinstaller --onefile test.py

–onefile で,一つのファイルにまとめます.

クラスやpyinstallerを使ってさらに機能を追加していくのもおもしろいかも.では.