Как мне найти каталог Lightroom, с картинки - Фотопедия
2 голосов
/ 16 ноября 2016

Неа. Вопрос не столько в том, чтобы найти изображение в каталоге Lightroom, сколько в том, чтобы найти каталог, к которому принадлежит изображение.

У меня есть изображение. Я знаю, как называется главный образ, и, что более важно, у меня есть местоположение файла. Это на удаленном диске, который на нескольких ноутбуках сохранил одинаковую букву диска и в том же месте.

Я знаю, что изображение было отредактировано, поэтому я знаю, что оно находится в одном где-то (я помню, как менял BG с красного на черный с помощью регулировочной кисти).

Теперь проблема в том, что у меня десятки из тысяч изображений, хранящихся в нескольких каталогах, со времен, когда мой ноутбук и LR просто расстраивались из-за того, что в нем было определенное количество изображений ... и это было со времен, когда мои каталоги были с пользой названы / пронумерованы / датированы.

Я хотел бы найти каталог, в котором находится это изображение, для его повторного экспорта. Я знаю, что это вопрос Lightroom, но я ожидаю, что мне может понадобиться выполнить поиск по файлам физического каталога, чтобы найти его. Поэтому для ясности моя ОС - Windows (однако я могу запускать команды оболочки).

Ответы [ 2 ]

4 голосов
/ 17 ноября 2016

Возможно, это не то, что вы хотите услышать, но вам следует подумать об использовании одного (или очень небольшого количества) каталогов или организации физических файлов, чтобы они были контекстно связаны с каталогами. Я предполагаю, что это зависит от масштаба, но каталоги могут легко поддерживать 100 000 изображений (я еще не слышал о ком-то, кто достиг предела, мое собственное - приблизительно 80 000). Ключевая цель каталога - позволить вам находить вещи - использование большого количества каталогов несколько противоречит цели.

Теперь, когда все сказано, вы не просили «отговорить меня от этого», так что вот указатель в возможном направлении: каталоги - это просто базы данных sqlite. Если вы немного разбираетесь в технологиях, вы можете использовать любой из многочисленных инструментов для запросов к базам данных (например, в сценарии для запуска каждой из них). Чтобы проверить, содержит ли каталог определенный файл (имя в последней строке ниже):

select *
from 
(
  select rf.absolutePath || lfo.pathFromRoot || lf.baseName || '.' ||  lf.extension as imagePath 
  from Adobe_images ai
  inner join AgLibraryFile lf on lf.id_local = ai.rootFile
  inner join AgLibraryFolder lfo on lfo.id_local = lf.folder
  inner join AgLibraryRootFolder rf on rf.id_local = lfo.rootFolder
  where ai.masterimage is null 
) x
where x.imagePath = 'C:/somefolderpath/LR-20080704_4881.NEF'

Часть посередине возвращает список всех файлов с указанием пути на диске, внешняя часть ищет среди них определенный. Запустите только середину, чтобы получить список всех файлов. Варианты (например, просмотр только lf.baseName) можно использовать, если имена ваших файлов уникальны и вы хотите игнорировать пути.

Вставить это внутри powershell или другого скриптового языка будет зависеть от ваших предпочтительных инструментов, навыков и того, как часто вы хотите это делать. Чтобы делать это вручную для одного каталога за раз, я рекомендую использовать Firefox и надстройку SQLite Manager, что является очень удобным способом запуска команд SQL для любой базы данных SQLitem, включая lightroom (просто учтите, что тип файла по умолчанию .lrcat, и вы должны ввести это вручную).

Также помните, что если вы выполняете команды записи (обновление, удаление и т. Д.), Вы действительно можете испортить свою базу данных - не делайте этого. С другой стороны, изучение каталога (без его изменения) - отличный способ лучше понять Lightroom.

Также обратите внимание, что вы не сможете открыть Lightroom, пока каталог открыт в любом другом инструменте (и наоборот).

0 голосов
/ 03 апреля 2019

Основываясь на превосходном ответе @ Linwood , я написал этот небольшой скрипт на Ruby для рекурсивного сканирования каждого каталога lightroom в папке Pictures и остановки в первом каталоге, содержащем имя файла, содержащее 'Hanna'. Поиск можно было оптимизировать, но он отлично справился с работой за несколько минут:

require 'sqlite3'

DESIRED_NAME = 'Hanna'.downcase
db_filenames = Dir[File.join(ENV['HOME'],'Pictures', '**', "*.lrcat")]

select_absolute_filenames = <<-SQL
select *
from 
(
  select rf.absolutePath || lfo.pathFromRoot || lf.baseName || '.' ||  lf.extension as imagePath 
  from Adobe_images ai
  inner join AgLibraryFile lf on lf.id_local = ai.rootFile
  inner join AgLibraryFolder lfo on lfo.id_local = lf.folder
  inner join AgLibraryRootFolder rf on rf.id_local = lfo.rootFolder
  where ai.masterimage is null 
)
SQL

db_filenames.each do |db_filename|
  puts "Checking #{db_filename}..."
  SQLite3::Database.new(db_filename) do |db|
    found_image = db.execute(select_absolute_filenames).map{|row| row.first}.find do |image_filename|
      image_filename.downcase.include? DESIRED_NAME
    end
    if found_image
      puts "  Found : #{found_image} in #{db_filename.inspect}!"
      exit
    end
  end
end
Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...