TouchDesignerでLINEに通知を送る方法
こんにちは。TouchDesignerでLINEに通知を送りたいですよね。
特にWebSocketを使用してネットワークが切れていないかなと不安になっている中、通知してくれたほうが助かります。
調べていく中で、Slackを利用した通知方法などはありますが、LINEでしている人はいなかったと思うので、この記事でそのやり方を説明しようと思います。
前提条件
まず前提をお話します。この記事を書いてる人間、つまり私はド素人です。プログラミングを生業にしている訳ではありません。ご了承ください。
-
TouchDesigner
- バージョン:2022.35320
-
Python
- 3.9.5(TouchDesigner内部)
TouchDesignerはPythonを使用できますのでPythonはTouchDesigner内部のバージョンに依存します。2022は3.9.5みたいですが[1]、それ以前だと確か3.7あたりだったと思います。
実装
ここから実装に移ります。
LINE Notifyのトークンを取得
何かLINEに通知を送りたいと考えたことがある人は使ったことがあると思います。以下のリンクにアクセスしてLINEにログインし、アクセストークンを作成します。
ログインしたらマイページからトークンを発行します。トークンを発行する
から発行することが出来ます。
一番上に表示されるトークン名を記入してください。
というところに好きな名前を付けます。ここで例えばMac
と入力すると以下のようになります。
その次にLINE Notifyからの通知を受ける場所を設定します。1:1でLINE Notifyから通知を受け取る
とグループ
のいずれかを選択できます。1:1を選択すれば、LINE Notifyという名前のチャットルームに通知が来ます。ただし1:1だと複数のトークンが同じチャットに合わさってしまうので、それが嫌な場合はグループでも通知を受け取ることができるのでそちらにしたほうがいいかもしれません。プロジェクトごとに管理がしやすいかと思います。
発行する
をクリックすると発行されます。トークンが画面に現れたらコピーしておきましょう。ポップアップを閉じてしまうと二度と表示されなくなります。
これでひとまずトークンの取得は終わりです。
TouchDesigner
ここからはTouchDesignerに移ります。LINE Notifyのトークンを発行したのですぐに使いたい気持ちはわかりますがやるべきことがあります。それは外部ライブラリの参照です。
外部ライブラリの参照
TouchDesignerでは外部ライブラリをインストールすることができません。しかしターミナル等でインストールしたライブラリが格納されている場所をTouchDesignerに参照することで外部ライブラリを使用することが出来ます。ライブラリが保存されている場所を確認するのにpip show
を使用します。
pip show [ライブラリ名]
このコマンドを実行し、現れた結果の中にあるlocation
をコピーしておきます。
TouchDesignerに移り、Touchdesigner > Settings
もしくは⌘ + ,
で設定画面を表示します。
その中にある、Add External Python to Search Path
にチェックを入れ、すぐ下のPython 64-bit Module Path
に先ほどpip show
で確認したlocation
のパスを入力します。
これでTouchDesignerで外部ライブラリ(外部モジュール)を使用することが出来ます。
コード
基本的にはLINE Notify Python
と調べれば出てくるコードを使用することが出来ます。私が見つけたのはrequests
ライブラリを使用したコードですので事前にrequests
をインストールしておきます。
pip install requests
TouchDesignerでText DATを作成し、その中に記述していきます。
# me - this DAT
import requests
# LINE Notify トークン
token = 'your_LINE_TOKEN'
def sendLineNotify(message):
url = 'https://notify-api.line.me/api/notify'
headers = {
'Authorization': 'Bearer {}'.format(token)
}
data = {'message': message}
response = requests.post(url, headers=headers, data=data)
print(response.text)
これで使用できる形になりました。
使用
実際にどのように使用するか解説します。Text DATに記述したsendLineNotify
関数を呼び出して使用します。
例えばWebSocket DATが接続されたら通知をするとしたい場合は以下のようになります。
onConnected():
op('text1').module.sendLineNotify("好きな文章にしてください")
Text DAT(初期名:text1
)のsendLineNotify
という関数を呼び出す、というような処理になっています。
text1
という名前は実際の環境に合わせて変更してください。わかりやすい名前がいいと思います。
Text DATのように外部にLINEに通知する機能を書いておけばop('text1').module.sendLineNotify("")
を好きな場所に設置し、""
の中に送りたい文章を書けば利用できるので非常に便利かと思います。
まとめ
このような手順でTouchDesignerからLINEに通知を送ることが出来ます。私はまだプログラミングに関しては未熟なので様々な不手際や改善点があるかと思いますが大目にご了承願います。最後までお読みいただきありがとうございました。ご参考になれば幸いです。
Discussion