ラベル spotlight の投稿を表示しています。 すべての投稿を表示
ラベル spotlight の投稿を表示しています。 すべての投稿を表示

2013年9月20日金曜日

ThunderBird のメールを Spotlight 検索して Quicklook

ThunderBird のメールを Spotlight の検索対象にできないものか,とかねてから考えていたのだが,今日ちょっと思い立って検索してみたら良い情報が見つかった.早速試してみたところ期待通りにうまくいったのでその過程をメモ.
なお、テストしたマシンのOSはSnow Leopard.
mountain Lionなどで動くかどうかは試していないので悪しからず。

 ベースとなるのはブログ「鳥獣保護区」のエントリ「Spotlight で Thunderbird のメールを検索」にある記事.

やることを大きく分けると以下の3つ.
  1. Thunderbird.mdimporter をダウンロードしてインストール.
  2. ThunderBird の設定を変更.
  3. Quicklook の設定を変更. 
1. Thunderbird.mdimporter のダウンロードとインストール

https://bugzilla.mozilla.org/show_bug.cgi?id=290057#c110
に行って,
コメント番号110(日付は2007-07-11 06:05:58 PDT)の投稿にある
「attachment 271826」
のリンクをクリックすると "Thunderbird.mdimporter.zip" がダウンロードされる.
このファイルを解凍すると "Thunderbird.mdimporter" ができるので,これを
  フォルダ ~/Library/Spotlight (←現在のユーザ用)
もしくは
  フォルダ /Library/Spotlight (←全ユーザ用)
に入れる.

2. ThunderBird の設定を変更

Thunderbird の「環境設定」→「詳細」タブをクリックすると図のような画面になる.
ここで右下にあるボタン「設定エディタ」をクリック.すると警告表示がでるので,「細心の注意を払って使用する」ボタンをクリック.すると下図のような画面が開く.検索窓に 'mail.spotlight' と入れると図のような項目がリストアップされるので,このうち
mail.spotlight.enable の値を false から true に変更する.

変更の仕方は,当該行の false の部分にカーソルをあわせて右クリック.コンテキストメニューが表示されるので,一番上の「切り換え」を選択.
これで,spotlight 用インデックスの構築が開始する.
具体的には,
  フォルダ ~/Library/Caches/Metadata/Thunderbird/
が作成され,その中に設定しているアカウントに応じて階層構造をもったフォルダ群が作られる.最下位のフォルダの名前には '.mozmsgs' という拡張子が付いていて,その中に拡張子 'mozeml' の付いたファイルが格納される.この'mozeml' というのがメールのテキストデータで,spotlight はこの中身を検索してくれるという寸法.

mail.spotlight.enable の値を false から true に変更し,少し間を置いてから自分のメアドで spotlight 検索すると,メールが色々検索にひっかかって「おお!」となった.確かに ThunderBird のメールが検索できている.良い気分.

しかし,すこし間を置いたくらいでは,検索にひっかかるメールの数はごく僅か.インデックスが完成するまでには相応の時間が必要だろう.筆者の場合,6時間ほど経ってもまだ完了していないようだった(インデックス作成の進捗状況を確かめる事ができないので推測の域を出ない).ThunderBird を終了すると,インデックスの作成も中止されてしまうらしいので,ThunderBird を起動したまま,できあがるのをじっくり待つ事としよう.

3. Quicklook の設定を変更

さて,Spotlight 検索できるようになったのなら,検索結果の画面ですぐさま中身を Quicklook したくなるのが人情というもの.検索にひっかかるファイルの本体は先ほど書いた拡張子 ".mozeml" のファイル.このファイルをテキストエディタにドラッグ&ドロップしたところ,中身は普通のテキストデータであることが判明.よって一般のテキストファイルと同じように Quicklook できるはず.

筆者は 'QLColorCode.qlgenerator' を使っているので,こいつに拡張子 ".mozeml" がテキストデータであることを教えてやれば良い.

".mozeml" のファイルを mdls したところ,ContentType は com.mozilla.thunderbird.mozeml となっていた.そこで,
  /Library/QuickLook/QLColorCode.qlgenerator/Contents
を Property List Editor で開き,下のように com.mozilla.thunderbird.mozeml を Document Content Type UTIs に追加した.

これで,Quicklook できるようになった! めでたしめでたし.

2010年12月4日土曜日

spotlightは検索条件が3つになるとバグる

前の投稿で書いたように,拡張子とクリエータでファイルを検索する必要がでてきたのでやってみた.

探したいのは,クリエータが「MMKE」でなく,拡張子が「.tex」である項目.
やりかたは以下の通り.

Finder 上でメニューから「ファイル」>「新規スマートフォルダ」とやって新しいウィンドウを開く.ついで,プラスボタンのクリックによって新しい検索条件の入力行を2行追加し,
RAWクエリーが「kMDItemFSCreatorCode!="MMKE"」
RAWクエリーが「kMDItemDisplayName=="*.tex"」
と入力する.

すると,ファイルが腐るほど引っかかるので,これは適わんということで,日付指定することにした.検索条件の入力行をもう一つ追加し,
RAWクエリーが「kMDItemFSCreationDate>$time.iso(2009-01-01)」
と入力する.これは作成日が2009年1月1日以降のファイルを探すということであるが,この条件を追加すると,ヒットするファイルが0になる.実際には該当ファイルがあるにもかかわらずだ.

これは一体どういう事なんだ??

3つの条件のうちいずれか1つを抜かして検索すればちゃんとファイルがリストアップされるから,検索条件に誤りがある訳ではない.よって,条件を3つ与えると機能しなくなると考えざるをえない.

一方,terminal で mdfind を使うと,ちゃんと検索できるようである.

$ mdfind 'kMDItemDisplayName=="*.tex" && kMDItemFSCreationDate>$time.iso(2009-10-01) && kMDItemFSCreatorCode!="MMKE"'

ただ,見つかるファイルの数がなんとなく少ないような気がするのだが、、、まあそれは検索条件の問題とは別の話なので,ここでは棚に上げておこう.

とりあえず,実験で得られた結論.

Spotlight検索は条件を3つ以上指定すると,誤動作する.信頼できない.
こういう場合は mdfind を使うべし.

なお,mdfind と Spotlight検索では日付指定する方法などについて文法が異なるので注意が必要.

mdfind における検索条件の文法は Apple のサイト 「Query Expression Syntax」にきちんとまとめてあるので,そちらを参照しましょう.