2024-10-21

XMPメタデータをimage-dired内で使う

前回に引き続き、el-xmpの話。

xmp-image-dired.elを追加し、image-dired内で画像ファイルのメタデータを操作できるようにしました。具体的には次のことが可能です。

  • マークしたファイルまたは現在のポイントが指すファイルに対するプロパティの設定
  • 現在のポイントが指すファイルからのプロパティの取得
  • サムネイルのプロパティ値に基づくフィルタ(一時的な非表示)

現在対応しているプロパティは次の通りです。

  • xmp:Rating
  • xmp:Label
  • dc:subject
  • dc:title
  • dc:description
  • dc:creators

image-diredにはタグやコメントを付ける機能が既にありますが、それでは物足りないという人のためのものです(標準機能のタグやコメントは.emacs.d内に独自形式で保存されるので他のアプリと連携できないという問題もあります)。

参考までに設定例としてxmp-setup.elを追加したので、それを使えば簡単にこれらの機能をdiredとimage-diredの両方から利用できるようになります(フィルタはimage-diredのみ。diredではマーク操作が可能)。次のキーが使えるようになります。

  • プロパティ設定
    • ' s r : Set Rating
    • ' s l : Set Label
    • ' s s : Set Subjects
    • ' a s : Add Subjects
    • ' r s : Remove Subjects
    • ' s t : Set Title
    • ' s d : Set Description
    • ' s c : Set Creators
  • プロパティ取得
    • ' g a : Get All properties
    • ' g r : Get Rating
    • ' g l : Get Label
    • ' g s : Get Subjects
    • ' g t : Get Title
    • ' g d : Get Description
    • ' g c : Get Creators
  • マーク(diredのみ)
    • ' m r : Mark by Rating
    • ' m l : Mark by Label
    • ' m s : Mark by Subjects
    • ' m t : Mark by Title
    • ' m d : Mark by Description
    • ' m c : Mark by Creator
  • フィルタ(image-diredのみ)
    • ' f r : Filter by Rating
    • ' f l : Filter by Label
    • ' f s : Filter by Subjects
    • ' f - : Clear Filter

例えば ' s r でレーティングを設定して、 ' f r で特定のレーティングのみを表示する、といった使い方ができます。 ' f - でフィルタを解除します。HydraやらTransientやらで使いやすくした方が良いと思いますが、とりあえず設定例ということで。

ここで言うLabel(xmp:Labelプロパティ)は、ファイルに対して一つだけ設定できる短い文字列です。定義については https://developer.adobe.com/xmp/docs/XMPNamespaces/xmp/ を参照してください。Adobe Lightroom等ではカラーラベルを設定するとこのプロパティにRedやBlueといった色名が設定されるらしいです。

Subject(dc:subject)は、ファイルの主題を表すキーワード等のリストです。定義については https://developer.adobe.com/xmp/docs/XMPNamespaces/dc/https://www.dublincore.org/specifications/dublin-core/dcmi-terms/terms/subject/ を参照してください。実質的にはある種のタグとして使用してしまって良いのではないかと思います。主題なので、ファイルが何を表現しているのかといった観点から付けた方が良いのだと思います。何か作業の状態等を付けるのは憚られる感じかと思います。

フィルタ表示機能は元々image-diredが対応していないものを無理矢理実現しているので、Emacsのバージョンアップに伴って機能しなくなる可能性があります。気がついたら直すつもりです。

image-dired内でマークしたファイルにdc:subjectプロパティを設定している所
図1: image-dired内でマークしたファイルにdc:subjectプロパティを設定している所