Spec-Zone.ru › Hammerspoon

hs.spotlight

Этот модуль позволяет Hammerspoon выполнять запросы к метаданным Spotlight.

Этот модуль сможет выполнять запросы только к томам и папкам, которые не заблокированы настройками конфиденциальности в панели Spotlight системных настроек.

Запрос Spotlight состоит из двух фаз: начальной фазы сбора информации, где собирается и возвращается информация, которая в настоящее время находится в базе данных Spotlight, и фазы обновления в реальном времени, которая происходит после фазы сбора и состоит из изменений, внесенных в базу данных Spotlight, таких как добавление новых записей, изменение информации в существующих записях или удаление объектов.

Синтаксис запросов Spotlight выходит за рамки документации данного модуля. Это подмножество синтаксиса, поддерживаемого классом Objective-C NSPredicate. Некоторые ссылки на этот синтаксис можно найти по следующим адресам:

  • https://developer.apple.com/library/content/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html
  • https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html

В зависимости от сообщений обратного вызова, включенных с помощью метода hs.spotlight:callbackMessages, ваш обработчик обратного вызова, назначенный с помощью метода hs.spotlight:setCallback, может определять фазу запроса, обращая внимание на полученные сообщения. Во время начальной фазы сбора могут наблюдаться следующие сообщения обратного вызова: "didStart", "inProgress" и "didFinish". После завершения начальной фазы сбора вы будете наблюдать только сообщения "didUpdate" до тех пор, пока запрос не будет остановлен с помощью метода hs.spotlight:stop.

Вы также можете проверить, идет ли в настоящее время начальная фаза сбора, с помощью метода hs.spotlight:isGathering.

Вы можете получить доступ к отдельным результатам запроса с помощью метода hs.spotlight:resultAtIndex. Для удобства были добавлены метаметоды к объекту spotlightObject, которые упрощают доступ к отдельным результатам: к отдельному объекту spotlightItemObject можно получить доступ из объекта spotlightObject, обращаясь к spotlightObject как к массиву; например, spotlightObject[n] позволит получить доступ к n-ому объекту spotlightItemObject в текущих результатах.

Подмодули

  • hs.spotlight.group
  • hs.spotlight.item

Обзор API

  • Константы - полезные значения, которые нельзя изменить
    • commonAttributeKeys
    • definedSearchScopes
  • Конструкторы - вызовы API, которые возвращают объект, как правило, тот, который предлагает методы API
    • new
    • newWithin
  • Методы - вызовы API, которые могут быть выполнены только на объекте, возвращенном конструктором
    • callbackMessages
    • count
    • groupedResults
    • groupingAttributes
    • isGathering
    • isRunning
    • queryString
    • resultAtIndex
    • searchScopes
    • setCallback
    • sortDescriptors
    • start
    • stop
    • updateInterval
    • valueListAttributes
    • valueLists

Документация API

Константы

commonAttributeKeys
Подпись hs.spotlight.commonAttributeKeys[]
Тип Константа
Описание

Список определенных ключей атрибутов, обнаруженных в заголовках файлов фреймворка macOS 10.12 SDK.

Примечания
  • Этот список был сгенерирован путем поиска в файлах заголовков фреймворка строковых констант, которые соответствовали одному из следующих регулярных выражений: "kMDItem.+", "NSMetadataItem.+", и "NSMetadataUbiquitousItem.+".
Источник extensions/spotlight/libspotlight.m строка 877
definedSearchScopes
Подпись hs.spotlight.definedSearchScopes[]
Тип Константа
Описание

Таблица пар ключ-значение, описывающая предопределенные области поиска для запросов Spotlight.

Примечания
  • В настоящее время неясно, являются ли области поиска iCloud* полезными в Hammerspoon, так как Hammerspoon не является приложением в песочнице, использующим API iCloud для хранения документов. Любая дополнительная информация о вашем опыте работы с этими областями поиска, если вы их используете, приветствуется в группе Hammerspoon Google Group или на веб-сайте Hammerspoon GitHub.
Источник extensions/spotlight/libspotlight.m строка 847

Конструкторы

new
Подпись hs.spotlight.new() -> spotlightObject
Тип Конструктор
Описание

Создает новый spotlightObject для использования в поисках Spotlight.

Параметры
  • Нет
Возвращает
  • новый spotlightObject
