¿Cómo almacena etiquetas Mavericks's Finder?


13

No he usado Mavericks todavía.
¿El buscador almacena etiquetas en el archivo mismo (por ejemplo: xmp), o funciona con algún tipo de base de datos? ¿o que?


Es posible que desee probarlo antes de hacer una pregunta sobre OS X Maverick.
Ramhound

Tenga en cuenta que el enfoque de Mavericks para el etiquetado dentro del sistema de archivos no se limitó a Finder.
Graham Perrin

Respuestas:


12

Mavericks guarda las etiquetas como atributo extendido

Ahora que se levanta el NDA: Mavericks guarda las etiquetas como un atributo extendido , en com.apple.metadata:_kMDItemUserTags. Puede verificarlos usted mismo utilizando el comando mdls de esta manera:

mdls -name kMDItemUserTags Hola

La épica revisión de John Siracusa de OS X 10.9 describe la arquitectura de la etiqueta con cierto detalle.


3
¿Y cómo se almacenan los atributos extendidos?
oculto

1

Las etiquetas se almacenan en un atributo extendido denominado com.apple.metadata: _kMDItemUserTags. Su valor es una lista de propiedades binarias que contiene una única matriz de cadenas:

$ 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>

Las etiquetas para los colores tienen valores como Red\n6(donde \nhay un salto de línea).

Puede usar xattr para copiar las etiquetas de un archivo a otro:

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

Si la bandera kColor en com.apple.FinderInfo no está activada, Finder no muestra los círculos para los colores junto a los archivos. Si el indicador kColor está configurado en naranja y el archivo tiene la etiqueta roja, Finder muestra círculos rojos y naranjas. Puede configurar el indicador kColor con 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")' es la sintaxis de plist de estilo antiguo para esto:

<?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 el valor de los bits utilizados para el indicador kColor. El rojo es C, el naranja es E, el amarillo es A, el verde es 4, el azul es 8, el magenta es 6 y el gris es 2. La bandera que agregaría 1 a los valores no se usa en OS X.


1
Si creo una etiqueta llamada "Financiera", de color rojo, por ejemplo, ¿el plist atributo extendido almacena "Financiera" o "Roja"? ¿Y cómo se realiza el mapeo entre el nombre y el color?
Vaddadi Kartick

"La bandera que agregaría 1 a los valores no se usa en OS X". ¿Qué significa esto?
Nicolas Barbulesco

Esta respuesta es detallada. Pero la diferencia entre los colores y las etiquetas no está clara.
Nicolas Barbulesco

¿Y dónde se almacena este atributo extendido?
Nicolas Barbulesco

1

Hasta donde pude leer en Internet, de varias fuentes, es muy probable que Mavericks almacene información de etiquetas como algo realmente cercano a la estrategia OpenMeta en el archivo mismo. Hasta ahora ya teníamos etiquetas y teníamos varias aplicaciones que ayudaban en esto, como Leap / Yep, por ejemplo. Pero fue solo una práctica recomendada consolidada por encima de una capa inferior estándar: OpenMeta. Ahora Mavericks quiere dar un paso más para que las etiquetas (y cómo se supone que estén codificadas en el sistema de archivos) sean oficiales. Además, las etiquetas tendrán un conjunto fijo de colores (7?) Y esto también puede ayudar a dividir las etiquetas en conjuntos para llevar una semántica adicional. Muchos de nosotros creemos que esto puede ser un gran paso adelante en la visión del sistema de archivos de un gran líder de la industria para eventualmente impulsar futuras elecciones (las aplicaciones dependerán más de esto y tal vez el sistema operativo en sí mismo espere algunas anotaciones especiales para todo el sistema). En aras de los detalles, OpenMeta quiere que los metadatos se describan como xattr (atributos extendidos) de los archivos, por lo que es algo que al sistema de archivos en sí no le importará porque está fuera de su alcance.

La pregunta en realidad era bastante antigua y Mavericks se convertirá en GM muy pronto ... Entonces, a pesar del hecho de que solo hay información relacionada con el dominio Beta, es razonablemente cierto todo lo que dije anteriormente. Hay varias discusiones en Internet sobre este tema y una en particular está aquí:

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

La parte más interesante es:

Las etiquetas de Apple se implementan de la misma manera que las etiquetas de OpenMeta, como atributos extendidos adjuntos a los archivos en el sistema de archivos. La única diferencia es que el nombre del atributo es _kMDItemUserTags en lugar de kMDItemOMUserTags (el "OM" en la última etiqueta es para "OpenMeta"). Los datos de la etiqueta para las etiquetas Mavericks y OpenMeta son listas de propiedades, pero no miré el formato interno de las listas, así que no sé si son exactamente iguales o no. Tampoco sé qué, si es que hay alguno, almacenamiento auxiliar o métodos alternativos se utilizan para formatos de disco que no sean HFS +. Sé que el bombo de Apple dice que también puedes etiquetar archivos en iCloud, por lo que puede haber algún problema allí.

Sin embargo, para resumir, al menos en los discos Mac locales, los datos de la etiqueta OpenMeta deberán migrarse al nuevo atributo _kMDItemUserTags para que Maverick los vea de forma nativa. No es un gran problema, pero alguien necesita escribir una utilidad para hacerlo.


1
Extraño, groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ es el enlace proporcionado por Google para la publicación, pero seguir ese enlace a veces no revela la publicación requerida.
Graham Perrin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.