まいける's Tech Blog

LAMP関係のメモなどを不定期に掲載します

Automator を使ってフォルダ内の aif ファイルを lame で mp3 にエンコードする

 下の記事を発展させて、フォルダ内の aif ファイルをまとめてエンコードすることに成功したので、その記録。

 前提として、lame の場所は、/Applications/iTunes-LAME.app/Contents/Resources/lame にあるとします。

 次に、Automator を組んでいきます。使用するのは、「選択された項目を取得」「フォルダの内容を取得」「シェルスクリプトで実行」。最初の2つは特に問題ないので、肝心なのはシェルスクリプトの中身。

for f in "$@"
do
if [ ${f##*.} = "aif" ];then
/Applications/iTunes-LAME.app/Contents/Resources/lame --preset fast extreme --quiet "$f" "${f%.*}.mp3"
fi
done

こんな感じで書きます。シェルは /bin/bash、入力の引き渡し方法は「引数として」を選びます。

 これで、「ファイル>プラグインとして保存」で対象を Finder にして「フォルダ内のファイルをMP3に変換」のような名前で保存すれば、対象のフォルダのコンテクストメニューを開き、「その他>Automator>フォルダ内のファイルをMP3に変換」で一括してエンコードすることができます。ファイル名は元の aif ファイルと同じで、拡張子だけが mp3 に変わります。

Automator を使って lame エンコードを自動化する

 やりたいことはMacにLAMEをインストールしてWAV、AIFFファイルをMP3にお気楽変換と同じなんだけど、自分の環境ではそのままではうまくいかなかったので、その記録。

 lame のソースを取得して、コンパイルするところまでは、上記のサイトと同じ。ただ、上記のサイトでは、configure はしているけど、make をしていないので、実際には

env CFLAGS="-fast -march=i686 -msse3 -mfpmath=sse"
./configure
make

を実行し(tcsh の場合ね)、生成された ./frontend/lame を適当なところにコピーor移動することになります。

 私の場合は、iTunes-Lame でも使いたかったので、/Applications/iTunes-LAME.app/Contents/Resources/ 以下にコピー。既存の lame と置き換えます。

 次に、Automator を組むわけですが、上記のページの「シェルスクリプトで実行」の中身を少し変更します。

/Applications/iTunes-LAME.app/Contents/Resources/lame --preset fast extreme --quiet $1

のように、lame のオプションに --quiet を付け加えます。これをしないと、シェルスクリプトが終了しなくなるので要注意。

 あとは、「ユーザフォルダ>ライブラリ>Workflows>Applications>Finder」に適当な名前で保存すればよいのですが、初めて Automator を組んだときには、該当するフォルダがなくて焦ります。どうやら、上記の場所に保存することは、Automator で「ファイル>プラグインとして保存」で対象を Finder にした場合と同じようですので、こちらを使って保存します。

 これで問題なく動くと思います。

メールアドレスのドメイン名でソートする(MySQL)

 メールアドレスのドメイン名でソートするSQLと同じことが MySQL でできないものかと考えていたのですが、SUBSTRING_INDEX 関数を使えば可能らしい。

SELECT SUBSTRING_INDEX([column],'@',-1) AS domain, count([column]) AS count
FROM [table_name]
WHERE [conditions]
GROUP BY domain
ORDER BY count DESC

[column] = メールアドレスのカラム名
[table_name] = テーブル名
[conditions] = where節の条件

意外に簡単でした。