Источник extensions/spotlight/libspotlight.m строка 96
newWithin
Подпись hs.spotlight.newWithin(spotlightObject) -> spotlightObject
Тип Конструктор
Описание

Создает новый spotlightObject, который ограничивает свои поиски текущими результатами другого spotlightObject.

Параметры
  • spotlightObject - объект, текущие результаты которого используются для ограничения области нового поиска Spotlight.
Возвращает
  • новый spotlightObject
Источник extensions/spotlight/libspotlight.m строка 112

Методы

callbackMessages
Подпись hs.spotlight:callbackMessages([messages]) -> table | spotlightObject
Тип Метод
Описание

Получить или указать конкретные сообщения, которые должны генерировать обратный вызов.

Параметры
  • messages - необязательная таблица или список элементов, определяющих конкретные сообщения обратного вызова, которые сгенерируют обратный вызов. По умолчанию { "didFinish" }.
Возвращает
  • если аргумент предоставлен, возвращает spotlightObject; в противном случае возвращает текущие значения
Примечания
  • Допустимые сообщения для таблицы: "didFinish", "didStart", "didUpdate" и "inProgress". См. hs.spotlight:setCallback для получения более подробной информации о сообщениях.
Источник extensions/spotlight/spotlight.lua строка 81
count
Подпись hs.spotlight:count() -> integer
Тип Метод
Описание

Возвращает количество результатов для запроса spotlightObject.

Параметры
  • Нет
Возвращает
  • если запрос собрал результаты, возвращает количество результатов, которые соответствуют запросу; если запрос не был запущен, это значение будет 0.
Примечания
  • То, что результат этого метода равен 0, не означает, что запрос не был запущен; сам запрос может не соответствовать никаким записям в базе данных Spotlight.

  • Запрос, который был выполнен в прошлом, но затем был остановлен, сохранит свои запросы, если параметры не изменены. Результат этого метода будет указывать количество результатов, все еще привязанных к запросу, даже если он был ранее остановлен.

  • Для удобства были добавлены метаметоды к объекту spotlightObject, которые позволяют использовать #spotlightObject как сокращение для spotlightObject:count().

Источник extensions/spotlight/libspotlight.m строка 581
groupedResults
Подпись hs.spotlight:groupedResults() -> table
Тип Метод
Описание

Возвращает сгруппированные результаты для запроса Spotlight.

Параметры
  • Нет
Возвращает
  • массив таблиц, содержащих сгруппированные результаты для запроса Spotlight, как указано в методе hs.spotlight:groupingAttributes. Каждый член массива будет объектом spotlightGroupObject, который подробно описан в документации модуля hs.spotlight.group.
Примечания
  • Объекты spotlightItemObjects, доступные с помощью метода hs.spotlight.group:resultAtIndex, представляют собой подмножество полных результатов spotlightObject, которые соответствуют атрибуту и значению spotlightGroupObject. Один и тот же элемент доступен как через spotlightObject, так и через spotlightGroupObject, хотя, вероятно, на разных индексах.
Источник extensions/spotlight/libspotlight.m строка 663
groupingAttributes
Signature hs.spotlight:groupingAttributes([attributes]) -> table | spotlightObject
Type Method
Description

Получить или установить атрибуты группировки для запроса Spotlight.

Parameters
  • attributes - необязательная таблица или список элементов, определяющих атрибуты группировки для запроса Spotlight. По умолчанию пустой массив.
Returns
  • если передан аргумент, возвращает spotlightObject; в противном случае возвращает текущие значения
Notes
  • Установка этого свойства во время выполнения запроса останавливает запрос и отбрасывает текущие результаты. Получатель сразу же запускает новый запрос.

  • Установка этого свойства увеличит использование ЦП и памяти во время выполнения запроса Spotlight.

  • Этот метод позволяет получать результаты, сгруппированные по значениям определенных атрибутов. См. hs.spotlight.group для получения дополнительной информации об использовании и получении сгруппированных результатов.

  • Обратите внимание, что не все атрибуты могут использоваться в качестве атрибутов группировки. В таких случаях сгруппированный результат будет содержать все результаты, а значение атрибута будет nil.

Source extensions/spotlight/spotlight.lua строка 106
isGathering
Signature hs.spotlight:isGathering() -> boolean
Type Method
Description

Возвращает булево значение, указывающее, находится ли запрос в активной фазе сбора данных.

