Com apple metadata kmditemusertags

Как я могу добавить «теги» OS X к файлам программно?

Так как Mavericks, OS X имеет возможность тегировать и окрашивать файлы в Finder.

Есть ли способ добавить теги в файлы через API Cocoa или через команду оболочки?

ОТВЕТЫ

Ответ 1

Извините за добавление другого ответа, но тот, который связан с настройкой цветов меток, был довольно длинным. Вот отрывок из python script, который я использую для установки тегов пользователя. Кажется, что это работает, чтобы сделать вещи доступными для поиска, но не уверен, что теги будут отображаться правильно. Использование в основном:

Ответ 2

Отметьте тег, «инструмент командной строки для управления тегами в Mac OS X 10.9 Mavericks, а также для запросов к файлам с этими тегами». В репозитории GitHub есть инструкции по установке (есть пакеты Homebrew и MacPorts).

Ответ 3

Я добавляю этот ответ, потому что OP запросил оболочку script и пометил ее bash. Я написал эту службу Automator, которая тегирует выбранный файл с тегами другого файла. Я добавил комментарии, чтобы описать использование взаимодействия bash с тегами и цветами с помощью bash script.

Основы

В сценариях доступны теги OpenMeta и Mavericks с помощью команды xattr. Используя его без модификаторов, $ xattr [file] , выдает список атрибутов набора. $ xattr -h дает хорошее руководство по использованию.

Теги Mavericks находятся в com.apple.metadata: _kMDItemUserTags, в то время как теги OpenMeta могут быть в разных атрибутах. Среди других com.apple.metadata:kOMUserTags , org.openmetainfo:kMDItemOMUserTags и org.openmetainfo:kOMUserTags .

Mavericks обрабатывает цвета и теги в разных атрибутах, помещая теги в _kMDItemUserTags и цвета в FinderInfo для каждого файла. Это странный выбор, и это одна из причин, по которой Finder борется под давлением мечения. Если у вас есть 800 файлов с тегами kapow, каждый в другой папке, а затем вы выбираете синий цвет для kapow, Finder должен найти и изменить атрибуты для каждого отдельного файла.

Вы можете поиграть с странностью, удалив атрибут com.apple.FinderInfo из помеченного и цветного файла: $ xattr -d com.apple.FinderInfo [file] . Цвет исчезает в списках Finder, но тег (и его цвет) остается связанным с файлом.

Bash script для импорта тегов из другого файла

В script выбранный файл в Finder/сохраняется в переменной $без тегов, а выбранный поставщик тегов $tagfull.

Ответ 4

В Apple Что нового в OS X говорится, что NSURL обрабатывает теги, а Common File System Resource_Keys предоставляет требуемый ключ как NSURLTagNamesKey и указывает, что его значение представляет собой только массив строк.

Ответ 5

OpenMeta framework — это сторонний стандарт для добавления метаданных в файлы OS X с использованием расширенных атрибутов. Он используется рядом сторонних приложений.

Или вы можете использовать команду XATTR для управления расширенными атрибутами через командную строку.

Ответ 6

Вы можете дать этот выстрел:

Вы хотите заменить $currentFile файлом, к которому хотите добавить теги, и изменить

в список любых тегов, которые вы хотите добавить.

Ответ 7

Это не распространяется на теги, но для изменения цветов ярлыков один из способов сделать это — с помощью следующей команды:

04 , похороненный в середине, устанавливает цвет файла.

Вот питон script, который обертывает эту команду, позволяет установить цвет тега в файле или серии файлов:

где [цвет] — это имя или аббревиатура, как определено ниже:

Ответ 8

In Ask Different

С несколькими ответами, один из которых принят:

Здесь, в Stack Overflow, вопрос возник чуть раньше (2013-11-01), поэтому я добавлю свой ответ здесь.

openmeta​​h2 >

В команде openmeta используется подход с двумя атрибутами, работающий с обоими:

Пример использования

Ограничения других утилит

Apple Finder, например.

После использования Finder для удаления тега kerfuffle, kerfuffle остается как тег OpenMeta:

Понимание этих ограничений

