03/01 curlでダウンロードv2
curlで指定URLから、指定フォルダにダウンロードを行うAppleScriptです。ファイル名はURLから自動取り出しを行います。
Mac OS X 10.7でURL Access Scriptingが廃止になりました。URL Access Scriptingは、たしかに手軽で便利ではありましたが、非同期ダウンロードができないため、かなり昔から個人的にはcurlを愛用していました。
URL Access ScriptingはMac OS 9の頃からの「負の遺産」(ダウンロード時のファイル名の長さに、いまだに32文字制限があったなど)ともいえる仕様を引きずっており、Appleに作り直す気がなければ消えることを宿命づけられていたものです。
で、一応curlでダウンロードを行うサブルーチンを、少し整備してみましたが……このあたり、人によってずいぶんと趣味が違うはずなので、もっとシンプルなものがいいとか、ゴージャスなものがいいとか、自分の趣味に応じて作り変えるべきだと思います。普段使っている処理では、ダウンロードを非同期で行わせることがよくあるので、そういう方向で強化してもよいと思われます。
| スクリプト名:curlでダウンロードv2 |
| –動作確認のためにダイアログ入力しているだけ set aURL to text returned of (display dialog “URL to download” default answer “” buttons {“OK”} with icon 1) set dlFolder to path to desktop –ダウンロード先フォルダ(Desktop) set dRes to downloadFile(aURL, dlFolder, 3600) of me –POSIX pathが返ってくる。あとでのんびりaliasに変換 –通常ダウンロード on downloadFile(aURL, outPath, tOut) set aFileName to getFNfromURL(aURL) of me if aFileName = false then return “” end if set dlPathStr to POSIX path of outPath set aPOSIXpath to dlPathStr & aFileName set dssText to “curl -s “ & aURL & ” -o “ & quoted form of aPOSIXpath try with timeout of tOut seconds do shell script dssText end timeout on error return false end try return aPOSIXpath end downloadFile on getFNfromURL(aURL) if aURL ends with “/” then –display dialog “与えられたURLの末尾がスラッシュで終了しているため、ファイルではありません。” buttons {”OK”} default button 1 return false end if set aLen to length of aURL set aR to reverse of (characters of aURL) set aNstr to aR as string set aLoc to offset of “/” in aNstr set aRes to text (aLen - aLoc + 2) thru -1 of aURL return aRes end getFNfromURL |








