6

xattr画像を整理しているときに、OSX Mavericks を見越して、Spotlight で検索できるように、画像ファイルのフィールドにタグを挿入するスクリプトを作成しています。(安全のためにEXIFも編集しています。)

私の質問は次のとおりです。

  1. どの属性を使用するのが最適ですか? _kMDItemUserTagsOSX バージョンのようですが、kMDItemOMUserTagsOpenMeta で既に使用されています。理想的には、Linux と OSX の前方互換性があるものが欲しいです。

  2. 複数のタグを設定するにはどうすればよいですか? カンマまたはスペースで区切られていますか、それとも何か他のものですか?

例として、pythonxattrモジュールを使用して、次のコマンドを発行しています。

xattr.setxattr(FileName, "_kMDItemUserTags", "Name - Sample")
xattr.setxattr(FileName, "kMDItemOMUserTags", "Name,Institution,Sample")

これらのタグについての言及も見ました:kOMUserTagsそしてkMDItemkeywords、それらが実装される可能性があるかどうかはわかりません...

編集: さらなる調査の結果、10.8 で検索可能になるには、

  • kMD の前に com.apple.metadata を付ける必要があります。
  • 16 進エンコードするか、plist でラップする必要があります。

この python コードは、スポットライトで検索可能な kMDItemFinderComment のタグを生成します...

def writexattrs(F,TagList):

    """ writexattrs(F,TagList):
    writes the list of tags to three xattr field:
    'kMDItemFinderComment','_kMDItemUserTags','kMDItemOMUserTags'
       This version uses the xattr library """

    plistFront = '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array>'
    plistEnd = '</array></plist>'
    plistTagString = ''
    for Tag in TagList:
        plistTagString = plistTagString + '<string>{}</string>'.format(Tag)
    TagText = plistFront + plistTagString + plistEnd

    OptionalTag = "com.apple.metadata:"
    XattrList = ["kMDItemFinderComment","_kMDItemUserTags","kMDItemOMUserTags"]
    for Field in XattrList:
        xattr.setxattr (F,OptionalTag+Field,TagText.encode('utf8'))
            # Equivalent shell command is xattr -w com.apple.metadata:kMDItemFinderComment [PLIST value] [File name]

信頼できる結果を持つフォルダーで再帰的に動作させることができませんでした。

4

1 に答える 1