Parameters
  • None
Returns
  • булевое значение true, если запрос находится в активной фазе сбора данных, или false, если нет.
Notes
  • Неактивный запрос также вернёт false для этого метода, так как неактивный запрос не собирает данные и не ожидает обновлений. Чтобы определить, активен или неактивен запрос, используйте метод hs.spotlight:isRunning.
Source extensions/spotlight/libspotlight.m строка 508
isRunning
Signature hs.spotlight:isRunning() -> boolean
Type Method
Description

Возвращает булево значение, указывающее, активен или неактивен запрос.

Parameters
  • None
Returns
  • булевое значение true, если запрос активен, или false, если неактивен.
Notes
  • Активный запрос может собирать результаты запроса (в начальной фазе сбора) или прослушивать изменения, которые должны вызвать сообщение "didUpdate" (после начальной фазы сбора). Чтобы определить, в каком состоянии находится запрос, используйте метод hs.spotlight:isGathering.
Source extensions/spotlight/libspotlight.m строка 487
queryString
Signature hs.spotlight:queryString(query) -> spotlightObject
Type Method
Description

Указать строку запроса для spotlightObject

Parameters
  • строка, содержащая запрос для spotlightObject
Returns
  • spotlightObject
Notes
  • Установка этого свойства во время выполнения запроса останавливает запрос и отбрасывает текущие результаты. Получатель сразу же запускает новый запрос.

  • Синтаксис строки запроса недостаточно прост для полного описания здесь. Это подмножество синтаксиса, поддерживаемого классом Objective-C NSPredicate. Некоторые ссылки на этот синтаксис можно найти по адресам:

    • https://developer.apple.com/library/content/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html
    • https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html
  • Если строка запроса не соответствует строке запроса NSPredicate, этот метод вернет ошибку. Если строка запроса соответствует строке запроса NSPredicate, этот метод примет строку запроса, но если она не соответствует формату запроса метаданных, который является подмножеством формата запроса NSPredicate, ошибка будет сгенерирована при попытке запуска запроса с помощью hs.spotlight:start. В настоящее время запуск запроса является единственным способом полностью гарантировать, что запрос имеет правильный формат.

  • Некоторые из строк запросов, которые использовались во время тестирования этого модуля, приведены ниже (обратите внимание, что [[ ]] — это спецификатор строки Lua, который позволяет использовать двойные кавычки в содержании строки):

    • [[ kMDItemContentType == "com.apple.application-bundle" ]]
    • [[ kMDItemFSName like "Explore" ]]
    • [[ kMDItemFSName like "AppleScript Editor.app" or kMDItemAlternateNames like "AppleScript Editor"]]
  • Не все атрибуты, похоже, применимы в запросе; см. hs.spotlight.item:attributes для возможного объяснения.

  • Для удобства был настроен метаметод __call для spotlightObject, так что вы можете использовать spotlightObject("query") в качестве сокращения для spotlightObject:queryString("query"):start. Поскольку это сокращение включает явный запуск, его следует добавлять после того, как вы установили функцию обратного вызова, если вам нужен обратный вызов (например, spotlightObject:setCallback(fn)("query")).

Source extensions/spotlight/libspotlight.m строка 529
resultAtIndex
Signature hs.spotlight:resultAtIndex(index) -> spotlightItemObject
Type Method
Description

Возвращает spotlightItemObject по указанному индексу spotlightObject.

Parameters
  • index - целое число, определяющее индекс возвращаемого результата.
Returns
  • spotlightItemObject по указанному индексу или ошибка, если индекс выходит за пределы границ.
Notes
  • Для удобства были добавлены метаметоды в spotlightObject, которые позволяют использовать spotlightObject[index] в качестве сокращения для spotlightObject:resultAtIndex(index).
Source extensions/spotlight/libspotlight.m строка 605
searchScopes
Signature hs.spotlight:searchScopes([scope]) -> table | spotlightObject
Type Method
Description

Получить или установить разрешенные области поиска для запроса Spotlight.

Parameters
  • scope - необязательная таблица или список элементов, определяющих область поиска для запроса Spotlight. По умолчанию пустой массив, указывающий, что поиск не ограничен областью.
Returns
  • если для scope передан аргумент, возвращает spotlightObject; в противном случае возвращает таблицу, содержащую текущие области поиска.
