駅前散策ブログ@かわさき HOT

「駅前散策」でGoogle検索結果1位になれなくなったよ…Macrodroidとかエミュネタで皆ウチを検索しすぎやで…

うちのブログに来るときにアクセス元をmsnのntpにしてる方へ

2024-07-27 12:48:42 | よもやま
擬装先をNTPにするのはネットでは本当に害悪でしかないのでオススメしません。

202407271934
直してくださった模様!ありがたい!

【RPA】【MacroDroid】実は内部的な動作が2024年05月末の更新から変わっている「シェルスクリプト」

2024-07-27 12:26:26 | Macrodroid&RPA関連
(´・ω・)ノ < らいなーです。

2024年05月末位から、2018年頃に作ったシェルスクリプトありのマクロが失敗するようになって調べてみたのですが、


(昔)

アクション:シェルスクリプト1
アクション:シェルスクリプト2

とあった場合は、シェルスクリプト1でカレントディレクトリの変更をすると、その変更は後続のシェルスクリプト2に引き継がれました


(2024年05月末以降)

アクション:シェルスクリプト1
アクション:シェルスクリプト2

とあった場合は、シェルスクリプト1でカレントディレクトリの変更をすると、その変更は後続のシェルスクリプト2に引き継がれず、シェルスクリプト毎にカレントディレクトリが初期状態に戻るようになりました

シェルスクリプトの動作を旧来の基準で考えているとダメですね。見直しが必要でした。



【RPA】【MacroDroid】「HTTPリクエスト」アクションを用いてファイルをダウンロードするには?

2024-07-27 11:13:45 | Macrodroid&RPA関連
(´・ω・)ノ < らいなーです。

Android13以降のAndroid端末で、
cURLが塞がれているケースがあり、
シェルスクリプト絡みでトラブルになっているケースが発生している場合があるようなので、
対処例のひとつとして書いておきます。




さて、
まずはサンプルマクロ全体を見てみます。



サンプルのマクロでは、TP-LINKさんのルーター、C1200のサポートページから、ルーターのファームウェアzipファイルをダウンロードします。



【ダウンロードURLの末尾のファイル名称だけを抽出するには?】

ダウンロードURLの末尾のファイル名称のみを抽出しておき、ファイル保存時の名称として利用する必要がありますね。

このような場合は「文字列処理」アクションで正規表現を使いつつ、抽出します。



「対象文字列」欄に、ダウンロードURL全体を指定して(サンプルではダウンロードURLをConst値として変数に持たせているので、ローカル変数のマジックテキストを指定して)、

「一致する文字列(正規表現)」欄には
.+/(.+?)([?#;].*)?$
を入力。
そして「グループ1」のラジオボタンを選択します。
細かくは説明しませんが、当該正規表現では文字列のグルーピングをしていて、そのグルーピング内のはじめのグループに「ファイル名称部分」が格納されるため、グループ1を態々指定してあげる必要があります。

面倒なら正規表現の部分
でも良いかもしれませんねぇ。
これでも末尾は拾えるような?
まぁ厳密にやってるよ、ということで。



【HTTPリクエストでどうやってファイルを保存するんじゃい!?】



リクエストメソッドをGETにして、
URLにはファイルダウンロードのURLをまるっと貼り付けて…



「HTTPレスポンスをファイルに保存する」オプションを利用して、保存先フォルダを予め選択しておき、任意のファイル名を「ファイル名」欄に記述します。
「ファイル名」欄にはマジックテキストが使えますから、例えばa.zipと固定て指定してもファイルを保存することは出来るのですが、オリジナルのファイル名を損なう事になってしまいますから、オリジナルのファイル名をまるまる残したければ、何処か別な変数領域などに「オリジナルのファイル名」を保管しておいて、名称指定時に利用するしかありません。

前段の正規表現うんぬんの部分は、その事前準備をしていた、というわけですね。




【URLエンコードの問題をどうするか?】

では、
ファイル名を「ダウンロードURLのまま」抽出してみましょう。

↓結果はこちら。


余計な%の付いた文字列が含まれてしまっています。URLエンコードですね。

インターネットのアドレスには使えない文字列があり、そうした文字列はURLエンコードという処理によって「予め変換がなされて」います。%20うんぬんは、半角スペースのことですね。


これを何とかしないといけません。


が、
Macrodroid単体だと、実はどうしようもありません。

そんなアクションは2024年07月27日現在の最新ベータ版v5.47.5にもありません。

じゃあどうすんの?


Javascriptを使うんだよ!

と。


JavascriptのdecodeURLクラスにダウンロードURLを喰わせて、予めURLデコードしておきます、と云うのが解決策となります。


これで、オリジナルのファイル名を保ったまま、「HTTPリクエスト」アクションを使って、ファイルダウンロードをすることが出来るようになりました。



記事は以上です。
ご参考までに!

ここまでお読み下さりありがとうございました。