sách gpt4 ai đã đi

Sử dụng nhiều từ khóa trong xattr thông qua _kMDItemUserTags hoặc kMDItemOMUserTags

In lại Tác giả: Space Dog 更新时间:2023-10-30 01:22:58 hai mươi bốn 4
mua khóa gpt4 Nike

在重新组织我的图像时,考虑到 OSX Mavericks,我正在编写一个脚本,将标签插入到图像文件的 xattr 字段中,这样我就可以使用 Spotlight 搜索它们。 (为了安全起见,我也在编辑 EXIF。)

我的问题是:

  1. 哪个属性最好用? _kMDItemUserTags 似乎是 OSX 版本,但 kMDItemOMUserTags 已被 OpenMeta 使用。理想情况下,我希望能与 Linux 和 OSX 向前兼容。

  2. 如何设置多个标签?逗号或空格分隔还是其他?

例如,使用 python xattr 模块,我发出这些命令:

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

我还看到提到了这些标签:kOMUserTagskMDItemkeywords 但不知道它们是否可能被实现...

编辑:进一步的调查表明,对于在 10.8 中可搜索的内容,

  • 您需要在 kMD 前加上 com.apple.metadata:
  • 您必须进行十六进制编码或包装在 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 = ''
plistEnd = '
'
plistTagString = ''
for Tag in TagList:
plistTagString = plistTagString + '{}'.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]

我无法让它在具有可靠结果的文件夹上递归工作。

1 Câu trả lời

  1. 如果您担心兼容性,您必须同时设置这两个属性 _kMDItemUserTagskMDItemOMUserTags .我不认为有不同的解决方案,因为所有新的 OS X 应用程序都将使用前一个属性,而旧的应用程序仍然使用后者。这只是我的猜测,但我猜 OpenMeta 最终会被新的原生 API 取代。展望 future ,您可以使用 _kMDItemUserTags即使在 Linux 环境中也可以为您的新应用程序/脚本添加属性。

  2. 标签被设置为属性列表编码的字符串数组,如您所见。我不知道这是否是一项要求,但 OS X 以二进制格式而不是像您那样以 XML 对属性列表进行编码。

我调整了您的代码以使用二进制属性列表作为属性值并且一切正常。这是我的代码。我正在使用 biplist 库,你可以通过 easy_install biplist 获得它.

import xattr
import biplist

def write_xattr_tags(file_path, tags):
bpl_tags = biplist.writePlistToString(tags)
optional_tag = "com.apple.metadata:"
map(lambda a: xattr.setxattr(file_path, optional_tag + a, bpl_tags),
["kMDItemFinderComment", "_kMDItemUserTags", "kMDItemOMUserTags"])

sử dụng tag: 对文件和目录进行了测试在聚光灯下。

Hy vọng thông tin này có ích với bạn.

  • Để ý:我在此答案中使用的是 OS X Lion,但它应该可以在 Mavericks 上正常运行。
  • biên tập:如果您想将标签应用于目录的内容,则必须对每个文件单独完成,因为 xattr python 模块没有递归选项。

关于python - 通过 _kMDItemUserTags 或 kMDItemOMUserTags 在 xattr 中使用多个关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009101/

hai mươi bốn 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com