用途:在 digikam 的 grouchygiraffe 和 shamblingshark 相册中,查找符合“untagged or undated”保存搜索(id=42)的媒体文件,读取其 YAML 元数据,判断是否为食品内容,并写入相应 digikam 标签。应用标签前必须先向用户报告发现结果。
主要能力:通过 SQL 查询定位未打标签或未标日期的文件,条件为 AND 关系,并排除仅有 Color Label% 标签的文件;读取 YAML 中的 uploader、title、description 字段;按关键词匹配食品子标签(如 sourdough、salsa、peppers、indian、paneer、soup、beans、tomato、coffee、honey、dumpling、vegan、pizza 等),无子标签匹配时仍应用基础标签 food(id=109);对描述为空但上传者名称暗示食品内容的文件应用 food + noyamldesc;无任何信号时仅应用 noyamldesc;非食品内容跳过。
使用方式:数据库路径为 ~/Pictures/digikam4.db,每次运行前备份:cp ~/Pictures/digikam4.db ~/Pictures/digikam4.db.bak.$(date +%Y%m%d_%H%M%S)。grouchygiraffe 的 YAML 位于 /Users/mtm/pdev/taylormonacelli/grouchygiraffe/data/<shortcode>.yaml,去掉文件扩展名得到 shortcode;shamblingshark 的 /output 文件为 UUID 命名且无 YAML,跳过分类并应用 noyamldesc。写入标签使用 INSERT OR IGNORE,并按 ar.label 限定相册根以避免同名文件误标。
适用场景:批量整理食品/食谱类媒体库,自动补全 digikam 标签。
限制:依赖本地 digikam 数据库与特定目录结构;分类基于 YAML 描述和上传者名称的关键词匹配,描述为空时可能无法准确判断;noyamldesc 需与 ai-tagged 配对使用;运行后需更新 Obsidian 库中的 moonlitlynx progress.md 并提交进度记录。