OSX: menetapkan ekstensi untuk jenis konten

14

Di sini saya memiliki folder yang berisi banyak file * .mkv (video, jelas) dan file * .srt (subtitle, tentu saja). Saya ingin menyimpannya dalam satu folder tetapi saya tidak ingin mereka dicampur bersama. Sepertinya ide yang bagus untuk mengatur mereka secara visual menjadi dua kelompok terpisah.

Namun, ekstensi tidak dikenali oleh sistem, dan mereka masih ditempatkan di bawah satu grup 'Dokumen', yang jelas bukan yang saya inginkan.

Pertanyaannya: bagaimana cara memberitahu sistem bahwa semua file * .mkv harus diperlakukan sebagai 'Media' (atau 'Video', atau apa pun nama grup jenis file untuk file video)?

Terima kasih.masukkan deskripsi gambar di sini

EDIT:

@Daniel, program terkait adalah MPlayerX dan output dari perintah itu adalah sebagai berikut:

imac:Game of Thrones arnold$ mdls "Game of Thrones 1×2.mkv"
kMDItemContentCreationDate     = 2011-12-15 10:31:20 +0000
kMDItemContentModificationDate = 2011-12-27 09:09:55 +0000
kMDItemContentType             = "dyn.ah62d4rv4ge804450"
kMDItemContentTypeTree         = (
    "public.data",
    "public.item"
)
kMDItemDateAdded               = 2011-12-27 09:22:55 +0000
kMDItemDisplayName             = "Game Of Thrones 1×2.mkv"
kMDItemFSContentChangeDate     = 2011-12-27 09:09:55 +0000
kMDItemFSCreationDate          = 2011-12-15 10:31:20 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "Game of Thrones 1×2.mkv"
kMDItemFSNodeCount             = 220877659
kMDItemFSOwnerGroupID          = 99
kMDItemFSOwnerUserID           = 99
kMDItemFSSize                  = 220877659
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Video Media"
kMDItemLogicalSize             = 220877659
kMDItemPhysicalSize            = 220880896
imac:Game of Thrones arnold$ 

Cukup aneh, 'Jenis Barang' muncul sebagai 'Media Video'. Dan untuk file subtitle adalah 'Subtitle'. Namun, itu tidak membantu Finder mengatur file-file itu dengan benar untuk beberapa alasan ...

Arnold
sumber
Program apa yang dikaitkan dengan file-file ini? Apa output mdlsdi Terminal untuk salah satu file ini, misalnya mdls "Game of Thrones episode 2.mkv"?
Daniel Beck
Apakah fitur pengelompokan ini baru di Lion? Ikon juga masing-masing mengatakan "Teks" dan "Video", jadi seharusnya tidak menjadi masalah.
slhck
@ Slhck Ini baru di Lion. Ikon adalah 100% gambar dan disediakan oleh aplikasi terkait, sehingga tidak ada artinya. Arnold, terima kasih untuk mdlshasilnya. Apakah Anda menggunakan MPlayer OSX atau MPlayer OSX Extended ?
Daniel Beck
@DanielBeck, itu hanya MPlayerX biasa dari App Store .
Arnold
@DanielBeck Ah, saya pikir itu diwakili oleh kMDContentType. Jenis konten apa yang terdaftar di atas?
slhck

Jawaban:

12

Anda perlu menggunakan aplikasi yang menyatakan asosiasi tipe file yang benar untuk mis .mkv. Ekstensi nama file.

Misalnya, tipe file yang ditentukan sistem dalam /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistmendeklarasikan berikut ini di bagian UTI Jenis yang Diekspor :

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Ini memungkinkan sistem untuk mengasosiasikan ISK public.jpeg dengan "grup ISK" public.image, yang kemungkinan besar digunakan Finder untuk grup Gambar ; yang public.filename-extensions yang setara peta untuk ekstensi file.

Ini memungkinkan OS X untuk menentukan, .jpgfile tersebut memiliki UTI public.jpeg, dan itu adalah sub-UTI dari public.image(dan seterusnya, dengan public.itemdan public.data). Finder kemudian mengambil semua file yang ada (juga) public.imagedan menempatkannya dalam grup Gambar yang sama .

Hal yang sama berlaku untuk public.mpeg-4dan public.moviepemetaan nama file di sana.


Sayangnya, penulis MPlayerX tidak repot-repot memetakan UTI.

Dia bahkan tidak repot-repot membuat jenis file yang tepat untuk semua ekstensi yang didukung oleh program. Itu sebabnya dalam tampilan daftar Finder , semua .mkvfile tidak disebut misalnya Matroska Video , dan memiliki label MKV yang sesuai pada ikon mereka, tetapi hanya Video Media dengan label Video generik . Semua jenis file yang didukung terdaftar oleh ekstensi file untuk "format file" ini, sehingga MPlayerX dapat membukanya:

masukkan deskripsi gambar di sini

