Twitchの配信をトリガーしてMacを操作
TwitchのEventSubはWebhookでサーバにPOSTを送ってくれる。
配信が始まったり終わったり,色々なものが用意されている。
それを活用して,Macを自動で操作してみたいと考えた。
前提として,Macはスリープしていない状態。
Wake On LANで起こしてみたいとも考えたが,自分の環境だと,マジックパケットは受信できてもスリープ解除がされなかった。
ネット上探してみてもWOLをM1とかApple Silicon Macで試したよ的な例がほとんど載ってない…
現在の構成:
(TwitchのWebhook) == {POST通信} => (サーバー) == {APNs通知} => (iPhone) == {HTTP通信*} => (Macで建てたローカルサーバー)
* Tailscaleを使いiPhoneやMacが同じローカルネットワークになくても通信できるようにしている
だいぶ無駄な構成やな…本当だったらiPhoneをかまさずにMacにAPNs通知を送って済ませたいが,
通知を受け取った時に自動でアクションを起こすのはiOSでしかうまく動作しなかった。
iPhoneとMacはTailscaleで登録しているので同一ローカルネットワーク内でも外出先でも通信できる。
最終的にMacで建てたローカルサーバー(今回はFlask)で,Macを操作している。
code:app.py
from flask import Flask, jsonify
import os
app = Flask("AppName")
@app.route("/sleepnow")
def sleepnow():
try:
os.system("pmset sleepnow")
return jsonify(message="Successfully"), 200
except Exception as error:
return jsonify(error=str(error)), 500
if __name__ == "__main__":
app.run("0.0.0.0", port=8000, debug=True, threaded=True)
これを使えば
・配信が始まった際にブラウザを起動しページ表示
・配信が終わった際に自動でスリープ状態にする
などなどできる。