【Mac】Platypus で遊ぶ
英語でカモノハシを意味する Platypus。
Mac で Platypus といったらこいつだ。
🔗 Platypus – Create Mac apps from command line scripts | |
Platypusは、シェルスクリプトやPerl、Ruby、PythonプログラムなどのコマンドラインスクリプトからネイティブのMacアプリケーションを作成する開発者ツールです。
Platypus – Create Mac apps from command line scripts | |
Platypus を使えば、スクリプトに GUI 的な装いをつけられる。
インターフェイスは以下のうちのひとつだ。
- なし(アプリアイコン)
- プログレスバー
- テキストウィンドウ
- web表示
- ステータスメニュー
- ドロップレット
対応するスクリプトは、シェルスクリプト、Python、Perl、Ruby、PHP、Swift、JavaScript、AppleScript などなど。
無料のオープンソースソフトウェアだが、サイトで支援を求めているので、気に入ったら寄付を考えてみてもいいかもしれない。
要するにスクリプトに GUI を着せるものなので、スクリプト以上のことは出来ない。ダブルクリックで叩いてなにかさせる、もしくはドラッグ&ドロップでファイルを渡す、などが主な使い方ではないかと思う。
とはいえ、自分の作ったアイコンのアプリが、デスクトップにひとつくらいあるというのも、いいかもしれない。
試してみる
ということでテストしてみる。
詳しいことはドキュメンテーションを見て欲しい。
Google Chrome で開くと、かなりわかりやすい翻訳で訳してくれる。
とりあえず、上のようにしてみた。
「Accept dropped Items」は下のように、とりあえずすべてにチェックした。
「Script Path」にある「+ new」を押すと、簡易な組みこみエディタが起ち上がる。「Check Syntax」でシンタックスエラーをチェックできて便利だ。
下のようなものを書いた。
#!/bin/sh
echo 'Hello, World'
echo '現在地'
pwd
echo ' '
echo '引数 '$1
echo ' '
echo 'cat -'
cat -
これで [Create App] してみた。
現在地はアプリのなかのリソースらしい。
ファイルをドロップすると、引数としてパスが入力される。
文字列をドロップすると、標準入力されるようだ。
imageDL を作成してみる
ちょっとむかしの男子は、なんといっても画像ダウンロードのためにスクリプトをおぼえたものである。初心にかえってそういうアプリを作ってみたい。
インターフェイスは「Text Window」にしておいた。
「Accept dropped items」は、「Accept dropped text」だけにチェック。
ちなみに中段右の、「Run with root privileges」というのは root 権限で実行する、という意味だ。ドキュメントに詳しいが、Platypus では「sudo」を使ってはいけないらしい。
「Runs in background」はバックグラウンドで実行。Dock にアイコンがあらわれない。
「Remain running after completion」は、スクリプトが終了してもアプリは起動したままにする。
「Script Path」のスクリプトは以下のように書いた。
📝 imageDL.sh#!/bin/sh
URL=`cat -`
if ! test -z "$URL"; then
if echo "$URL" | grep -sq "^http"; then
sh dl.sh "$URL"
fi
else
exit 0
fi
下段の「Bundled Files」には「dl.sh」というシェルスクリプトを入れた。
dl.sh の内容は以下のとおりだ。
画像がたくさん載っている記事の URL をドロップすると、リンクされた大きな画像のアドレスを取得するべく試み、ダウンロードしていく、という動作を考えている。
#!/bin/sh
saveLoc=~/Desktop
if ! test -e ./dlTmp; then
mkdir ./dlTmp
fi
cd ./dlTmp
url=$1
/usr/local/bin/wget "$url"
/usr/local/bin/nkf -w * >utf.txt
blogtitle=`head -n 50 utf.txt |
grep -i -A 10 '<title>' |
grep -B 10 '</title>' |
tr -d '\n' |
sed -e 's/<[^>]*>//g' |
sed -e "s/ /_/g" |
sed -e "s/[:.\/()=-]//g"`
echo $blogtitle
grep -i -E 'href=(http|"http|"https)://[a-z0-9/_\.\-]+(.jpg|.png|.gif|.jpeg).' utf.txt |
sed -e 's/[Ss]rc=\"http//g' |
tr ' ' '\n' | tr '=' '\n' |
tr '"' '\n' | grep -E 'jpg$|jpeg$|png$|gif$'|
grep -E '^http' > list.txt
for file in `cat list.txt`
do
/usr/local/bin/wget $file
done
zip -0 "$blogtitle".zip *.jpg *.gif *.png *.jpeg
cp "$blogtitle".zip "$saveLoc"/
cd ../
rm -rf dlTmp
echo '終了です'
ダウンロードには「wget」を使うことにした。
また、文字コードの変更のために「nkf」が必要である。両方とも Homebrew でインストールできる(【Mac】 Homebrew を導入する | 林檎コンピュータ)。
Homebrew でインストールしたコマンドは、「/usr/local/bin/wget」のようにコマンドの場所を指示して書く。コマンドの場所は、ターミナルで which wget
などと実行すれば出てくる。
画像は、アプリパッケージ内のリソースフォルダに「dlTmp」というフォルダを作って、そこにダウンロードする。
ダウンロードした画像は、zip ファイルにしてデスクトップに出し、dlTmp は消去することにした。
[Create App] を押してアプリを書き出した。
URL をウィンドウにドロップすると、うまいこと動作してくれた。
だいぶ雑な感じだが、わりと簡単に作れた気がする。
とりあえず完成だが、Platypus の「Profiles」メニューの、「Load Example」には、たくさんのサンプルがある。これを参考に、もう少しマシな形を考えたいものだ。
最近のコメント