2014年2月 8日 (土)

Mavericksの環境設定でオフにしてあるスマート引用府とスマートダッシュがAutomatorでオフにならないと思ったら



マウスの右クリックで自動置換のスマート引用府とスマートダッシュをオフにしないとダメなんですねえ。一回マウスの右クリックでオフにしておけば後は別のアプリでもスマート引用府とスマートダッシュのオフが有効になるのですけど、これは気づきにくいだけに何とかしてほしいですねえ。数年ぶりのAutomatorネタですが、スクリプトにバグがあると思ってあせってしまいました。環境設定でオフになっているものがまさか有効になっているなんて思わないのでデバッグしなかったら気がつかなかったでしょうねえ。だいたい自動置換が右クリックしないと出てこないなんて変でしょう。環境設定で全てできるように変えてほしいですねえ。

2012年8月 6日 (月)

あれれ?Automatorのローカライズが壊れているのかな?



ワークフローが全て英語になってしまっています。まあ、この方がわかりやすいんですけどね。

と書いたんですけど、日本語は大丈夫でしたねえ。またフォーマットの問題?やだなあ...

と書いたんですけど(えー加減にせーよって?)、システム設定から言語の順を入れ替えて戻したらなおりましたcoldsweats01

2011年9月23日 (金)

Automatorでlame使用のMP3エンコーダのドロップレット その3(王道編)





久々にこれを試してみたらうまくいきましたhappy01 /usr/local/bin/にインストールしたlameを使ってのWAV to MP3エンコードドロップレットです。lameの方は何もいじっていないので、以前のAutomatorに何か問題があったのかもしれません。これで邪魔臭いAppleScriptとはおさらばですね。すごくスッキリした気分♪

手順とソースは続きをどうぞ。

続きを読む "Automatorでlame使用のMP3エンコーダのドロップレット その3(王道編)" »

2011年8月28日 (日)

Automatorを使って外付けドライブをFilevault 2でラクラク暗号化コンバート


少し前に同じことをやろうとして簡単にAppleScriptで書こうとしたら、けっこう色々な情報をコマンドで集めないとまともなのができないことがわかって断念していたのですが、今日ちょっと時間があったのでAutomatorのドロップレットのサンプルを書いてみました。本当はFilevault 2ではなくCoreStorageと書くべきなんでしょうが、まあそこまで細かくいかなくても良いでしょうということタイトルではFilevault 2にしておきました。ソースと説明は続きをどうぞ。



続きを読む "Automatorを使って外付けドライブをFilevault 2でラクラク暗号化コンバート" »

2010年8月24日 (火)

Automatorでの条件分岐 その2 邪道編






Automatorでシェルの引数を得ようとしている方がいたみたいなので前回の記事を補足しておきます。

わたしも最近ほとんどAutomatorやAppleScriptをいじってないので最新の情報はわかりませんが、基本的にシェルに渡した処理は戻ってこないと思います。それならシェルやAppleScriptで条件分岐してもその後にAutomatorで処理できなければ役に立たないと思ってしまいそうですが、そうでもないんですねえ。OS Xにはautomatorという非常に便利なコマンドがあるんです。それを使えばAutomatorのワークフローに処理をさせることができます。

端折って書きますと、例えばAutomatorで「シェルスクリプトを実行」を選んで条件分岐処理をさせ、そのシェルスクリプトの中でautomatorコマンドを使って別途用意したワークフローに処理をさせるという感じです。Automatorアプリを作ったとしたら、その他に条件分岐後の処理用にワークフローを用意しなければなりませんが、これがけっこう便利です。Automatorのワークフローでなければ面倒くさいもしくはできないという処理はけっこうあると思います。面倒なので今あまり時間がないので先日書いたbashでの条件分岐の例を流用してみます。最後のPDF書類の処理を単なるファイルの移動からautomatorコマンドでデスクトップに保存してあるwatermark.workflowというワークフローを使いウォーターマークを入れレッドのラベルを付けてからデスクトップにPDF_tmpというフォルダーを作ってそこに(追記をご覧ください)保存するという処理に変えてみました。最初の条件分岐をするAutomatorアプリはドロップレットにしてあります(というか自然にそうなりますが)。つまり任意の様々なタイプのファイルを複数アプリにドロップしたところから処理が始まります。

