天気予報のテキストの挿入について
-
以下のようなcurlとsedによるシェルスクリプトを外部コマンドに登録しています。
~ $ cat /usr/local/bin/tenki #!/bin/sh # 横浜市の天気 echo $(curl -s https://tenki.jp/forecast/3/17/4610/14100/ | sed -n ' /forecast-announce-datetime/{s/<[^>]*>/ /g;p}; /"today-weather"/{s/.*/今日/;p}; /"tomorrow-weather"/{s/.*/明日/;p}; /"weather-telop"/{s/<[^>]*>//g;p}; /"high-temp temp"/{n;s/[^0-9]//g;s/^/最高/;s/$/°C/;p}; /"low-temp temp"/{n;s/[^0-9]//g;s/^/最低/;s/$/°C/;p} ')~ $ tenki 横浜市の天気 15日21:00発表 今日 晴時々曇 最高33°C 最低26°C 明日 晴時々曇 最高34°C 最低26°Cこのような処理をMeryのマクロで行うにはどうしたらよいでしょうか。
| enaka | 返信 -
現在の気温と区の天気を拾えるように改良してみた。
~ $ cat /usr/local/bin/tenki #!/bin/sh # 横浜市港北区の天気 echo $(curl -s https://tenki.jp/forecast/3/17/4610/14109/ | sed -n ' /forecast-announce-datetime/{s/<[^>]*>/ /g;p}; /"today-weather"/{s/.*/今日/;p}; /"tomorrow-weather"/{s/.*/明日/;p}; /"weather-telop"/{s/<[^>]*>//g;p}; /"high-temp temp"/{n;s/[^0-9]//g;s/\(.*\)/最高\1°C/;p}; /"low-temp temp"/{n;s/[^0-9]//g;s/\(.*\)/最低\1°C/;p} /"rain-temp-btn"/{s/<[^>]*>//g;s/.(.*)//g;s/ *\(.*\)/現在\1°C/;p}; ')~ $ tenki 横浜市港北区の天気 16日19:00発表 今日 雨のち晴 最高35°C 最低27°C 明日 曇一時雨 最高31°C 最低27°C 現在30.3°C| enaka | 返信 -
Mery のマクロでは、
shell.Execメソッドを使用して外部コマンドを実行し、その標準出力を取得できます。たとえば、
curlを実行して HTML を取得し、JavaScript の正規表現で必要な情報を抽出すれば、sedと同様の処理を実現できます。#language = "quickjs" var exec = shell.Exec("curl -s https://tenki.jp/forecast/3/17/4610/14100/"); var html = exec.StdOut; // 正規表現で必要な情報を抽出して挿入 ...もちろん、Windows 版の
sedがインストールされていれば、JavaScript を使わずにcurl | sedのようなコマンドをそのまま実行することもできます。一方で、
curlを使いたくない場合は、V8 マクロでfetchを使用して HTML を取得することも可能です。どの方法が適しているかは用途によって異なりますので、どのようなマクロを作成したいのか、もう少し具体的に教えていただければ、お力になれるかもしれません。
| Kuro | 返信
スポンサーリンク