Itu artinya, misalnya, jika Anda lebih suka memutar .m4afile dalam MPlayerX ke iTunes, Anda kehilangan audio deskriptif Apple MPEG-4 di kolom Kinder 's Kind dan mendapatkan Audio Media sebagai gantinya.


Anda dapat memperbaiki pengelompokan dengan mengedit /Applications/MPlayerX.app/Contents/Info.plistfile dan mendeklarasikan dengan benar misalnya mplayerx.videoISK yang sesuai dengan public.moviedan menambahkan pemetaan ekstensi nama file yang tepat.

Anda dapat memperbaiki kolom Jenis dengan mengedit file yang sama, dan mendeklarasikan jenis file dengan benar dengan deskripsi yang lebih baik, dan membuat file ikon untuk masing-masingnya.

Cukup gunakan file Core Type Info.plist sebagai templat, ganti misalnya public.jpegdengan pengenal kustom Anda sendiri (mis. mplayerx.videoJika Anda tidak ingin kolom dan ikon Jenis yang tepat , atau mplayerx.mkvjika Anda menginginkannya). Anda memerlukan Xcode untuk mengedit file-file ini, atau mengonversinya menjadi XML yang dapat diedit dengan editor teks apa pun dengan menggunakan plutil -convert xml1 <filename>.

Perubahan Anda, yang agak mudah salah, akan diganti dengan setiap pembaruan aplikasi.

Atau, setidaknya untuk Finder Arrange By Kind , Anda dapat mengedit definisi tipe inti dan menambahkan milik Anda ke dalamnya. Pastikan untuk mengedit salinan file dan menggantinya setelah mengedit untuk menghindari masalah izin. Perlu diketahui bahwa Anda akan mengedit dan mengganti file sistem inti (yaitu meminta masalah) dengan melakukan ini.

Solusi yang lebih waras adalah membuat aplikasi "dummy" baru yang dengan mudah mendeklarasikan jenis file ISK sebagai Jenis Ekspor ISK . Ini akan digunakan oleh basis data jenis file OS X dan Anda dapat memperbarui OS X dan MPlayerX tanpa kehilangan asosiasi tipe konten. Bahkan jika Anda mengubah mis. .m4aKe MPlayerX, hanya kolom Jenis yang diubah, itu masih dalam kategori Film , karena deklarasi di aplikasi lain yang independen dari aplikasi terkait.

Jadi, buat aplikasi baru mis. Menggunakan Automator yang sebenarnya tidak melakukan apa-apa saat diluncurkan, dan tambahkan yang berikut ke Contents/Info.plistfile -nya :

masukkan deskripsi gambar di sini

Simpan dalam /Applicationsatau lebih, dan mulai ulang Finder.

masukkan deskripsi gambar di sini

mdlsKeluaran sebagian .mkvfile, jenis konten yang disediakan oleh "aplikasi pembantu", jenis barang yang disediakan oleh pemain terkait (MPlayerX):

kMDItemContentType             = "superuser.371939.mkv"
kMDItemContentTypeTree         = (
    "superuser.371939.mkv",
    "public.movie",
    "public.audiovisual-content",
    "public.data",
    "public.item",
    "public.content"
)
...
kMDItemKind                    = "Video Media"

Karena ini hanyalah integrasi platform yang ceroboh oleh pengembang, Anda mungkin harus mengajukan bug.

Daniel Beck
sumber
Sangat menarik. Belajar sesuatu yang baru hari ini. Jadi itu sebabnya kMDItemContentTypeTreetidak menambahkan sesuatu yang berguna ke metadata?
slhck
Sslhck Tepat. Sistem membutuhkan cara untuk mengaitkan file dengan tipe konten UTI. Itu hilang, karena tidak ada dalam sistem secara default (seperti misalnya .mp4), dan aplikasi yang menambahkan jenis file ke sistem tidak mendeklarasikan baik UTI (jadi adil dyn.xyz) atau relasi (jadi hanya saja public.data) baik. Mereka harus mendeklarasikan ISK dan mengaitkannya dengan public.movie(bukan sebagai contoh public.data).
Daniel Beck
1
Wow! Terima kasih atas penelitian yang informatif dan menyeluruh tentang masalah ini. Ini sangat mendidik dan bermanfaat. Saya masih belum mencoba solusi Anda, tetapi saya yakin itu akan berhasil. Sangat bagus!
Arnold
Peretasan dari semua peretasan adalah dengan hanya mengganti nama .mkvmenjadi .avi terengah - engah !!! Saya membuatnya sedikit kurang mengerikan dengan meninggalkan Komentar Spotlight (di Get Info) mengatakan itu benar-benar mkv. ..ini tentu saja mengasumsikan pemutar media Anda baik-baik saja dengan ekstensi yang salah - VLC tidak aktif;)
Joel Mellon
... Saya lupa, Anda juga dapat mengubah nama menjadi .mkv.aviuntuk solusi paling tidak jahat tetapi dengan nama file yang sedikit kurang cantik.
Joel Mellon