Bagaimana tag Mavericks Finder menyimpan?

13

Saya belum menggunakan Mavericks.
Apakah finder menyimpan tag dalam file itu sendiri (mis: xmp), atau didukung oleh beberapa jenis Database? atau apa?

Kevin Grace
sumber
Anda mungkin ingin mencobanya sebelum mengajukan pertanyaan tentang OS X Maverick.
Ramhound
Perhatikan bahwa pendekatan Mavericks untuk menandai dalam sistem file tidak terbatas pada Finder.
Graham Perrin

Jawaban:

12

Mavericks menyimpan tag sebagai atribut yang diperluas

Sekarang NDA diangkat: Mavericks menyimpan tag sebagai atribut yang diperluas , di com.apple.metadata:_kMDItemUserTags. Anda dapat memeriksanya sendiri dengan menggunakan perintah mdls seperti ini:

mdls -name kMDItemUserTags Halo

Ulasan epik John Siracusa tentang OS X 10.9 menjelaskan arsitektur tag secara rinci.

Dan
sumber
3
Dan bagaimana atribut diperluas disimpan?
occulus
1

Tag disimpan dalam atribut diperluas bernama com.apple.metadata: _kMDItemUserTags. Nilainya adalah daftar properti biner yang berisi satu larik string:

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

Tag untuk warna memiliki nilai seperti Red\n6(di mana \numpan baris).

Anda dapat menggunakan xattr untuk menyalin tag dari satu file ke file lain:

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

Jika bendera kColor di com.apple.FinderInfo tidak disetel, Finder tidak menampilkan lingkaran untuk warna di sebelah file. Jika bendera kColor diatur ke oranye dan file memiliki tag merah, Finder menunjukkan lingkaran merah dan oranye. Anda dapat mengatur bendera kColor dengan 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")' adalah sintaks plist gaya lama untuk ini:

<?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-29mencetak nilai bit yang digunakan untuk bendera kColor. Merah adalah C, oranye adalah E, kuning adalah A, hijau adalah 4, biru adalah 8, magenta adalah 6, dan abu-abu adalah 2. Bendera yang akan menambahkan 1 ke nilai tidak digunakan dalam OS X.

Lri
sumber
1
Jika saya membuat tag bernama "Finansial", berwarna merah, misalnya, apakah plist atribut diperluas menyimpan "Finansial" atau "Merah"? Dan bagaimana pemetaan dilakukan antara nama dan warna?
Vaddadi Kartick
"Bendera yang akan menambah 1 nilai tidak digunakan di OS X." Apa artinya ini?
Nicolas Barbulesco
Jawaban ini terperinci. Namun perbedaan antara warna dan tag tidak jelas.
Nicolas Barbulesco
Dan di mana atribut yang diperluas ini disimpan?
Nicolas Barbulesco
1

Sejauh yang saya bisa baca di internet, dari beberapa sumber, sangat mungkin bahwa Mavericks akan menyimpan informasi tag sebagai sesuatu yang sangat dekat dengan strategi OpenMeta dalam file itu sendiri. Sampai sekarang kami sudah memiliki tag dan kami memiliki beberapa aplikasi yang membantu dalam Leap / Yep ini misalnya. Tapi itu hanya praktik terbaik yang dikonsolidasikan di atas lapisan bawah standar -OpenMeta. Sekarang Mavericks ingin membuat langkah lebih jauh dengan membuat tag (dan bagaimana mereka seharusnya dikodekan dalam sistem file) secara resmi. Tag Plus akan memiliki set warna tetap (7?) Dan ini juga dapat membantu memisahkan tag dalam set untuk membawa semantik tambahan. Banyak dari kita berpikir ini mungkin merupakan langkah besar ke depan dalam visi sistem file dari seorang pemimpin industri besar untuk akhirnya mendorong pilihan masa depan (aplikasi akan lebih bergantung pada ini dan mungkin sistem operasi itu sendiri akan mengharapkan beberapa penjelasan khusus sistem lebar). Demi detail, OpenMeta ingin metadata dideskripsikan sebagai xattr (atribut yang diperluas) dari file sehingga itu adalah sesuatu yang sistem file itu sendiri tidak akan pedulikan karena di luar cakupannya.

Pertanyaannya sebenarnya sudah sangat tua dan Mavericks akan segera mengubah GM .. Jadi, meskipun kenyataannya hanya ada informasi yang terkait dengan domain Beta, itu benar sekali, semua yang saya katakan di atas. Ada beberapa diskusi di internet tentang topik ini dan satu khususnya ada di sini:

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

Bagian yang paling menarik adalah:

Tag Apple diimplementasikan dengan cara yang sama seperti tag OpenMeta - sebagai atribut tambahan yang dilampirkan ke file di sistem file. Satu-satunya perbedaan adalah bahwa nama atributnya adalah _kMDItemUserTags alih-alih kMDItemOMUserTags ("OM" pada tag terakhir adalah untuk "OpenMeta"). Data tag untuk kedua tag Mavericks dan tag OpenMeta adalah daftar properti, tapi saya tidak melihat format internal dari daftar, jadi saya tidak tahu apakah mereka persis sama atau tidak. Saya juga tidak tahu apa, jika ada, penyimpanan tambahan atau metode alternatif digunakan untuk format disk non-HFS + - Saya tahu hype Apple mengatakan Anda dapat menandai file di iCloud juga, jadi mungkin ada beberapa masalah di sana.

Namun, panjang dan pendeknya adalah bahwa setidaknya pada disk Mac lokal, data tag OpenMeta perlu dimigrasi ke atribut _kMDItemUserTags yang baru agar dapat dilihat secara asli oleh Maverick. Bukan masalah besar, tetapi seseorang perlu menulis utilitas untuk melakukan itu.

Diego
sumber
1
Aneh, groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ adalah tautan yang diberikan oleh Google untuk posting tersebut, tetapi mengikuti tautan itu terkadang gagal mengungkapkan pos yang diperlukan.
Graham Perrin