С вниманием к доменам и соглашениям об именах: Идеи разработчиков о принятии OpenMeta — Ironic Software (2009-03, а теперь в интернет-архиве Wayback Machine) напоминает нам, что com.apple.metadata использовался Apple, когда OpenMeta (проект не в домене apple.com ) начал ориентированный на Apple подход com.apple.metadata:kMDItemOMUserTags .

Поэтому я не должен ожидать, что программное обеспечение Apple получит или поддержит совместимость с обоими подходами к маркировке.

Читайте также:  Как поменять имя почты айфон

Кромки с краями

В некоторых случаях может быть желательно удалить теги Apple -ориентированные com.apple.metadata:_kMDItemUserTags , не удаляя теги OpenMeta​​strong > -ориентированные com.apple.metadata:kMDItemOMUserTags .

Однако выполнение этого — программно — возможно, выходит за рамки вопроса, заданного @nacross.

Ответ 9

Начиная с Mavericks, можно получить и установить цветовые метки в Cocoa, используя NSURL .

NSURL имеет множество свойств, которые могут быть установлены или прочитаны с помощью соответствующих методов setResourceValue:forKey:error: и getResourceValue:forKey:error: .

Используя клавишу NSURLLabelNumberKey , вы можете установить цветовые метки следующим образом:

Если это выполняется в файле, который имеет только один цвет, тогда он очищает текущий цвет и устанавливает указанный цвет. Однако, если в файл уже установлены несколько цветов, то перед установкой указанного цвета он не очищает существующие цвета.

Вот значение цвета (на El Capitan):

Мне не удалось установить тег, используя NSURLLabelColorKey . Вот мой опыт работы с El Capitan с ключами, связанными с «тегами» (Цвета):

  • NSURLLabelNumberKey : можно прочитать/установить успешно, с номерами 0-7. Любое другое число вернет ошибку. Если установлено несколько тегов, это вернет индекс первого цвета, который будет установлен, поскольку он будет искать численно через индексы с 1 по 7. Хотя вы можете очистить цвет в Finder, щелкнув по цвету, программно установив цвет который уже установлен, не очищает этот цвет.
  • NSURLLabelColorKey : возвращает nil, даже если для файла задан цветовой тэг. Установка значения с помощью этой клавиши не влияет.
  • NSURLTagNamesKey : возвращает массив имен цветов для установленных тегов.

Ответ 10

Начиная с Mavericks, также можно установить цвета тегов в Cocoa, используя NSAppleScript .

Если это выполняется в файле, который имеет только один цвет, тогда он очищает текущий цвет и устанавливает указанный цвет. Однако, если в файл уже установлены несколько цветов, то перед установкой указанного цвета он не очищает существующие цвета.

Используя среду AppleScript , цветовое сопоставление выглядит следующим образом:

  • 0: Нет
  • 1: Оранжевый
  • 2: Красный
  • 3: Желтый
  • 4: Синий
  • 5: Фиолетовый
  • 6: Зеленый
  • 7: Серый

Источник

Разрешение на доступ к вложенной папке открытого документа в macOS

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

Я пытался сделать это, получив URL-адрес папки для текущего главного окна документа и приведя список файлов в папке по порядку. Но, похоже, я не могу получить разрешение на это. я бегу

И я получаю сообщение об ошибке:

«Журнал DF» представляет собой папку. У меня есть разрешения на чтение / запись.

Я нашел ветку для разработчиков Apple, в которой предполагается, что это может быть связано с песочницей: хотя я я получаю открытый документ сам из NSOpenPanel, я не получаю содержимое папки с этой панели, поэтому он не хочет давать мне разрешение. Похоже, я мог бы изменить настройку, чтобы отключить эту изолированную программную среду, что означало бы, что файл не может попасть в Mac App Store. Это приложение предназначено в основном для личного использования, поэтому я сделаю это, если потребуется, но есть ли более элегантный способ доступа к содержимому папки открытого документа?

Вот результат ls -lea @ hO для папки, которая выдает ошибку:

2 ответа

