【Mac】Platypus で遊ぶ – webビュー
Platypus で遊ぶという記事で作った「imageDL.app」をもうちょっとマシにしたい。機能は変わらないけど、見た目くらいは変えてみよう。
webビュー
Platypus の webビューは、スクリプトの出力を HTML でレンダリングしてくれる。HTML が扱えるなら、とりあえず画面をカラフルに出来るし、画像も使える。HTML を自作できれば、思うような画面が作れるだろう。
まずはテストとして Google を表示してみたい。
インターフェイスで「web view」を選択する。
「Script Path」で [+new] をクリックしてスクリプトを書く。Platypus のドキュメントによると、以下のように書くらしい。
#!/bin/sh
echo "Location:https://google.co.jp/"
Location:URL(改行)
と、スクリプトで出力すると、サイトを開いてくれる( echo で出力された文字列は、そのまま改行される)。
[Create App] をクリックしてアプリを書き出してみる。
うまくいった。検索もできるようだ。
今度は自作した HTML ファイルを表示させてみる。
適当に作った index.html をバンドルさせ、
echo "Location:./index.html"
とやってみたが、うまくいかない。
こういう場合は、
cat index.html
とやるらしい。
今度はうまくいった。
今回気づいたこと
前回はまったく気づかなかった、大事なことがふたつ。
ひとつは [Create App] を押した時の挙動である。
Platypus は、[Create App] をクリックすると、バンドルしたファイルを、バンドルし直してくれるのである。自作したアプリを右クリックしてパッケージの内容を表示し、リソース内のファイルを書き直すのは意味がない。
デスクトップにあるファイルをバンドルしたなら、その元のファイルを編集する。そうすれば、Platypus がバンドルし直してくれる。パッケージ内のファイルを編集しても、元のファイルに上書きされてしまうので、徒労に終わるのである。
もうひとつは、プロジェクトそのものの保存だ。
保存はファイルメニューではなく、「profiles」メニューの「save profile…」でおこなう。バンドルファイルを追加した場合などに、こまめに保存しておけば、作業の続きが楽になる。
imageDL webビュー版
imageDL は、ブログの記事などの URL をドロップすれば、ページに含まれる画像のリンクを抽出してダウンロードするアプリである(【Mac】Platypus で遊ぶ | 林檎コンピュータ)。これを webビュー版にアップグレードしてみる。
ファイルは最終的に、以下のようになった。
Script.sh
#!/bin/sh
# cat で index.html をレンダリングさせる
cat index.html
URL=`cat -`
if ! test -z "$URL"; then
if echo "$URL" | grep -sq "^http"; then
sh dl.sh "$URL"
else
exit 0
fi
else
exit 0
fi
バンドルファイル
📝 index.html<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="style.css">
<title>タイトル</title>
</head>
<body>
<p class="blink">Drop URL</p>
<script src="jquery.min.js"></script>
<script src="idl.js"></script>
</body>
</html>
📝 style.css
body {
background-color: #323232;
background-image: url('title.png');
background-position: center center;
background-attachment: fixed;
background-repeat: no-repeat;
color: #fff;
font-family: sans-serif;
}
img.thum { /*ダウンロードした画像のサムネを表示*/
width: 150px;
}
.blink { /*「Drop URL」を明滅させる*/
animation: blinkAnime 1s infinite alternate;
font-weight: bolder;
font-size: 1.5em;
text-align: center;
}
@keyframes blinkAnime{
0% { color: #323232 }
100% { color: #ffffff }
}
#clear { /*[クリア]ボタン*/
padding: 8px;
border: 1px solid #ccc;
border-radius: 5px;
cursor: pointer;
background-color: #999;
width: 5em;
text-align: center;
}
📝 idl.js
$(function (){ //[クリア] をクリックするとサムネを消去する。
$('#clear').click(function (){
$('.thum').css('display', 'none');
$('.message').css('display', 'none');
$(this).css('display', 'none');
});
});
📝 dl.sh
#!/bin/sh
saveLoc=~/Desktop
# 前回、[Cancel]された場合、dlTmpフォルダが残るので、消去する。
if ! test -e ./dlTmp; then
mkdir ./dlTmp
else
rm -rf ./dlTmp
mkdir ./dlTmp
fi
cd ./dlTmp
url=$1
/usr/local/bin/wget --quiet "$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"`
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 --quiet $file
# ダウンロードした画像を表示する
echo '<img src="dlTmp/'`basename $file`'" class="thum">'
done
zip -0 -q "$blogtitle".zip *.jpg *.gif *.png *.jpeg
cp "$blogtitle".zip "$saveLoc"/
cd ../
rm -rf dlTmp
# クリアボタンの表示
echo '<p class="message">'$blogtitle'</p>'
echo '<p class="message">終了です</p>'
echo '<p id="clear">クリア</p>'
他に以下のものをバンドルした。
jQuery はローカルにダウンロードしてバンドルしないと、読みこんでくれないようだ。
- jquery.min.js
- title.png
出来上がったのはこんな感じ。
おしゃれっぽい感じにしたかったのだが、あんまりそのようにはならなかった。これはセンスの問題なので、これ以上はどうしようもない。Drop URL は CSS のアニメーションで明滅する。
ダウンロードした画像のサムネイルが表示されるようになった。
ダウンロードされた画像は zip ファイルにまとめられてデスクトップにコピーされる。
クリアボタンを最後に表示。押すとサムネイルが消去される。
というわけで、webビューなら CSS のアニメーションが使えるし、jQuery も使える。
こういった素晴しい画像をダウンロードする以外に、もっと有用な使い方があるのではないかと思われる。
最近のコメント