Notes
  • Установка этого свойства во время выполнения запроса останавливает запрос и отбрасывает текущие результаты. Получатель сразу же запускает новый запрос.

  • Каждый элемент в таблице scope может быть строкой или таблицей URL-адреса файла, как описано в документации для функций hs.sharing.URL и hs.sharing.fileURL.

    • если элемент является строкой и соответствует одному из значений в таблице hs.spotlight.definedSearchScopes, то область для этого элемента будет добавлена к допустимым областям поиска.
    • если элемент является строкой и не соответствует одному из предопределенных значений, он рассматривается как путь в локальной системе и подвергается расширению префикса тильды перед добавлением в области поиска (т.е. "~/" будет расширено до "/Users/имя_пользователя/").
    • если элемент является таблицей, он будет рассматриваться как таблица URL-адреса файла.
Source extensions/spotlight/spotlight.lua строка 51
END_OF_DOCUMENT_MARKER
setCallback
Signature hs.spotlight:setCallback(fn) -> spotlightObject
Type Method
Description

Установите или удалите функцию обратного вызова для объекта поиска Spotlight.

Parameters
  • fn - функция, которая заменяет текущую функцию обратного вызова. Если этот аргумент является явным nil, удаляет текущую функцию обратного вызова и не заменяет её. Функция должна ожидать 2 или 3 аргумента и не должна возвращать ничего.
Returns
  • объект spotlightObject
Notes
  • В зависимости от сообщений, установленных методом hs.spotlight:callbackMessages, могут произойти следующие события обратного вызова:

    • obj, "didStart" — происходит, когда начинается начальная фаза сбора данных поиска Spotlight.

      • obj - объект spotlightObject, выполняющий поиск
      • message - сообщение для обратного вызова, в данном случае "didStart"
    • obj, "inProgress", updateTable — происходит во время начальной фазы сбора данных через интервалы, установленные методом hs.spotlight:updateInterval.

      • obj - объект spotlightObject, выполняющий поиск
      • message - сообщение для обратного вызова, в данном случае "inProgress"
      • updateTable - таблица, содержащая один или несколько из следующих ключей:
        • kMDQueryUpdateAddedItems - массивная таблица объектов spotlightItem, которые были добавлены в результаты
        • kMDQueryUpdateChangedItems - массивная таблица объектов spotlightItem, которые изменились с момента их первоначального добавления в результаты
        • kMDQueryUpdateRemovedItems - массивная таблица объектов spotlightItem, которые были удалены с момента их первоначального добавления в результаты
    • obj, "didFinish" — происходит, когда завершается начальная фаза сбора данных поиска Spotlight.

      • obj - объект spotlightObject, выполняющий поиск
      • message - сообщение для обратного вызова, в данном случае "didFinish"
    • obj, "didUpdate", updateTable — происходит после завершения начальной фазы сбора данных. Это указывает на то, что после начального запроса произошли изменения, влияющие на набор результатов.

      • obj - объект spotlightObject, выполняющий поиск
      • message - сообщение для обратного вызова, в данном случае "didUpdate"
      • updateTable - таблица, содержащая один или несколько ключей, описанных для аргумента updateTable сообщения "inProgress".
  • Все результаты всегда доступны через метод hs.spotlight:resultAtIndex и сокращения метаметодов, описанные в заголовках документации hs.spotlight и hs.spotlight.item; результаты, предоставляемые сообщениями "didUpdate" и "inProgress", — это просто удобство, и их можно использовать, если вы хотите проанализировать частичные результаты.

Source extensions/spotlight/libspotlight.m строка 198
sortDescriptors
Signature hs.spotlight:sortDescriptors([attributes]) -> table | spotlightObject
Type Method
Description

Получение или установка параметров сортировки результатов запроса Spotlight.

Parameters
  • attributes - необязательная таблица или список элементов, определяющих дескрипторы сортировки, которые влияют на порядок сортировки результатов запроса Spotlight. По умолчанию пустой массив.
Returns
  • если аргумент предоставлен, возвращает spotlightObject; в противном случае возвращает текущие значения
