GameSprit

自転車やMac・AppleScript、映画・小説やドラマのレビュー、備忘メモ・クイズなどを置いています。

AppleScript : 黒点数を取得する(get sunspot number)

2013-06-02 10:38:22 | AppleScript
今年は約11年周期の太陽活動のピークだといいます。

せっかくの話題なので、黒点数を取得するスプリプトを組んでみました。


結論から言いますと、NOAA の太陽活動データ を取得して、そのデータを切り分けて、切り分けたデータから出力したいように切り貼りして出力データを生成します。



出来上がったエラー制御なしの AppleScript は次のようなものです。





解説します。

NOAA の太陽活動データは、次のようなものです。





ここでは、このデータを加工して、「2013/05/31 : 58」を生成します。「日付: 黒点数」という形式です。



その手順です。

まず、NOAAのデータを取得します。
そのために、AppleScript の 「do shell script」コマンドを使い、シェルの「curl」コマンドを利用して、テキスト形式のNOAA の太陽活動データを取得し、変数orgdata に格納します。


次に、上図のテキストデータが入っている変数orgdata を、切り分けます。

最初の切り分けは、このテキストデータから最新の日付の行のみ(”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”)を取り出します。
そのためには、「改行」で切り分けます。AppleScript では「改行」を「return」として扱いますので、「return」を指定して切り分けることで、1行毎のテキストデータがリスト型変数として取り出せます。

ここでは、最新日付が入った行のみを取り出します。
リスト型変数に入っている、最後のアイテムを取り出すには、「last item of」と記述します。


テキスト形式のNOAA の太陽活動データから、最終行のみを取り出す記述が「last item of my bunkai(orgdata, return)」です。
ただし、分解する部分(ここでは「return」)を指定して処理するという手順は、on bunkai(orgdata, delim) ~ end bunkai として、ハンドラ(サブルーチン)として処理をひとまとめにしています。


さらに切り分けて、「年」、「月」、「日」、「黒点数」を取り出します。
先ほどの最終行データ「”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”」から、取り出すために AppleScript の「word」を使います。これは便利。「word 1」で「"2013"」、「word 2」で「"05"」、「word 3」で「"31"」、「word 5」で「"58"」が取り出せました。


最後に、切り貼りで出力するテキストデータを生成します。
空の「optxt」に、AppleScript の「&」コマンドを使って次々と追加します。



以上で完成です。





キーワード:AppleScriptcurl黒点数sunspot number

最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。