見出し画像

Xスペースのタイマー自動録音②

X(旧称:Twitter)の音声チャット「スペース」で行われている「あのコン」を、不在のときに録音しておいて後で聞こうというたくらみです。


ぶっつけ本番で失敗

「うまく動いたらラッキー」ぐらいに思っていたので、失敗したからといって落ち込んだりはしません。その場では実行に成功していたので、自分で書いたプログラム以外の要因で失敗したのでしょう。

いろいろ調べてみたところ、いったんMacがスリープしたまま復帰してこなかったことが原因のようです。

2回目の追試でも失敗

自宅にいる際に、2回目の追試を行ってみました。20:00からスペースで行われる「あのコン」に合わせて、あらかじめAppleScriptを動かしてみました。

ただ、これでもうまく動作しません。プログラム側で20:00になるのを待って、その時刻になると、X(Twitter)のページをSafariでオープンします。

自分のX(Twitter)のアカウントのHomeページを表示し、開催されたスペースが表示されたかどうかを待ち続け、規定時間だけ待って、チェックを繰り返します。

ところが、これでもうまく検出して録音開始してくれません。

察するに、20:00ごろにX(Twitter)上で始まったスペースの番組通知は、どうもその場ですぐに知らされることはなく、数分ぐらいの遅れをもって表示されるようでした。

再度、すでにスペース開催中であることが表示されていることを目視で確認し、自分のScriptを実行したところ録音が開始されました。

20:00になったら数秒間隔でスペースの開始をチェックし、それを100回ほど繰り返していたのですが、どうも想定よりも告知表示が出るのに「遅れ」が生じるようです。

3回目の追試では、この番組開始待ち時間を長めに取る必要があるようです。

スペース開始検出を別の手段で

Webブラウザ(Safari)に表示されたことを検出していたのでは、20:00に開始された番組を数分遅れで検知することになってしまいそうです。これはこれで手軽ではあるものの、安定した動作を期待できそうもありません。

そこで、REST API経由でスペースの番組開始を検出できないかどうか、X(Twitter)のv2 REST APIについて調べておくことにします。

AppleScriptから各種REST APIを呼び出すのは慣れっ子なので、とくに問題はないでしょう。X(Twitter)のREST APIについては、イーロン・マスクによる方針転換で無料のお試しコースが廃止されたとばかり思っていたのですが、どうやらこうした「のんびりした用途」については260文字ほど用途を説明すると(英文で)、無料コースを利用できることを見つけました。

REST APIは呼び出したいが、仕事の用途ではないし、テストしたいぐらいの内容であるし、無料コースがあるのは助かります。ただ、1分間にREST API呼び出しできる回数に制限があるので、その点への注意が必要となります。

3回目の追試のあとに、REST API経由でスペースの開催を検出できないか試してみることとします。

GET /2/spaces/by/creator_ids

Spaces lookup/X Developer Platform

ぐらいで、指定のユーザーIDのメンバーが開催中の状態が、

{
"data": [
{
"id": "1DXxyRYNejbKM",
"state": "live"
}
],
"meta": {
"result_count": 2
}
}

Spaces lookup/X Developer Platform

ぐらいで返ってくるようです。そんなに難しくなさそうです。

この記事が気に入ったらサポートをしてみませんか?