Комментарий Вадиана был верным: это действительно песочница. Я посмотрел rel = «nofollow noreferrer»> процесс для закладок в области безопасности , и он кажется способом более сложным, чем я хочу иметь в виду, учитывая, что это приложение предназначено в первую очередь для моего личного использования. Поэтому я вошел в файл .entitlements и изменил «песочницу» приложения с ДА на НЕТ, и теперь она работает так, как положено. Это достаточно хорошо для меня. Если другие люди сталкиваются с этой проблемой и им нужно использовать App Store, вот информация о закладках в области безопасности, и я надеюсь, что это сработает для вас.

Кулак, давайте проверим, соответствует ли эта нить Apple вашей ситуации или нет.

Скомпилируйте приложение, после компиляции предоставьте ему полный доступ к диску:

Системные настройки -> Безопасность и конфиденциальность,

Добавив его в список приложений полного доступа к диску. (Вы устраняете первый уровень безопасности и позволяете вашему приложению получить доступ к папке «Документы», папке с изображениями, папке рабочего стола, папке с музыкой, папке контактов и другим 3 или 4 защищенным папкам.

Попытка 1) Запустите его и попробуйте просмотреть файлы с ним в любой папке в вашей домашней директории . Посмотрите, работает это или нет.

Попытка 2) Также допустимо проверить его, чтобы просмотреть файлы на любой флешке (потому что у них нет флагов разрешений). Посмотрите, работает ли он на USB-флешках

Если он по-прежнему сообщает, что у вас нет разрешений, опубликуйте свои результаты и дополнительную информацию о версии вашей системы и, если возможно, результат от терминала команды ls -lea@hO /path/to/folder папки, в которой он выдает ошибку, чтобы мы могли проверьте разрешения Unix / ACL и песочницы для этой папки.

Читайте также:  Поменять экран айфон 10 оригинальное стекло

Источник

Как Mavericks’s Finder хранит теги?

Я еще не использовал Mavericks.
Является ли поиск хранит теги в самом файле (например: xmp) или работает на какой-то базе данных? или что?

3 ответа

Mavericks сохраняет теги в качестве расширенного атрибута

Теперь, когда NDA отменяется: Mavericks сохраняет теги в качестве расширенного атрибута , в com.apple.metadata:_kMDItemUserTags . Вы можете проверить их самостоятельно, используя mdls :

mdls -name kMDItemUserTags Здравствуйте

Эпический обзор Джона Сиракузы OS X 10.9 описывает тег архитектуры в деталях.

Теги хранятся в расширенном атрибуте с именем com.apple.metadata: _kMDItemUserTags. Его значение представляет собой список двоичных свойств, содержащий один массив строк:

Теги для цветов имеют значения, такие как Red\n6 (где \n — строка).

Вы можете использовать xattr для копирования тегов из одного файла в другой:

Если флаг kColor в com.apple.FinderInfo не установлен, Finder не показывает круги для цветов рядом с файлами. Если флаг kColor установлен на оранжевый, а файл имеет красный тег, Finder отображает как красные, так и оранжевые круги. Вы можете установить флаг kColor с помощью AppleScript:

‘(«Red\n6″,»new tag»)’ — это синтаксис синтаксиса старого стиля для этого:

xattr -p com.apple.FinderInfo file|head -n1|cut -c28-29 печатает значение битов, используемых для флага kColor. Красный — C, оранжевый — E, желтый — A, зеленый — 4, синий — 8, пурпурный — 6, а серый — 2. Флаг, добавляющий 1 к значениям, не используется в OS X.

Насколько я мог прочитать в Интернете, из нескольких источников, очень вероятно, что Mavericks сохранит информацию об тэгах как нечто действительно близкое к стратегии OpenMeta в самом файле. До сих пор у нас уже были теги, и у нас было несколько приложений, помогающих в этом, например, Leap /Yep. Но это была лучшая практика, консолидированная над стандартным нижним слоем -OpenMeta. Теперь Маверикс хочет сделать шаг по дальнейшему созданию тегов (и как они должны быть закодированы в файловой системе). Плюс теги будут иметь фиксированный набор цветов (7?), И это может дополнительно помочь разделить теги в наборах для переноса дополнительной семантики. Многие из нас думают, что это может стать огромным шагом вперед в представлении файловой системы крупного лидера отрасли, чтобы в конечном итоге привести к будущим выборам (приложения будут в большей степени полагаться на это, и, возможно, сам mac os ожидает некоторые специальные системные аннотации). Для более подробной информации OpenMeta хочет, чтобы метаданные описывались как xattr (расширенные атрибуты) файлов, так что это то, что сама файловая система не заботится, потому что из ее области.

