フォト

デブネコのおすすめリンク集

無料ブログはココログ

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

2008年3月11日 (火)

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

というようなものを作ってみました。初めてAppleScriptでアプリを作ってみましたが、色々と実験が楽しくてのめり込みますねえ。共有フォルダにある監視対象のブツとデスクトップ上の比較フォルダにあるブツのコピーのファイルのmodification date(変更日)を1秒ごとに比較して、違っていたらデスクトップ上の倉庫にチェックした時間をファイル名としてブツを保存し、比較フォルダにあるコピーも最新のものに更新するという単純なものです。監視対象のブツのmodification dateが刻々と変化するという前提です。modification dateは秒まで取得できますので、1秒ごとの巡回でもしっかり差をチェックできます。当然のことながら1秒以内の変化は把握できませんが。あとmodification dateは内容に違いがなくても保存時刻によって変わってしまいますので、無駄なコピーが多くなるかもしれませんね。実はシェルスクリプトでも同じようなのを書いてみたんですが、やはりと言うか予想通りと言うかシェルスクリプトの方がコンピュータのリソースを使わなくて効率良いです。AppleScriptアプリの唯一の利点はファインダからアプリを終了できることでしょうか。ところで、本当に1秒おきにコピーを取ると突然Spolightがインデックスを作成し始めてファンがブンブン回ることになってもー大変...

あまりにもダサイので削除しました。その2をご覧ください。

AppleScriptでテキストの比較は?

まあUNIXのdiffと同じことをしようとしたんですが、適当な例が見つからなかったので、二つのファイルを読み込んで = かどうかで判断すると言うめちゃくちゃなスクリプトで例の常駐型ファイル監視アプリを作ったらプロセッサの使用率が50パーセント以上(!)の大変なアプリになってしまいました。こういうのはやはりUNIXコマンドとのキメラにするかmodification dateの比較なんかで処理すべきなんでしょうねえ。

2008年3月10日 (月)

AppleScriptアプリはPowerPCアプリ?

AppleScriptのon idleを使ってcronもどきの常駐型ファイル監視アプリを作ったのですが、AppleScriptのアプリってPowerPCアプリとして認識されてしまうんですね。実際はどの程度PowerPCアプリなのかわかりませんが、マウスのカーソルが色付きではなくて懐かしい白黒の丸に変わってしまいます。do shell scriptを使って中身はPerlで処理しているんですが、Perlだけで無限ループを使って同じことした方がAppleScriptでアプリにするよりもバーチャルメモリで半分、プロセッサの負荷で13分の1ですみました。PowerPCアプリということが影響しているんでしょうかね。ということでわざわざAppleScriptを使うことはなかったという間抜けな結果になりました...まあいつものことか...

と書いた後にネット検索したらユニバーサルバイナリにする方法がしっかり見つかりました。保存をアプリケーションではなくてアプリケーションバンドルにすれば良いだけでした。結果として0.3パーセント程プロセッサの負荷が減り、バーチャルメモリの使用量が200MBぐらい減りましたが、カーソルの白黒の丸は変わりませんし、ただのPerlスクリプトの方が効率が良いというのも変わりません。わざわざkillコマンドで殺す必要がないのは手軽ですけどね。

2008年3月 8日 (土)

Automatorを勉強中 その1.6

今ファイルの変更をチェックして変更があった場合にはファイル全体のコピーを保存先のフォルダに送るというようなものを作っているんですが、やはり一定時間ごとに(例えば1秒ごとに)チェックするしか方法が見つかりません。ファイル保存のイベントハンドラがあれば良いのですが、ないみたいですねえ。

2008年1月25日 (金)

Automator勉強中 その1.5.1

このシリーズも読み返してみると最初の頃は我ながらすごくとろいことやっていますね (^^;

Automatorで作った古いアプリを書き直してみました。ドロップしたテキストファイルをISO-8859-1からUTF8にエンコードするアプリです。


Utf8

Automator勉強中 その1.5

久々のAutomatorネタ(と言えないかもしれません)。Automatorのワークフローはコマンドラインからでも使えるので色々実験しているのですが、これはこれで難しいですねえ。

わたしが使ってみた簡単な実験用のワークフローでのやり方を説明しておきます。

ワークフローの内容
指定されたPDFファイルをページごとのイメージとして「画像」フォルダに保存する。


1.Automatorを立ち上げ、アクションの中から「PDFページをイメージとしてレンダリング」を選び右側にドロップ。同様に「新規フォルダ」のアクションも続けてドロップ。

1





2.このワークフローをデスクトップ等任意の場所にワークフローとして保存。

2





3.後はターミナルを立ち上げてautomatorコマンドで使うだけです。わたしの例の場合は i オプションでインプットに語彙集のPDFファイルを指定、その後に使うワークフローを指定しています。形としては「automator -i インプット ワークフロー」というような感じです。

3





4.結果

4

繰り返し文等を使おうとするとエラーが出てしまいます。まあ、何かに使えるかもしれませんけど、もしかしたら全く役に立たないかもしれません。

2009年12月
    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    

デブネコのおすすめブログ・ホームページ集

  • ミサの日芬・芬日語彙集 / Misan japani-suomi / suomi-japani -sanasto
    Ilmainen japani-suomi / suomi-japani -nettisanasto. フリーの日本語ーフィンランド語語彙集。お金をかけずに手軽にフィンランド語の勉強をしたい方に最適。
  • Söpö
    名前の通りとても可愛いmacoさんと黒猫まめちゃんのホームページ。フィンランドのことやアンティーク着物等のことがとてもわかりやすく深く書かれています。フィンランドファンはもとより着物ファンもGo!
  • Kiitti!
    lahjaさんが綴るフィンランド人の彼氏との国際恋愛進行形ブログ。フィンランド人の彼氏、彼女を持つ人もしくは持つ予定の人は必見!
  • makon makoisia herkkuja
    フィンランド在住のmakoさんがオリジナル料理のレシピをきれいな写真とともに紹介しているお料理ブログ。お料理ファンの方はGo!

最近のトラックバック