はじめに.
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を使ってさらに機能を追加していくのもおもしろいかも.では.