作ったワンライナー (対象:GoogleMap)
wget -O - -q https://apps.apple.com/jp/app/id585027354 | grep -oP "<p.*?whats\-new__latest__version.*?>.*?</p>" | grep -oP ">.*?<" | grep -oP "[^><]+"
はじめに
みなさんはAppStoreでのアプリの公開反映完了をどのように確認していますか?
普段の公開では1,2時間程度で公開反映完了しますが、たびたびその時間では済まないことがあります。特に最近では2ヶ月に1度ほどどこかのアプリでメンテナンス延長をしているように思えます。
公式ヘルプでは、AppStoreでの公開リクエストをしてから反映完了まで最大24時間かかるため仕方のないことですが、ストアへの反映をユーザーと同じwebページについて監視したいものです。
AppStoreConnectヘルプ
shellワンライナーは、とりあえず取得してみるには簡単なので記事に残しておきます。
環境
Ubuntu 18.04.1
GNU Wget 1.19.4
grep (GNU grep) 3.1
作り方
サンプルとしてGoogleMapのアプリについてバージョンテキストを取得してみます。
HTML 要素の検証
Chrome の要素の検証機能でHTMLタグの形式を確認します。
GoogleMap
whats-new__latest__version
という名前でバージョンテキストがHTMLに定義されていることがわかります。ページソースを取得して、コレを元にテキストを切り出せば必要なテキストを取得できそうです。
grep でスクレイピング
HTMLタグを抽出して、テキスト整形していきます。
段階をおって出力を並べるので、どの正規表現でどういった抽出しているのか見ていただければと。
$ wget -O - -q https://apps.apple.com/jp/app/id585027354 | grep -oP "<p.*?whats\-new__latest__version.*?>.*?</p>"
<p class="l-column small-6 medium-12 whats-new__latest__version">バージョン 5.19</p>
$ wget -O - -q https://apps.apple.com/jp/app/id585027354 | grep -oP "<p.*?whats\-new__latest__version.*?>.*?</p>" | grep -oP ">.*?<"
>バージョン 5.19<
$ wget -O - -q https://apps.apple.com/jp/app/id585027354 | grep -oP "<p.*?whats\-new__latest__version.*?>.*?</p>" | grep -oP ">.*?<" | grep -oP "[^><]+"
バージョン 5.19
この出力をテキストファイルに保存して、定期実行の前回実行と差があったら通知するなどcrontabにすることなどで定期監視機構として動かすことが可能です。
終わりに
あくまでwebページのスクレイピングをしているだけなため、ページの仕様変更が入った場合にはすぐにだめになってしまうものですが、手軽にできるshellワンライナーを作成してみました。
お手軽にストア監視したい方はお使いください。
Q & A
wget のオプション何?
-O -
で、取得したデータを標準出力へ出しています。 |
でgrep ワンライナーをするためです。
-q
で、wgetを使った時に出る進捗などの途中出力を抑制しています。
なんで curl じゃなくて wget なの?
先日まではcurlを使ってたのですが 6/12 頃のレスポンスからcurlだと中身が空になってしまいました。
元は curl -sS https://apps.apple.com/jp/app/id585027354 略
だったんですけどね。