戻る

Webhook iPhone -> Windows リモートリンク

Webhook を用いて iPhone から無線で Windows PC のブラウザでリンクを開くプログラム。Flask + iPhone ショートカット。

Python Flask iOS Shortcuts

2024年12月

Webhook iPhone -> Windows リモートリンク

Overview

パソコンから離れて、スマートテレビのように YouTube を見たい。スマホをリモコン代わりにして操作したい。そんな動機から、iPhone から Windows PC のブラウザでリンクを開くプログラムを制作。

Tech Stack

  • Flask - 軽量な Web アプリケーションフレームワーク
  • webbrowser - Python 標準ライブラリ (URL を既定のブラウザで開くために使用)
  • iPhone ショートカット - クリップボードから URL を取得し、HTTP POST で送信

Operation Flow

  1. iPhone でリンクをコピー
  2. ショートカットを実行 (クリップボードから参照)
  3. Windows PC の既定ブラウザで開く

iPhone Shortcut

iPhone ショートカット設定
iPhone ショートカット設定画面
  1. クリップボードから URL を取得
  2. IP アドレス・ポートを指定し、URL を送信 (HTTP リクエストメソッドとして POST を使用)

Server Code

from flask import Flask, request
import webbrowser

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    data = request.json
    youtube_link = data.get('link')
    print(f"Received link: {youtube_link}")
    if youtube_link:
        if isinstance(youtube_link, dict):
            youtube_link = youtube_link.get('link')
        webbrowser.open(youtube_link)
    return 'OK', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
  1. Web サーバーを開く (ポート 5000 を開く)
  2. URL が POST 形式で送られてきたら、URL を抽出
  3. webbrowser を用いて既定のブラウザで開く

Reflection

  • 全 IP アドレスから受け取れるようにしているため、セキュリティが貧弱
    • 配布するのであれば、認証過程を設ける必要がある
  • 以下の点から、普段利用はあまりしなかった
    • リンクを送るたびに新規タブで開かれてしまう
    • bat をスタートアップで起動しないといけないため、ターミナルが開かれてしまって邪魔
    • 常に 5000 番ポートが開かれているため、セキュリティ的に不安
  • 実現したいことは形にすることができたため、良かった