ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】Radiko を自動操作で再生する時に Twitter にシェアするようにしてみた。

f:id:yasushiito:20190403184928p:plain
昨晩聞いたラジオ番組を朝に振り返りやすくするために Radiko の友達に教える機能で番組情報を Twitter に流したらどうかと思いつきました。
所定の時間になったらAutoHotkeyスクリプトにより Radiko の番組ページを開いて再生ボタンをクリックするところまでは完成しています。
今回はその後に[友達に教える]ボタンをクリックして、自分の Twitter アカウントに番組情報をtweetします。
私の Twitter フォロワーがtweetに埋め込まれる Radiko の番組のボタンをクリックしてもらうことで聞いてほしい番組をフォロワーさんたちに伝えます。

調査する。

radiko の web ページは基本キーボードショートカットには対応していないので画像認識によるマウス操作になってしまいますが、作業工程は複雑でもなく、製作コストは高くないと想定します。

まずは操作手順を確認します。

友達に教える。

友達に教えるボタンをクリックすると、SNS を選ぶ一覧が表示されます。
その中のTwitter アイコンをクリックすると、 Twitter のポップアップウィンドウが開きます。
tweet内容に番組のタイトルとタイムフリー URL が事前に入力されています。
番組のタイトルを選択した状態なので、紹介メッセージを編集したい場合は delete キーでメッセージを削除して入力します。
tweetボタンをクリックすると、メッセージがtweetされてポップアップウィンドウが閉じます。
基本操作はこんな感じです。

ライブとタイムフリー。

Radiko の web ページには大きく分けてライブとタイムフリーの2種類があります。
直感的に区別できるように、 ライブページは水色でタイムフリーは赤色が主体となったページが表示されます。
当然ながらボタンの配色も変わるので、画像認識に使うサンプル画像も2種類必要です。
どちらのモードでも SNS 選択の Twitter アイコンは共通です。
もちろん、ポップアップウィンドウのtweetボタンも変わりません。
気を付けるのは、友達に教えるボタンと SNS 一覧を閉じるボタンです。

シェアする時間。

友達に教える機能では再生開始時間を秒単位で指定できます。
時間を指定することで、聞いてほしい部分に絞って友達に教えることができます。
再生開始時間は SNS 選択画面に表示されるスライダーバーを調整することで指定できます。
再生中だと刻一刻とスライドしていきます。
時間をぴったりと狙ってシェアしたいなら、再生ボタンをクリックする前に友達に教えるボタンに進むことになります。
教えてもらう友達側としては Twitter を見てクリックしてみたのに中途半端なところから始まってしまうとびっくりするかもしれません。
巻き戻しボタンで5秒または60秒巻き戻すこともてきますが、オンエアスタート時間に戻ることはできません。

再生画面に復帰。

tweetに成功すると、 Twitter のポップアップは閉じられます。
しかし、ブラウザの方は SNS 一覧の表示がまだ残っています。
再生中の画面に戻ってくれないと、手動/自動に関わらず、以降の操作に支障が出ます。
例えばハードウェアの問題で音声が耳元に届いて来なかった場合には、一度再生を停止して再生し直さなければなりませんが、停止ボタンが画面に出ていなければ戸惑います。
SNS 一覧はXボタンをクリックすることで閉じます。
Twitter のポップアップでの操作が失敗した時のことも踏まえて復帰処理を考えます。

自動操作に失敗したら。

友達に教える操作中に失敗すると再生ボタンが見えなくなって再生そのものに失敗する恐れがあります。
シェアに失敗して番組を聴けないとなると本末転倒、再生できないことだけは絶対に避けなければなりません。
そこで、 番組情報のシェアは再生が確認できてから行うこととします。
しかしながら、再生が始まるとシェアされる時間が進んでしまう問題が出ます。
フォロワーにとってはジャストタイムで聞けなくなるのでマイナス要因になりますが、 聞いてるよと言いながら聞いてないのもおかしなものなので目をつぶります。
Radiko のライブ再生にはタイムラグがあることだし、細かいことを気にしなくても良いかな?

ポップアップの後始末。

tweetが完了すればポップアップは自動で閉じられます。
tweetに失敗すると、ポップアップが残ってしまいます。
仮に残ったとしてもブラウザの番組ページは操作できます。
もう一度ブラウザから SNS 一覧の Twitter アイコンをクリックしてもポップアップが複数枚に増殖することはありません。
Twitter のポップアップは常に一枚で維持されます。
仮にtweetに失敗したとしても、 SNS 一覧を閉じるXボタンが画像認識可能な状態であれば、そのボタンをクリックする処理を通してしまえば友達に教えるモードから抜け出したことにはなります。

ウィンドウ配置に注意する。

ブラウザやポップアップの表示位置とサイズ次第では操作したいボタンが隠されてしまうことがあります。
また画面サイズによっては画面の外に出てしまうかもしれません。
幸いにもポップアップの表示位置とサイズは記憶されていて起動ごとにばらつくことはありません。
ブラウザの表示位置とサイズは別の AutoHotkey スクリプトによって自分に使いやすい位置に固定されているので影響はありません。
何らかの拍子に変わってしまうこともあるので、自動操作がこけた時は最初にこの辺を疑ってみることになると思います。
特にタイムフリーを再生する前に表示される注意書きの OK ボタンはブラウザのサイズによって微妙にフォントサイズが変わるようで、うっかりブラウザの表示サイズをいじってしまうと動かなくなります。

実装。

これまで通りサンプル画像を探してクリックする処理を重ねていきます。
クリックミスの考慮もしてリトライ3回にします。

スクリプトは下記の通りです。
最新版なので本文の説明と食い違う部分があるかもしれません。



この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら