次のゲーム&ウォッチ再現に取り掛かる前に、別のオリジナルゲームを作るための元ネタというか、技術研究をやっていこうと思う。
そのうちの1つが、HTTPアクセス。ネットの特定のページの情報をHTMLの中から拾い出して、使いたいと思っている。
HSP3.6自体にはHTTPアクセス用の命令は無いのだが、Dishであれば簡易的なアクセスができる命令が用意されている。
そのほかの方法としては、拡張モジュール"hspinet.as”を使う方法がある。
しかし、これはWindowsAPIを使うので、Androidアプリにしたときに使えない。
そういうわけで、Dishの命令で、どれだけのことができるかを試していく。
幸い、サンプルプログラムがあるので、流れを確認。
httpload命令でリクエストを投げられる。
リクエストが返ってきたら、httpinfo命令で取得できる。
それをバッファの変数に放り込んでやるという流れのようだ。
HTTPのリクエストには、GETとPOSTの二種類があって、若干動きが変わってくる。
URLにパラメータを含めて送るのがGET。POSTは良くある入力フォームなどで「送信」ボタンを押すと、入力項目のデータが渡せる方式。
今回は、天気予報の情報を取得して、抜き出すことにチャレンジ。
wttr.inというサイトに、パラメータを付けてアクセスすると、世界中の天気予報がテキストで取得できる。
例えば、ブラウザに https://wttr.in/tokyo と入力して、Enterキーを押せば、東京の天気予報が表示できる。
天気予報: tokyo
\ / 所により曇り
_ /"".-. 20 °C
\_( ). ↗ 45 km/h
/(___(__) 10 km
0.0 mm
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ 火 09 11月 ├───────────────────────┬──────────────────────────────┐
│ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ 曇り │ _`/"".-. 驟雨または強… │ \ / 所により曇り │ \ / 所により曇り │
│ .--. +22(25) °C │ ,\_( ). +22(25) °C │ _ /"".-. 21 °C │ _ /"".-. 20 °C │
│ .-( ). ↖ 44-72 km/h │ /(___(__) ↑ 41-72 km/h │ \_( ). ↗ 33-40 km/h │ \_( ). ↗ 45-56 km/h │
│ (___.__)__) 10 km │ ‚‘‚‘‚‘‚‘ 7 km │ /(___(__) 10 km │ /(___(__) 10 km │
│ 0.0 mm | 0% │ ‚’‚’‚’‚’ 5.0 mm | 99% │ 0.0 mm | 0% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ 水 10 11月 ├───────────────────────┬──────────────────────────────┐
│ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ \ / 所により曇り │ \ / 所により曇り │ _`/"".-. 所により雨 │ \ / 所により曇り │
│ _ /"".-. 18 °C │ _ /"".-. 18 °C │ ,\_( ). 18 °C │ _ /"".-. 18 °C │
│ \_( ). → 64-74 km/h │ \_( ). → 50-58 km/h │ /(___(__) → 45-51 km/h │ \_( ). → 46-53 km/h │
│ /(___(__) 10 km │ /(___(__) 10 km │ ‘ ‘ ‘ ‘ 10 km │ /(___(__) 10 km │
│ 0.0 mm | 0% │ 0.0 mm | 0% │ ‘ ‘ ‘ ‘ 0.1 mm | 60% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ 木 11 11月 ├───────────────────────┬──────────────────────────────┐
│ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ 曇り │ 曇り │ \ / 所により曇り │ 曇り │
│ .--. 18 °C │ .--. 18 °C │ _ /"".-. 18 °C │ .--. 18 °C │
│ .-( ). → 49-57 km/h │ .-( ). → 52-60 km/h │ \_( ). → 46-53 km/h │ .-( ). → 47-54 km/h │
│ (___.__)__) 10 km │ (___.__)__) 10 km │ /(___(__) 10 km │ (___.__)__) 10 km │
│ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
位置情報: 東京都, 日本 [34.2255804,139.294774527387]この情報を取得して、HTMLから情報を抜き出そうとした。
HTTP操作のサンプルもあり、取得自体を行うプログラムは一から作る必要がなかった。
URLを与えて、単純にHTMLを取得することは簡単にできたのだが、もちろんHTMLのタグも付いてきているので膨大な文字数に…
これから天気予報の情報を抜き出すのは超面倒…処理も遅くなりそう。
とにかくHTMLの情報量を少なくするオプションは無いか探していたが、なかなか見つからない。
パラメータのヘルプは、https://wttr.in/:help で表示できるのだが、ここには書いていないオプションがあった。
githubのwttr.inのページを見ると、JSONで取得ができる!
JSONなら、HTMLよりはパースしやすいかなと思い、作り始めたのだが…