Вопрос был на самом деле довольно старым, и Маверикс скоро превратит ГМ. Так что, несмотря на то, что есть только информация, связанная с бета-доменом, это разумно верно, что я сказал выше. В этой теме есть несколько дискуссий по этой теме, в частности, здесь:

Самая интересная часть:

Теги Apple реализованы так же, как теги OpenMeta. — как расширенные атрибуты, прикрепленные к файлам в файловой системе. Единственное различие заключается в том, что вместо имени атрибута вместо _kMDItemUserTags из kMDItemOMUserTags («OM» в последнем теге для «OpenMeta»). Данные тегов для тегов Mavericks и тегов OpenMeta являются собственностью списки, но я не смотрел на внутренний формат plists, поэтому я не знаю, являются ли они одинаковыми или нет. Я также не знаю, что, если таковые имеются, вспомогательное хранилище или альтернативные методы используются для не-HFS + дисковые форматы — я знаю, что реклама Apple заявила, что вы можете пометить файлы на iCloud тоже, поэтому там может быть какая-то проблема.

Однако длинный и короткий, по крайней мере, на локальном Mac дисков, данные тега OpenMeta необходимо перенести на новый _kMDItemUserTags, чтобы быть видимым из-за Maverick. Неважно, но кому-то нужно написать утилиту для этого.

Источник

Как я могу программно добавлять к файлам «теги» OS X?

Начиная с Mavericks, OS X имеет возможность помечать и раскрашивать файлы в Finder.

Есть ли способ добавить теги к файлам через API-интерфейсы Какао или через команду оболочки?

9 ответов

Извините за добавление еще одного ответа, но ответ, связанный с настройкой цветов меток, уже был довольно длинным. Вот отрывок из скрипта Python, который я использую для установки пользовательских тегов. Кажется, это работает, чтобы сделать вещи доступными для поиска, но не уверен, правильно ли будут отображаться теги. Использование в основном:

В Спросите другое

С несколькими ответами, один из которых принят:

Читайте также:  Как убрать все контакты с iphone

Здесь, в Stack Overflow, вопрос возник немного раньше (01.11.2013), поэтому я добавлю сюда свой ответ.

Openmeta

Команда openmeta , похоже, использует подход с двумя атрибутами, работая с обоими:

Пример использования

Ограничения других утилит

Например, Apple Finder.

После использования Finder для удаления тега kerfuffle kerfuffle остается тегом OpenMeta:

Понимание этих ограничений

С вниманием к доменам и соглашениям об именах: Мысли разработчика по поводу внедрения OpenMeta — Ironic Software (2009-03, и теперь в Internet Archive Wayback Machine) напоминают нам, что com.apple.metadata использовался Apple, когда OpenMeta ( проект не в домене apple.com ) начал ориентированный на Apple подход com.apple.metadata:kMDItemOMUserTags .

Поэтому я не должен ожидать, что программное обеспечение Apple получит или сохранит совместимость с обоими подходами к тегам.

Краевые случаи

В некоторых случаях может потребоваться удалить теги Apple com.apple.metadata:_kMDItemUserTags , не удаляя теги OpenMeta com.apple.metadata:kMDItemOMUserTags . .

Однако выполнение этого — программно — вероятно, выходит за рамки вопроса, заданного @nacross.

Начиная с Mavericks, можно получать и устанавливать цветовые теги в Какао, используя NSURL .

NSURL имеет множество свойств, которые можно установить или прочитать с помощью соответствующих методов setResourceValue:forKey:error: и getResourceValue:forKey:error: .

