Como o Finder do Mavericks armazena tags?

13

Ainda não usei o Mavericks.
O localizador armazena tags no próprio arquivo (ex: xmp) ou é alimentado por algum tipo de banco de dados? ou o que?

Kevin Grace
fonte
Você pode tentar antes de fazer uma pergunta sobre o OS X Maverick.
Ramhound
Observe que a abordagem dos Mavericks para marcação no sistema de arquivos não se limitou ao Finder.
Graham Perrin

Respostas:

12

Mavericks salva tags como atributo estendido

Agora que o NDA foi levantado: o Mavericks salva tags como um atributo estendido , em com.apple.metadata:_kMDItemUserTags. Você pode verificá-los usando o comando mdls desta maneira:

mdls -name kMDItemUserTags Hello

A revisão épica de John Siracusa do OS X 10.9 descreve a arquitetura de tags em alguns detalhes.

Dan
fonte
3
E como os atributos estendidos são armazenados?
Occulus
1

As tags são armazenadas em um atributo estendido chamado com.apple.metadata: _kMDItemUserTags. Seu valor é uma lista de propriedades binárias que contém uma única matriz de seqüências de caracteres:

$ xattr -p com.apple.metadata:_kMDItemUserTags file3|xxd -r -p|plutil -convert xml1 - -o -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>aa</string>
    <string>Orange
7</string>
    <string>Yellow
5</string>
    <string>Green
2</string>
    <string>Blue
4</string>
    <string>Purple
3</string>
    <string>Gray
1</string>
</array>
</plist>

As tags para cores têm valores como Red\n6(onde \né um avanço de linha).

Você pode usar o xattr para copiar as tags de um arquivo para outro:

xattr -wx com.apple.metadata:_kMDItemUserTags "$(xattr -px com.apple.metadata:_kMDItemUserTags file1)" file2
xattr -wx com.apple.FinderInfo "$(xattr -px com.apple.FinderInfo file1)" file2

Se o sinalizador kColor em com.apple.FinderInfo estiver desativado, o Finder não mostrará os círculos para cores ao lado dos arquivos. Se o sinalizador kColor estiver definido como laranja e o arquivo tiver a etiqueta vermelha, o Finder exibirá círculos vermelho e laranja. Você pode definir o sinalizador kColor com AppleScript:

xattr -w com.apple.metadata:_kMDItemUserTags '("Red\n6","new tag")' ~/desktop/file4"
osascript -e 'tell application "Finder" to set label index of file "file4" of desktop to item 1 of {2, 1, 3, 6, 4, 5, 7}'

'("Red\n6","new tag")' é uma sintaxe plist antiga para isso:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>new tag</string>
</array>
</plist>

xattr -p com.apple.FinderInfo file|head -n1|cut -c28-29imprime o valor dos bits usados ​​para o sinalizador kColor. Vermelho é C, laranja é E, amarelo é A, verde é 4, azul é 8, magenta é 6 e cinza é 2. O sinalizador que adicionaria 1 aos valores não é usado no OS X.

Lri
fonte
1
Se eu criar uma tag chamada "Financeiro", de cor vermelha, por exemplo, o atributo estendido insiste em "Financeiro" ou "Vermelho"? E como é feito o mapeamento entre o nome e a cor?
Vaddadi Kartick 23/03
"O sinalizador que adicionaria 1 aos valores não é usado no OS X." O que isto significa?
Nicolas Barbulesco
Esta resposta é detalhada. Mas a diferença entre as cores e as tags não é clara.
Nicolas Barbulesco
E onde esse atributo estendido é armazenado?
Nicolas Barbulesco
1

Tanto quanto pude ler na internet, de várias fontes, é muito provável que o Mavericks armazene informações de tags como algo realmente próximo à estratégia do OpenMeta no próprio arquivo. Até agora, já tínhamos tags e vários aplicativos ajudando assim, como o Leap / Yep, por exemplo. Mas foi apenas uma prática recomendada consolidada acima de uma camada inferior padrão - OpenMeta. Agora, o Mavericks quer dar um passo adiante, oficializando as tags (e como elas devem ser codificadas no sistema de arquivos). As tags Plus terão um conjunto fixo de cores (7?) E isso pode ajudar a dividir as tags em conjuntos para transportar semântica extra. Muitos de nós pensam que esse pode ser um grande avanço na visão de um grande líder do setor de sistemas de arquivos para, eventualmente, conduzir escolhas futuras (os aplicativos dependerão mais disso e talvez o próprio Mac espere algumas anotações especiais em todo o sistema). Por uma questão de detalhes, o OpenMeta deseja que os metadados sejam descritos como xattr (atributos estendidos) de arquivos, para que seja algo que o próprio sistema de arquivos não se preocupe por estar fora de seu escopo.

A questão era bastante antiga e o Mavericks virará GM em breve. Portanto, apesar do fato de haver apenas informações relacionadas ao domínio Beta, é razoavelmente verdade tudo o que disse acima. Existem várias discussões na internet sobre esse tópico e uma em particular está aqui:

https://groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ

A parte mais interessante é:

As tags Apple são implementadas da mesma maneira que as tags OpenMeta - como atributos estendidos anexados aos arquivos no sistema de arquivos. A única diferença é que o nome do atributo é _kMDItemUserTags em vez de kMDItemOMUserTags (o "OM" na última tag é para "OpenMeta"). Os dados das tags Mavericks e OpenMeta são listas de propriedades, mas eu não olhei o formato interno das listas, então não sei se são exatamente iguais ou não. Também não sei o que, se houver, armazenamento auxiliar ou métodos alternativos são usados ​​para formatos de disco que não sejam HFS + - sei que o hype da Apple disse que você também pode marcar arquivos no iCloud, para que haja algum problema.

O longo e o curto, no entanto, é que, pelo menos nos discos locais do Mac, os dados da tag OpenMeta precisarão ser migrados para o novo atributo _kMDItemUserTags para serem vistos de forma nativa pelo Maverick. Não é grande coisa, mas alguém precisa escrever um utilitário para fazer isso.

Diego
fonte
1
Estranho, groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ é o link fornecido pelo Google para a publicação, mas, às vezes, depois desse link não é possível divulgar a publicação necessária.
Graham Perrin