ぺんちゃん日記

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

【AutoHotkey】functionキーで radiko の web ページを開けるようにした

f:id:yasushiito:20190403184928p:plain
functionキーでお気に入りのラジオ番組を Radiko で開いて聴取する計画を建てました。
前回は与えられた URL をブラウザで開く関数を準備したのでした。
この関数で、 Radiko のライブページを 開くことにします。

Radiko の Web ページについては、昔調べました
放送局ごとに固有の文字列が定められているので、ライブページの URL の後ろに、放送局名称を追加して開けば良いのでした。

http://radiko.jp/#!/live/放送局のチャンネル名

この一連の処理をタスクスケジューラから起動して、 Microsoft Edge でラジオを再生する自動処理はすでに実装済みです。

今回はこれらを改造して、functionキーから Google Chrome で開けるようにします。

もう少し詳しく。

お気に入りのラジオチャンネルは複数あるので、functionキーのいくつかに割り当てて、好きな時に好きなチャンネルを聞けるようにします。
お気に入りのラジオチャンネルと言っても流動的なので、コードに直接埋め込むより configへ保存することにします。
設定項目が一気に増えるのは負担が高いので、放送局の識別コードをカンマ区切りで設定することにします。

TBS,CBC,TOKAIRADIO,LFR,QRR

実装。

まずは radiko のページを Chrome で開く関数です。
第1パラメータには押下されたfunctionキーの番号が、第2パラメーターにはチャンネルリストがカンマ区切り文字列で渡ってきます。
第3パラメータは Web ページを開く Chrome を探すためのいつものやつです。
コード全体はこんな感じ。


特に難しいところはありませんが、未経験だったのが文字列の分解

文字列を区切り文字ごとに分割するのはStringSplit コマンドで行います。

ahkwiki.net

第2引数の文字列を第三引数のキャラクターで分解し、第1引数の変数に格納します。
今回の区切り文字はカンマですから、エスケープ文字` を使って ESCAPE しなければなりません。


このコマンドを使ってパラメーター channelstr,をカンマごとに分解して、余分な空白を取り除いて放送局コードを取り出します。

    ;放送局リストカンマ区切りで分解す。
    StringSplit, channels, channelstr, `,
    StringTrimLeft, channel,channels%ch%, 0
    ;放送局名を使って Radiko のライブページを開く。
    url := "http://radiko.jp/#!/live/" . channel

myahk/RadikoChrome.ahk at master · yasushiito/myahk

渡されてきたパラメータchannelstrを分解して、変数channels1、channels2、channels3………のように結果を格納します。
第1パラメータで渡されたfunctionキーの番号を変数chを使って 取り出すと同時にトリミングを行います。



functionキーを押したときにこの関数を呼び出す処理です。
お気に入りの放送局は多くないので、functionキー全てを使わなくても良いと思います。

;ブラウザで Radiko のライブページを開く。
;放送局一覧はコンフィグで ini ファイルに記録されている。
F1::
    RadikoChrome(1, radikoch, workurl)
    Return
;ブラウザで Radiko のライブページを開く。
;放送局一覧はコンフィグで ini ファイルに記録されている。
F2::
    RadikoChrome(2, radikoch, workurl)
    Return
;ブラウザで Radiko のライブページを開く。
;放送局一覧はコンフィグで ini ファイルに記録されている。
F3::
    RadikoChrome(3, radikoch, workurl)
    Return

myahk/full.ahk at master · yasushiito/myahk


コンフィグウィンドウから設定を保存するところ。



コンフィグを読み込むところ。

今後の課題。

ページを開くだけで再生を始めてくれないので、再生ボタンを押す処理くらいは自動でやってもらった方がありがたいのですが、画像判定が厳しすぎて、開いた時のブラウザの環境次第で認識できないのでボタンクリックを自動化できません。
ボタンをクリックさせる処理はコメントにしてあります。



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

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