blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

インターネット上のテキスト情報を取得するスクリプト

以下の関数を使用すれば、当該 url 先のテキスト情報を取得し、それから AutoHotkey の RegExMatch によって選別した文字情報を表示する。URLDownloadToFile - AutoHotkeyJpではなくてCOMを使用している。この COM を経由する動作を用いることに、どういう利点があるのだろうか。利点の一つは、取得しようとしているファイルが見つからなかったとき、つまり HTTP のレスポンスのステータスコードが 404 を返したときを検出できることにある。詳しくは、WinHttpRequest Object (Windows)を参照のこと。
これを改変すれば、ウェブページの簡単な更新プログラムを作成できるだろう。

msgbox,% get_text_from_web("http://blechmusik.xii.jp/resources/keyboard_layout/DvorakJ/doc/README.txt"
                            , "(?<=■ )(\d{4}-\d{2}-\d{2})(?= 版)")

return

上記の例は、DvorakJ の README から更新情報を取得するものだ。

get_text_from_web(p_strURL, p_pattern = "")
; COM Object Reference [AutoHotkey_L]
; http://www.autohotkey.com/forum/viewtopic.php?p=377651#377651
; 
; download text from web and
; return the text
{
    WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")

    WebRequest.Open("GET", p_strURL)
    WebRequest.Send()

    ;; HTTP_response_status_code := WebRequest.Status
    if ( WebRequest.Status != 200 ) {
        msgbox, % "Error: HTTP_response_status_code is not 200."
    }


    if ( p_pattern ) {
        RegExMatch(WebRequest.ResponseText, p_pattern, ver)
        return ver
    } else {
        return WebRequest.ResponseText
    }
}