app.metadata - Spotlight 元数据 API
Spotlight 元数据查询与搜索。
方法
app.metadata.get(path, keys?)
获取文件的 Spotlight 元数据。
参数:
path(string) - 文件路径keys(array, 可选) - 指定返回的元数据键名数组
返回值: table, error - 元数据字典
-- 获取所有元数据
local meta, err = app.metadata.get("/path/to/photo.jpg")
if meta then
app.log.info("创建日期: " .. tostring(meta.kMDItemContentCreationDate))
app.log.info("像素高度: " .. tostring(meta.kMDItemPixelHeight))
end
-- 获取指定键
local meta, err = app.metadata.get("/path/to/file", {
"kMDItemContentType",
"kMDItemFSSize",
"kMDItemContentCreationDate"
})
app.metadata.search(query, scope?, limit?)
Spotlight 搜索。
参数:
query(string) - Spotlight 查询字符串(MDQuery 格式)scope(string, 可选) - 搜索范围(目录路径)limit(number, 可选) - 最大结果数(默认 100)
返回值: array<table>, error - 搜索结果,每项包含 path 和匹配的元数据
-- 搜索当前目录中的 PDF 文件
local results, err = app.metadata.search(
"kMDItemContentType == 'com.adobe.pdf'",
context.currentDirectory,
50
)
-- 搜索包含关键词的文件
local results = app.metadata.search("kMDItemTextContent == '*swift*'")
-- 搜索修改日期在最近7天内的图片
local results = app.metadata.search(
"kMDItemContentTypeTree == 'public.image' && kMDItemFSContentChangeDate >= $time.today(-7)"
)
常用元数据键
| 键名 | 说明 |
|---|---|
kMDItemContentType |
文件类型(UTI) |
kMDItemFSName |
文件名 |
kMDItemFSSize |
文件大小(字节) |
kMDItemContentCreationDate |
创建日期 |
kMDItemContentModificationDate |
修改日期 |
kMDItemPixelWidth / kMDItemPixelHeight |
图片像素尺寸 |
kMDItemDurationSeconds |
媒体时长(秒) |
kMDItemAuthors |
作者 |
kMDItemTitle |
标题 |
示例
查看图片 EXIF 信息
function MyPlugin:handleExifInfo(context)
local file = context.selectedFiles[1]
local meta, err = app.metadata.get(file, {
"kMDItemPixelWidth", "kMDItemPixelHeight",
"kMDItemColorSpace", "kMDItemBitsPerSample",
"kMDItemFocalLength", "kMDItemExposureTimeSeconds",
"kMDItemFNumber", "kMDItemISOSpeed"
})
if not meta then
app.dialog.alert("错误", err or "无法获取元数据")
return
end
local info = ""
for k, v in pairs(meta) do
info = info .. k .. ": " .. tostring(v) .. "\n"
end
app.dialog.alert("图片信息", info)
end