できること:PCが何らかの理由でオフラインになると、LINEに通知が来ないことから、それが発覚する
PythonとLINE Notifyを用いて、WIndowsがインターネットに接続していることを個人のトークに通知するアプリを作りました。
- まず.pyの実行ファイルを作り
- それを.exeファイルに変換してPython未インストールの端末でも稼働するようにしました。
- 最後にWindowsタスクスケジューラーで定期的に実行させます。
動機
私は主にアニメの録画目的のTS抜きをしており、アニメのタイトルを特定のフォーマットに従って変換する際にインターネット接続が要求され、勝手にオフラインになると困る。
また、Windowsが勝手に更新していたり、その他不慮のログアウト・シャットダウン・電源喪失などが起こった際にそれを感知するため。(「Lineに通知する.exeファイル」をWindowsタスクスケジューラーで定期的に実行させるように設定しておけば、「Lineに通知が来ない=何かPCが不調」とわかる。)
作り方
前提条件と流れ
- Windows搭載のPC
- Python開発環境
- LINEアカウント(開発者用のでなくてOK)
- LINEグループ作成
- LINENotify登録
- Pythonプログラムを書く
- .exeファイルにする
- タスクスケジューラで定期的に実行させる
- 完了!
1,LineNotifyに登録
あらかじめ『PC安否確認』というメンバーが自分のみのグループを作成しておきます。
- LineNotifyのページ右上から「ログイン」
- 「トークンを発行する」ボタンを押しアクセストークンを発行
- アクセストークンをコピーしてメモしておく(閉じたら二度と再表示されない)
- トークン名と通知の送信先(LINEのトークルーム)を設定(予め作成したグループを選択)
- トークン名とトークルームを設定したら「発行する」をクリック
- 完了!
今回は以下のような設定にしました。
- グループ名:Ryzen PC(メンバーは自分とLineNotify公式アカウントのみ)
- トークン名:RyzenRecordPC安否確認
2,Pythonアプリを作成
以下のプログラムをコピーして、メモ帳などに貼り付けます。
アクセストークン( ACCESS_TOKEN )を先程メモしたやつに置き換えて、メッセージを好きなものにします。
import requests
# 発行されたトークンに置き換える
ACCESS_TOKEN = "Lni5cQpItCMZc88ef3xx3IS9ICX40DAOfl5t3Uw7MQ7"
headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
data = {
"message": "好きなメッセージ。録画PCは現在稼働しています。とか"
}
requests.post(
"https://notify-api.line.me/api/notify",
headers=headers,
data=data,
)
「Notify.py」とか適当な名前をつけて保存します。※拡張子が.txtでなく.pyであるようにしましょう!
PythonがインストールされたPCで使うだけならもう完成です。
この.pyファイルを実行すると、以下のようにメッセージが送られるハズです。受信できたら成功!
3回受信しているのが3回押したせいです。1回実行するごとに1回だけ受信します。
3,.pyを.exeに変換する
私の録画PCにはPythonがインストールされていないので、その関係で.exeに変換します。
アクセストークンもメッセージもカスタマイズしないといけないので.exeにしたところで、その実行ファイル自体を配布できない(しても意味がない)のが悲しいところですね。
- 「WINキー」と「Xキー」を同時押し
- 「WindowsPowerShell」を起動
- 「py -m pip install PyInstaller」と入力
- 「cd C:\Users\aaa\python」左の一例のように入力(.pyファイルのあるディレクトリを指定)
- 「pyinstaller Notify.py –onefile –noconsole」と入力
- 完了!
これで、notyfy.pyが置いてあるフォルダの中にフォルダが生成されているので色々探してみてください。多分Notify.exeがあります。
面倒ならEverythingというファイル検索ソフトで「Notify.exe」を検索した方が早いです。
4,WIndowsタスクスケジューラーで定期的に実行
1,「タスク スケジューラ」を起動
「タスク」と検索して、「タスク スケジューラ」を起動します。
ここでは午前7時と午後5時にNotify.exeを実行させるよう設定します。
2,「タスクを作成」
「タスク スケジューラ」右側の「タスクを作成」をクリックします。
全般設定
以下の画像のように設定します。
※「ログオンしているときのみ実行」にしないと不慮のログアウトを感知できなくなります!
トリガー
「トリガー」は、ご覧のようにしました。右下の「新規」から作成します。
操作
ここはブログの記事と異なる名前ですが、左下の「新規」からNotify.exeを指定すればOKです。
条件
「条件」は何もチェックしません。
設定
「設定」は、以下のようにします。
上から3番目の「失敗時の再起動の間隔」は短めで3度程度がおすすめです。
履歴
何も変更せず、履歴は無効でOKです。
3,タスクが正常に実行されていると…
正常に設定し終えるとこのようになります。
そして実行されていれば、こうなります。
まとめ
できること:PCが何らかの理由でオフラインになると、LINEに通知が来ないことから、それが発覚する。
実現手順
- LINEグループ作成
- LINENotify登録
- Pythonプログラムを書く
- .exeファイルにする
- タスクスケジューラで定期的に実行させる
- 完了!
pythonをVSCodeで書く全ての人に捧げたい記事がこちら。
pythonで作った他のスクリプトです。併せてどうぞ!!!