Notes
  • Установка этого свойства во время выполнения запроса останавливает запрос и отбрасывает текущие результаты. Приёмник сразу же запускает новый запрос.

  • Дескриптор сортировки может быть задан как строкой, так и таблицей пар ключ-значение. В случае строки дескриптор сортировки будет сортировать элементы в порядке возрастания. При задании таблицей, как минимум, должны быть указаны следующие ключи:

    • key - строка, определяющая атрибут для сортировки
    • ascending - булево значение, по умолчанию true, определяющее, должен ли порядок сортировки быть возрастающим (true) или убывающим (false).
  • Этот метод пытается указать порядок сортировки результатов, возвращаемых запросом Spotlight.

  • Обратите внимание, что не все атрибуты могут быть использованы в качестве атрибута в дескрипторе сортировки. В таких случаях дескриптор сортировки не будет влиять на порядок возвращаемых элементов.

Source extensions/spotlight/spotlight.lua строка 164
start
Signature hs.spotlight:start() -> spotlightObject
Type Method
Description

Начать фазу сбора данных запроса Spotlight.

Parameters
  • None
Returns
  • объект spotlightObject
Notes
  • Если строка запроса, установленная с помощью hs.spotlight:queryString, недействительна, сообщение об ошибке будет записано в консоль Hammerspoon, и запрос не начнется. Вы можете проверить, действительно ли запрос выполняется, с помощью метода hs.spotlight:isRunning.
Source extensions/spotlight/libspotlight.m строка 424
stop
Signature hs.spotlight:stop() -> spotlightObject
Type Method
Description

Остановить запрос Spotlight.

Parameters
  • None
Returns
  • объект spotlightObject
Notes
  • Этот метод предотвратит дальнейший сбор элементов как во время начальной фазы сбора, так и от обновлений, которые могут произойти после фазы сбора; однако он не отбросит уже обнаруженные результаты.
Source extensions/spotlight/libspotlight.m строка 461
updateInterval
Signature hs.spotlight:updateInterval([interval]) -> number | spotlightObject
Type Method
Description

Получение или установка интервала времени, через который объект spotlightObject будет отправлять сообщения "didUpdate" во время начальной фазы сбора данных.

Parameters
  • interval - необязательное число, по умолчанию 1.0, определяющее, как часто в секундах сообщение "didUpdate" должно генерироваться во время начальной фазы сбора данных запроса Spotlight.
Returns
  • если аргумент предоставлен, возвращает объект spotlightObject; в противном случае возвращает текущее значение.
Source extensions/spotlight/libspotlight.m строка 291
valueListAttributes
Signature hs.spotlight:valueListAttributes([attributes]) -> table | spotlightObject
Type Method
Description

Получение или установка атрибутов, для которых производятся сводки списка значений для запроса Spotlight.

Parameters
  • attributes - необязательная таблица или список элементов, определяющих атрибуты, для которых производятся сводки списка значений для запроса Spotlight. По умолчанию пустой массив.
Returns
  • если аргумент предоставлен, возвращает spotlightObject; в противном случае возвращает текущие значения
Notes
  • Установка этого свойства во время выполнения запроса останавливает запрос и отбрасывает текущие результаты. Приёмник сразу же запускает новый запрос.

  • Установка этого свойства увеличит использование ЦП и оперативной памяти при выполнении запроса Spotlight.

  • Этот метод позволяет указать атрибуты, для которых вы хотите получить сводную информацию. Смотрите hs.spotlight:valueLists для получения дополнительной информации о сводках списка значений.

  • Обратите внимание, что не все атрибуты могут быть использованы как атрибут списка значений. В таких случаях сводка для атрибута будет содержать все результаты, и значение атрибута будет равно nil.

Source extensions/spotlight/spotlight.lua строка 135
valueLists
Signature hs.spotlight:valueLists() -> table
Type Method
Description

Возвращает сводки списка значений для запроса Spotlight

Parameters
  • None
Returns
  • массивная таблица сводок списка значений для запроса Spotlight, как указано методом hs.spotlight:valueListAttributes. Каждый элемент массива будет таблицей со следующими ключами:
    • attribute - атрибут для сводки
    • value - значение атрибута для сводки
    • count - количество элементов Spotlight в результатах spotlightObject, для которых этот атрибут имеет это значение
Notes
  • Сводки списка значений — это быстрый способ сбора статистики о количестве результатов, соответствующих определенным критериям. Они не позволяют легко получить доступ к соответствующим членам, а только информацию о их количестве.
Source extensions/spotlight/libspotlight.m строка 639

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.spotlight.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API