@ gerikson:
Извините, у меня нет ответа, я просто хочу сказать, что я хочу, чтобы больше инструментов приняли настоящий SQL в качестве языка запросов;)
Но технически вы можете сделать это. Каталог Lightroom представляет собой базу данных SQLite - попробуйте просмотреть его с помощью дополнения SQLite Manager в Firefox , и вы увидите, что это довольно просто.
Вы можете сделать это в Lua, написав расширение - увы, я не прошел этот шаг, поэтому я не уверен, как это сделать.
Если вам не нужно, чтобы это была самообновляющаяся коллекция, как работают интеллектуальные коллекции, а вам скорее нужно время от времени запускать скрипт, вы можете написать внешний инструмент для запроса базы данных SQLite так, как вы это делаете. хотите, и создайте xml-файл умной коллекции, явно содержащий конкретные фотографии, и импортируйте его в Lightroom. (Мне нужно было сделать последний бит сам - см. этот вопрос )
Я только что попробовал этот запрос выбора, и он прекрасно работает:
SELECT
img.id_local AS imageID,
kwdef.name AS keyword,
img.rootFile AS fileID,
files.originalFilename
FROM AgLibraryKeywordImage kwimg
JOIN Adobe_images img
ON img.id_local = kwimg.image
JOIN AgLibraryFile files
ON img.rootFile = files.id_local
JOIN AgLibraryKeyword kwdef
ON kwdef.id_local = kwimg.tag
GROUP BY kwimg.image
HAVING COUNT(*)=1
AND kwdef.name = ?
где вы должны либо заменить? с именем ключевого слова (например, 'foo'
) или выполнить как подготовленный оператор. Предложение GROUP BY
делает волшебство: это группирует результаты по изображениям, HAVING COUNT(*)=1
говорит SQL ограничивать его вывод изображениями, имеющими 1 запись.
Этот запрос, вероятно, не будет работать правильно для изображений со стопками, и в этом случае его необходимо изменить, чтобы все JOIN
были однозначными (за исключением таблицы ключевое слово-изображение)