【AutoHotkey】閲覧中のページをはてブしてコメントに音声入力用文書の内容を設定する
はじまりはいつも不満から
集中力が切れた時に何をしましょうか?
私は肢体障がい者ですから簡単には PC の前から離席できません。
そこでTwitter を眺めながら気になった記事をはてブでコメントしています。
油断するとずっと息抜きモードに入ってしまうので娯楽関係のページは Firefox で作業関係のページはGoogle Chrome で開くことにしています。
この際メモリがどうのこうのというのは気にしません。
コメントをキーボードで入力するのは面倒なので Google documentを使って音声入力です。
音声入力documentは常に開いているので画面右側はブックマークしたいページ、左側はコメント入力ページとなっています。
音声入力したテキストをマウスで選択してカット&ペーストでコメントします。
コピペ部分はすでに自分専用のアプリを用意してあって、ボタンをクリックすると句点を追加するなどしながらクリップボードに送ってくれます。
Firefox ではてブを簡単にするために、はてブツールバーをインストールしてありますから、後は Firefox に切り替えてはてブツールバーのポップアップを開いて貼り付けて送信します。
たったこれだけのことですが私にはとてもしんどい!
おまけに Firefox のはてブツールバーは調子が悪いことが時々あってコメントのポップアップウィンドウが開かないことがありました。
不安定な上に操作が煩雑なので何とかしたい。
そこで自動化を検討します。
調査してみる
懸念すべき要素としてははてブの手段とキーボードショートカットです。
コメントのコピペについては以前作った音声入力を開始するスクリプトを流用すれば行けるはずです。
Firefox のはてブは再び動かない恐れがあるのでブックマークは Chrome で行うことにします。
はてブする手段は複数あります。
- 普段から使っているブックマークツールバーでポップアップを開いて投稿する ただしボタンをマイクでクリックしているのでキーボードから操作できない恐れあり。
- はてな公式がサードパーティアプリ向けに提供しているブックマーク専用ページを開いて投稿する ただしキーボードショートカットで入力フォームを操れない恐れあり。
- コメント API をダイレクトに叩いて投稿する ただしスクリプトで URL エンコードをする必要がある。
Firefox のキーボードショートカット一覧はこちら。
support.mozilla.org
Chrome のキーボードショートカット一覧はこちら。
support.google.com
URL をコピーするためのショートカット確認できました。
Firefox ではロケーションバーというようです。
Chrome で新しいタブを開くショートカットも大丈夫。
その際は URL バーにフォーカスが当たっているので URL を直接ペーストできます。
文書のコピーは簡単簡単、すべて選択して切り取りでいいですね。
はてなのサードパーティー向けブックマークページは URL 入力フォームにフォーカスがあたっているのでオッケー。
そこで URL をペーストしてエンターキーでコメント入力ページに移ります。
ところが……。
コメント入力ページのコメント入力フォームにフォーカスがない!!
どうやらページ左上の[B!]アイコンにあるようです。
ここから tab キーで送っていくことは可能ですが、ページデザインが変更されるだけで動かなくなってしまいます。
コメント欄にフォーカスを移すショートカットがあれば助かるのですが…。
ページデザインする人は是非とも配慮してほしいものです。
はてながウェブ上で提供しているページは使えないことが判明したので他の方法を検討します。
Google Chrome のはてブツールバー拡張があります。
Firefox でも使ってたやつですね。
これをインストールすると Ctrl + B ショートカットでブックマークポップアップを開けます。
しかもこいつは最初からコメント入力欄にフォーカスがあたっています。
ここまで行けば道筋は見つかりましたね。
作ってみる
自動化そのものは難しくないと思います。
手順としてはこんな感じです。
- Firefox をアクティブにする。
- キーボードショートカットでロケーションバーを選択して URL をクリップボードにコピーする。
- Chrome をアクティブにする。
- キーボードショートカットで新しいタブを開きクリップボードの URL をペーストしてページを開く。
- はてブ Google Chrome 拡張のポップアップを開く。
- 音声入力documentからコメントを切り取る。
- ポップアップに貼り付けて送信する。
スクリプトに組む際の留意点としては。
- 多少間隔をあけないとキーボード操作のメッセージを取りこぼす。
- URL やコメントなどはクリップボード経由で変数に取り込む。
- ウィンドウが見つからない時は処理は中断する。
くらいでしょうか。
組みあがったスクリプトはこんな感じです。
Process,Exist,firefox.exe If (ErrorLevel <> 0 ) { WinActivate,ahk_pid %ErrorLevel% Sleep 500 Send,^l Sleep 500 Send,^c bm := clipboard Sleep 500 Process,Exist,chrome.exe If (ErrorLevel <> 0 ) { WinActivate,ahk_pid %ErrorLevel% IfWinExist,音声入力用 { } Else { WinGetActiveTitle, current Loop { Send,^{Tab} Sleep 500 IfWinExist,音声入力用 { break } WinGetActiveTitle, active if current = %active% { ExitApp } } } Sleep 500 Send,^a Sleep 500 Send,^x Sleep 200 msg := clipboard Send,^t Sleep 500 clipboard = %bm% Send,^v Sleep 500 Send,{Enter} Sleep 2000 Send,^b clipboard = %msg% Sleep 500 Send,^v Sleep 500 Send,{Enter} } } Else { ExitApp }
スクリプトによる操作は構想とは少し手順が入れ替わりました。
待ち時間は様子を見ながら少しずつ狭めて行くかもしれません 。
最後の方のエンターキー送信処理を削除すればコメントが正しく入力されているか確認してから送信することができます。
スクリプト動作中にコピペ処理にミスがあると大切な情報を流出させてしまう恐れもあります。
何しろブラウザのどこかのウィンドウを全部選択してコピペしますからね。
自動化処理は便利ですが人間の目で確認する工程がどこかにないとリスクもあります。
利用は計画的に 。