Используя клавишу NSURLLabelNumberKey , вы можете установить цветовые теги следующим образом:

Если это выполняется для файла, который имеет только один цвет, тогда он очищает текущий цвет и устанавливает указанный цвет. Однако, если в файле уже задано несколько цветов, то существующие цвета не очищаются перед установкой указанного цвета.

Вот отображение значения-цвета (на Эль-Капитане):

Мне не удалось установить тег с помощью NSURLLabelColorKey . Вот мой опыт работы с El Capitan с ключами, относящимися к «тегам» (цветам):

  • NSURLLabelNumberKey : может быть успешно прочитан / установлен с номерами 0-7. Любой другой номер вернет ошибку. Если установлено несколько тегов, то это вернет индекс первого установленного цвета, поскольку он выполняет числовой поиск по индексам с 1 по 7. Хотя вы можете очистить цвет в Finder, щелкнув цвет, установив цвет программно. который уже установлен, не очищает этот цвет.
  • NSURLLabelColorKey : возвращает ноль, даже если для файла установлен тег цвета. Установка значения с помощью этого ключа не имеет никакого эффекта.
  • NSURLTagNamesKey : возвращает массив названий цветов для установленных тегов.

Это не касается тегов, но для изменения цвета меток это можно сделать с помощью такой команды:

04 , похороненный в середине, устанавливает цвет файла.

Вот сценарий python, который обертывает эту команду, позволяя вам установить цвет тега для файла или серии файлов:

Где [цвет] — имя или аббревиатура, как определено ниже:

Платформа OpenMeta — это сторонний стандарт для добавления метаданных в файлы OS X с использованием расширенных атрибутов. Он используется рядом сторонних приложений.

В Что нового в OS X от Apple говорится что NSURL обрабатывает теги, а Common File System Resource_Keys дает требуемый ключ как NSURLTagNamesKey и заявляет, что его значение представляет собой просто массив строк.

Вы можете попробовать :

Вам нужно заменить $ currentFile на файл, к которому вы хотите добавить теги, и изменить

К списку любых тегов, которые вы хотите добавить.

Я добавляю этот ответ, потому что OP запросил сценарий оболочки и пометил его тегом bash . Я написал эту службу Automator, которая помечает выбранный файл тегами другого файла. Я добавил комментарии, чтобы обрисовать использование взаимодействия bash с тегами и цветами с помощью сценария bash.

Основы

В сценариях теги OpenMeta и Mavericks доступны с помощью команды xattr . Использование его без модификаторов, $ xattr [file] , дает список установленных атрибутов. $ xattr -h дает хорошее руководство по использованию.

Теги Mavericks находятся в com.apple.metadata: _kMDItemUserTags, а теги OpenMeta могут иметь различные атрибуты. Среди прочих com.apple.metadata:kOMUserTags , org.openmetainfo:kMDItemOMUserTags и org.openmetainfo:kOMUserTags .

Mavericks обрабатывает цвета и теги в различных атрибутах, помещая теги в _kMDItemUserTags и цвета в FinderInfo для каждого файла. Это странный выбор, и это одна из причин, по которой Finder испытывает трудности с использованием тегов. Если у вас есть 800 файлов с тегами kapow , каждый в отдельной папке, и вы впоследствии выбираете синий цвет для kapow , Finder должен найти и изменить атрибуты для каждого отдельного файла.

Вы можете поиграть с этой странностью, удалив атрибут com.apple.FinderInfo из помеченного и цветного файла: $ xattr -d com.apple.FinderInfo [file] . Цвет исчезнет в списках Finder, но тег (и его цвет) останется связанным с файлом.

Bash-скрипт для импорта тегов из другого файла

В сценарии выбранные файлы в Finder сохраняются в переменной $ tagless , а выбранный поставщик тегов — $ tagfull .

Обратите внимание на tag, «инструмент командной строки для управления тегами в файлах Mac OS X 10.9 Mavericks и для запроса файлов с этими тегами». В репозитории GitHub есть инструкции по установке (есть пакеты Homebrew и MacPorts).

Источник

Оцените статью