FileMakerで作るメディア管理のデータベース。ExifTool を使ったエクスポートで、ちょっとしたメタデータ設定が可能となりました。
MediaDB R13 エクスポートのメタデータ設定
R13の特徴はエクスポートです。前回、盛りすぎたので今回は小さくいきます。エクスポートにも ExifTool の恩恵を施しいくつか設定が追加されました。
- メタデータを含める含めないを選択できます。「含めない」ですべてのメタデータを取り除けます。
- いくつかのフィールド(見出しや概要、著作権絡みのいくつか、キーワード)をメタデータとして追加できます。
MediaDB R13
DownloadMediaDB_R13.zip
Mac専用です。FileMaker 19.3以上。ExifTool必須。
R13(13.01) 2023.08.22
最新のバージョンは INDEX から確認してください。
マニュアルページ作り始めました → 使い方 最新のバージョンに準じていますが。
エクスポート
Exiftool をエクスポートにも活用します。設定項目を追加しました。
まず、メタデータを取り除く設定です。「取り除く」をクリックして有効にするとすべてメタデータを取り除きます。設定しないと元のファイルのまま維持されます。
次に、メタデータ追加指定という設定があります。
メインテーブルのいくつかのフィールドはメタデータのタグと同じ意味と役割を持っています。例えば「見出し」フィールドはメタデータタグ「Headline」と関連があります。
関連があるフィールドは、ファイルから取得するメタデータとは別に編集できます。これらを、メタデータとして埋め込むことができるというわけです。
「メタデータ追加指定」でチェックするのは分類です。分類には複数のフィールドや複数のタグが含まれます。
例えば「見出しと概要」をチェックすると、見出しフィールドと概要フィールドが書き出されます。書き出されるタグは、IPTCのHeadline と XMPのHeladline 、IPTCのDescriptionとCaption-Abstract です。
グループ名をチェックしたら、その右側に「追加」と「取り除く」があります。チェックしたグループのタグと値を、ファイルに追加で埋め込むか、取り除くかを選べます。
「メタデータを取り除く」と、「メタデータ追加指定」は独立した設定です。「メタデータを取り除く」を選んだ上で「追加指定」で何かにチェックを入れ「追加」することも可能です。
例えば、一旦メタデータをすべて取り除いた上で、著作者情報のみチェックして追加するといったことができます。
仕組み編
エクスポートの仕組みはR5で開始して以来あまり変化していません。リレーションも単純で、メインデータと作業場としてのExportテーブルのみ使っています。
エクスポートではファイル名の変更などすでに凝ったことやってますが、基本はFileMakerの「フィールド内容のエクスポート」を使用しているだけです。ですので、まとめて複数レコードを処理するときでも基本はレコードを一個ずつ処理します。
エクスポート LEVEL 2
現時点でのエクスポートについて、どのようなフィールドを使ってどのようなスクリプトを書いたかをざっとまとめておきます。
エクスポート設定
エクスポートの設定を保存するフィールドをいくつも用意しています。今回追加もされました。
- 書き出し対象 … このレコードのみ、対象レコード、選択されたレコード いずれかを指定
- 書き出し先フォルダ … フォルダを選択して指定
- ファイル名を変更 … ファイル名を変更するかしないかの設定
- 変更するとき。ファイル名を使用、前に追加、後ろに追加
- 連番を使用 … 書き出し対象が複数の場合、連番を使用するかしないかの設定
- 連番使用のとき。セパレータ、開始番号、連番の場所(前または後)
- リサイズ … 画像をリサイズするかどうかの設定
- リサイズするとき。リサイズ後の幅、リサイズ後の高さ(FM対応イメージファイルのみ)
- メタデータを取り除くかどうかの設定
- メタデータ追加指定 … グループをチェックする
- 追加指定があるとき。メタデータとして追加するか取り除くかを設定
これだけのことを設定してからエクスポートします。
スクリプト
書き出し対象に応じてレコードを用意するスクリプトを発動します。対象レコードの場合は何もせずそのまま、セレクトならセレクトを検索、このレコードならこのレコードのみを残す。その前に「現在の対象レコードを保存する」スクリプトを走らせておき、事が終われば「対象レコードを復元」スクリプトで元に戻します。
書き出し先フォルダは「フォルダパスを取得」してからパスの形に整えます。FMパスとPOSIXを作っておきます。
ファイル名や連番は、Substitute関数を駆使して強引に作成します。
リサイズする場合は、別テーブル「Export」のオブジェクトフィールドに一旦リサイズしたオブジェクトを作成してからそれを書き出します。
メタデータのスクリプトは CodeRun と metaKeysテーブルを駆使します。要となるのは Exiftool のオプションを作成するスクリプトです。この件については以降でゆっくりと。
metaKeys
前回から俄に注目の metaKeys.fmp12 です。このファイルのテーブルは、もともとは ExifTool のタグ名を網羅するために作られました。
網羅した後は、メインテーブルのフィールドと関連付けを行うため、インポート用に entry_field、エクスポート用に output_field というフィールド名を記入するフィールドを設けています。これらフィールドがループの中でメタデータのタグ名とフィールドを結びつけます。
今回は「カスタム分類」フィールドが活躍します。これは完全手動のカテゴライズです。
メインデータのフィールドと関連する分類名を与え、それを値一覧にも作ります。値一覧を利用して、エクスポート設定画面でチェックによる設定が可能になります。最終的に、分類に含まれるタグと値を実際のレコードから作成して画像ファイルに埋め込みます。
エクスポート設定でチェックした分類名で検索し、フィールド名(output_field)とタグ名(key)のリストを手に入れることがこのテーブルの目的です。このリストに実際のフィールド内容が加わり、メタデータ埋め込みのオプション作成へと繋がります。その説明はこの少し後で。
metaKey についての投稿がアップされたのでリンクしておきます。
CodeRun
仕組み的には、オブジェクトのメディアファイルを一旦書き出した後、書き出されたファイルに対して ExifTool のコマンドを実行します。
使用するコマンドは二つ。一つは「メタデータを含めない」に設定した時の「全メタデータ削除」コマンド、もう一つは、フィールドをタグとして追加する仕組みで使う「メタデータ追加」コマンドです。この二つ、設定に応じて連続で実行する場合もあります。
メタデータを全部削除
全部削除といっても必要最低限のファイル情報は残ります。
-all= を使います。
exiftool -overwrite_original_in_place -all= $POSIX
これでメタデータを削除できます。$POSIX にはレコードの filePosix ではくて書き出したファイルパスを指定します。ここ間違えるとオリジナルを改変してしまいますからスクリプト作者は注意ですね。
-overwrite_original_in_place はファイルを上書きて基本部分を維持します
( -overwrite_original は元ファイルを棄てて新規保存しますからファイル属性が失われます)
メタデータを追加
ExifTool では追加・編集するのも簡単、copyright を追加・編集するなら -copyright=’編集内容’ こうオプションに書くだけです。
コマンドで注意することは、IPTC が文字コードを理解できないので、明示的に示しておかねばならないことです。
exiftool -iptc:all -codedcharacterset=utf8 -overwrite_original_in_place $OPTION $POSIX
-iptc:all -codedcharacterset=utf8 この一文を入れておかないと日本語が消えたり文字化けします。
$OPTION には、追加するタグと値を書き連ねます。何を書き連ねるかはエクスポート設定によって変わりますね。ですので CodeRun では $OPTION という変数にしておき、FileMaker で細かいオプションを作ってから置換して填め込みます。
$OPTION を作成
オプションを作成するスクリプトは次のような流れです。
エクスポート設定で追加指定にチェックされた分類名を metaKeys レイアウトで検索、その結果から output_field(フィールド名) と key(タグ名) を1行に納めたリストを作成します。
メインデータレイアウトにもどり、さきほどのリストをループして output_field のフィールド内容をゲット、ちょちょっと整形して最終的に「 -key=’値’」を1行とするリストを作成。ループが終われば最後リストの改行をスペースに変換します。
「追加または取り除く」の設定で取り除くを選んでいた場合は上記の処理中、値部分をすべてスペースにしておきます。
以上で「 -key=’値’ -key=’値’ -key=’値’ -key=’値’」という形のオプションが完成するので CodeRun の $OPTION を置換します。
FileMakerの「フィールド内容のエクスポート」した後のファイルに対して CodeRun を実行させ、メタデータ操作を完了させます。ExifTool ありがたや。
おわりに
こうして ExifTool の使用開始により、前回 R12 ではインポート、今回はエクスポートでメタデータに関する設定内容が追加されました。
実は今回のエクスポートの措置は暫定的と言えるかもしれません。というのも、本当ならエクスポートでファイルタイプの変更を同時に行いたいからです。Mac専用と居直っているので sips コマンドを利用しますが、どう組み込むか決めかねており、どうせなら画像編集ということまで視野に入ってしまいます。ですのでそれはもうちょっと後回しに。
*
現状では著作権に関するフィールドがいくつか、見出し、概要、キーワードがメタデータと連動するフィールドです。他にメタデータと連動するフィールドを追加したくなるでしょうか。地域や場所に関する情報かな。まあ、わかりませんが、追加されることもあるかもしれません。
*
CodeRun について何も説明せずに流しましたが、これが何かというのは以下とその周辺の投稿にて散々やってきております。ご参考に。