追記 知り合いからどうせだったら最後の処理を他の条件と合わせたらという指摘がありましたので、二つほどワークフローを作ってみました。一つはウォーターマークを入れレッドのラベルを付けた後にFinder項目を移動を使って書類フォルダーのなかのPDFフォルダーに移動。もう一つは同じことをシェルスクリプトにやらせています。シェルスクリプトでわざわざやったのは、ここでまたautomatorコマンドを使って何らかの処理をさせることが可能ということを書きたかっただけです。つまりはワークフローにシェルスクリプトを盛り込むことでautomatorコマンドを使いながら延々と違ったワークフローの処理を繋げることができます。

bashでの条件分岐の例
for f in "$@"
do
 if [ ${f##*.} = "wav" ];
 then
   mv $f ~/Music/WAV;
 elif [ ${f##*.} = "mp3" ];
 then
   mv $f ~/Music/MP3;
 elif [ ${f##*.} = "txt" ];
 then
   mv $f ~/Documents/TEXT;
 elif [ ${f##*.} = "doc" ];
 then
   mv $f ~/Documents/DOC;
 elif [ ${f##*.} = "pdf" ];
 then
   automator -i $f ~/Desktop/watermark.workflow;
 fi
done


watermark.workflowの内容

Watermark1_4



1.Finder項目を移動の場合

Watermark2_2

2.シェルスクリプトの場合

Watermark3_2



上記の例ではautomatorコマンドを使っているのはPDF書類の場合だけですが、他のファイルも別のワークフローで処理させたければ同じように処理を追加すればいいだけです。上記の例はかなり大雑把ですので、細かいところは各自煮詰めてください。

2010年3月 8日 (月)

Automatorでフォルダーアクションの条件分岐

久々のAutomatorネタです。Automatorは便利ですけど、条件分岐がないのが残念というのよく聞きますねえ。知り合いからフォルダーアクションでファイルの拡張子ごとに処理をするひな形を書いてちょというお願いがあったのですが、ずっと忘れていましたcoldsweats01

色々とやり方はありますが、ここではAutomatorのアクションをそのまま活かす方法をご紹介します。OSはAutomatorの違いをチェックする時間がないのでSnow Leopardに限定しておきます。

Automatorを起動してフォルダーアクションを選択すると、まずフォルダーアクションを添付するフォルダーを選択します(例ではダウンロードフォルダー)。フォルダーアクションはフォルダー内に出現したファイルのPOSIX pathを次のアクションに渡しますので、ここで「シェルスクリプトの実行」を選んでbash(入力の引き渡し方法は”引数として”)、もしくは「AppleScriptの実行」を選んでAppleScriptで条件分岐を書いて処理をさせるだけです。

シェルから再びAutomatorに処理を渡したい方はAutomatorでの条件分岐 その2 邪道編も合わせてご覧ください。

bashでの例
Bash_7
for f in "$@"
do
 if [ ${f##*.} = "wav" ];
 then
   mv $f ~/Music/WAV;
 elif [ ${f##*.} = "mp3" ];
 then
   mv $f ~/Music/MP3;
 elif [ ${f##*.} = "txt" ];
 then
   mv $f ~/Documents/TEXT;
 elif [ ${f##*.} = "doc" ];
 then
   mv $f ~/Documents/DOC;
 elif [ ${f##*.} = "pdf" ];
 then
   mv $f ~/Documents/PDF;
 fi
done



AppleScriptでの例
As_6
on run {input, parameters}
 tell application "Finder"
  set shorui to file input
  set name to name of shorui
  if (".wav" is in namae) then
    move input to "OSX:Users:misabazooka:Music:WAV"
  else if (".mp3" is in namae) then
    move input to "OSX:Users:misabazooka:Music:MP3"
  else if (".txt" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:TEXT"
  else if (".doc" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:DOC"
  else if (".pdf" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:PDF"
  end if
 end tell
 return input
end run

例ではダウンロードフォルダーに出現したファイルをbashではmvコマンド、AppleScriptではmoveコマンドで拡張子の種類によって別のフォルダーに移動させています。わかりやすくする為にこのように書きましたが、どちらを使うにせよこのままでは役に立ちません。移動先のフォルダーに同名のファイルがあった場合、bashでは上書きされてしまいますし、AppleScriptでは何も処理がされません。そこで条件分岐の後に何らかのチェックをおこなわなくてはなりません。bashでしたら次の例のように同名ファイルが存在するか確認して移動させるといいでしょう。例では同名ファイルが存在する場合何の処理を行いません。

if [ -e ~/Music/WAV/$(basename $f) ]; then :; else mv $f ~/Music/WAV/; fi

AppleScriptではtry ~ on error ~ end tryを使ってエラー時の処理を決めておくか、if文でget exists of fileなどを使って同名ファイルのチェックと同名ファイルが存在した時の処理を書くと良いでしょう。

以上かなり手抜きですが悪しからずcoldsweats01







2009年11月26日 (木)

Automatorでエンコード

以前にAutomator勉強中1.2とAutomator勉強中 その1.5.1でやったんですけど、古くなりすぎていたので更新です。簡単に言うとPerlの代わりにiconvを使えと言うだけの話なんですが、スピードが大幅にアップします。ドロップレットのソースをアップしておきますのでお試しあれ〜


Automatorでアプリケーションの作成を選び「シェルスクリプトを実行」をドラッグ&ドロップして、入力の引き渡し方法を「引数として」にします。で、後は以下のコマンドをコピーして保存するだけです。例では新たに作成されるUTF-8のテクストは_utf8.txtという末尾で保存するようにしました。

for f in "$@"
do
 cd $(dirname "$f")
 iconv -f ISO8859-1 -t UTF8 "$f" > $(basename "$f" .txt)_utf8.txt
done

2009年9月15日 (火)

Automatorでlame使用のMP3エンコーダのドロップレット その2(邪道編)

以前にAutomatorを使ってlameのMP3エンコーダのドロップレットを作ると、「シェルスクリプトを実行」ではlameが起動してすぐにこけるということを書きましたが、今でも状況は変わっていないみたいです。lameが何らかの形でAutomatorで使用できない部分を含んでいるのかもしれませんがド素人のわたしにはわかりません。実際他のコマンドは問題なく動きます。例えばmpg123を使ってMP3ファイルをWAVにエンコードするドロップレットを下の画像のコードみたいに書くとうまく動きます。

Mpg123

for f in "$@"
do
  cd $(dirname "$f")
  /usr/local/bin/mpg123 -w $(basename "$f" .mp3).wav "$f"
done



すっきりしないながらもしかたがないので「AppleScriptを実行」を導入してその中で「do shell script」を実行し問題を回避しています。lameのオプションは適当な例です。

Lame_automator


on run {input, parameters}
  repeat with obj in input
   set sound_file to POSIX path of obj
   do shell script "/usr/local/bin/lame -V0 --vbr-new " & sound_file & " " & "$(/usr/bin/dirname " & sound_file & ")/" & "$(/usr/bin/basename " & sound_file & " .wav).mp3"
  end repeat
 return input
end run



これはもちろんAppleScriptだけで下の画像みたく書くこともできますが、わたしはSnow LeopardのAutomator実行中に出てくる歯車が気に入っているので敢えてわざわざAutomatorで組んでいます。

Lame_as_2






on open dd_items
  repeat with object in dd_items
   set sound_file to POSIX path of object
   do shell script "/usr/local/bin/lame -V0 --vbr-new " & sound_file & " " & "$(/usr/bin/dirname " & sound_file & ")/" & "$(/usr/bin/basename " & sound_file & " .wav).mp3"
  end repeat
end open

2008年3月19日 (水)

AutomatorでLAMEを使って

MP3エンコーダのドロップレットを作ろうと思ったのですが、これがなかなかうまくいきません。最初に数メガバイトエンコードした後に止まってしまいます。AppleScriptのdo shell scriptを経由するとLAMEはうまく動くんですが...

なぜAutomatorアプリにしたいかって言うと、LAMEの画面が目に入るとなんかこう催眠状態に陥って見とれてしまって仕事の速度が落ちるからなんです。見なければ良いんですけどつい視線が...

2008年3月12日 (水)

クローンもどきの常駐型ファイルの変更監視スクリプト その2(AppleScript邪道編)

グローバル変数を使ったら(on idleより前に入れたモノは全て無駄でした...)大幅に無駄が省けました。前回のはあまりにもダサかったので削除しました。今回のは監視対象ファイルのmodification dateだけでコピーを取るかどうかを判断します。それでもシェルスクリプトやPerlだけをを使った方がマシンのリソースを食わないものができます。

常駐型Intelアプリとして保存するにはスクリプトエディタからフォーマットでアプリケーションバンドルを選択し、「実行後、自動的に終了しない」をチェックします。

global sakki tell application "Finder"  set viimeksi to modification date of file "OSX:Users:Shared:kansitaisyo.txt" end tell on idle
 tell application "Finder"
  set Ima to modification date of file "OSX:Users:Shared:kansitaisyo.txt"
  if Ima = Sakki then
  else
   do shell script "jikan=$(date \"+%Y-%m-%d_%H-%M-%S\");cp /Users/Shared/kansitaisyo.txt ~/Desktop/Sooko/$jikan'.txt';"
   set Sakki to Ima
  end if
 end tell
 return 1
end idle
2017年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

最近のトラックバック