OSX: призначити розширення типу вмісту


14

Тут у мене папка, що містить купу файлів * .mkv (відео, очевидно) і * .srt файлів (субтитри, очевидно). Я хочу тримати їх в одній папці, але я не хочу, щоб вони змішувалися разом. Дуже добре, що візуально їх розташувати в дві окремі групи.

Однак жодне розширення не визнається системою, і вони все ще підпадають під одну групу "Документи", що явно не те, що я хочу.

Питання: як сказати системі, що всі файли * .mkv слід трактувати як «Медіа» (або «Відео», або як би це не було назви групи файлів для відеофайлів)?

Спасибі.введіть тут опис зображення

Редагувати:

@Daniel, пов’язана програма MPlayerX, і результат цієї команди такий:

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$ 

Як не дивно, "Тип предмета" відображається як "Відеомедіа". А для файлу субтитрів є "Субтитри". Проте це не допомагає Finder чомусь правильно впорядкувати ці файли ...


Яка програма пов'язана з цими файлами? Який вихід mdlsу терміналі для одного з цих файлів, наприклад mdls "Game of Thrones episode 2.mkv"?
Даніель Бек

Чи є нова функція групування у Леві? Піктограми також відповідають "Субтитри" та "Відео" відповідно, тому насправді це не повинно бути проблемою.
slhck

@slhck Це нове в Леві. Піктограми - це 100% зображень і надаються відповідним додатком, так що нічого не означає. Арнольд, дякую за mdlsвихід. Використовуєте MPlayer OSX або MPlayer OSX Extended ?
Даніель Бек


@DanielBeck Ах, я думав , що це було представлено kMDContentType. Який тип вмісту є переліченим вище?
slhck

Відповіді:


12

Вам потрібно використовувати програму, яка оголошує правильну асоціацію типу файлу, наприклад, .mkvрозширення імені файлу.

Наприклад, визначені системою типи файлів /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistу розділі Експортовані UTI типи заявляють наступне :

введіть тут опис зображення введіть тут опис зображення

Це дозволяє системі асоціювати UTI public.jpeg з "групою UTI" public.image, що (дуже ймовірно) те, що Finder використовує для групи зображень ; public.filename-extensions еквівалентний тип карти для розширення файлу.

Це дозволяє OS X визначити, що у .jpgфайлі є UTI public.jpeg, і що це суб-UTI public.image(і так далі, з public.itemі public.data). Потім Finder бере всі файли, які є (також), public.imageі розміщує їх у одній групі зображень .

Те саме стосується public.mpeg-4і public.movieвідображення імені файлів там.


На жаль, автор MPlayerX не потрудився зіставити UTI.

Він навіть не потрудився створити належні типи файлів для всіх розширень, які підтримує програма. Ось чому в списку списку Finder всі .mkvфайли не називаються, наприклад, Matroska Video , і мають відповідний ярлик MKV на їх значку, а просто Video Media із загальною етикеткою Video . Усі підтримувані типи файлів перераховані за розширенням файлу для цього "формату файлу", тому MPlayerX може відкрити їх:

введіть тут опис зображення

Це означає, що, наприклад, якщо ви віддаєте перевагу відтворення .m4aфайлів у MPlayerX перед iTunes, ви втрачаєте описовий аудіо Apple MPEG-4 у стовпчику Finder's Kind і отримуєте натомість Audio Media .


Ви можете виправити групування, відредагувавши /Applications/MPlayerX.app/Contents/Info.plistфайл і належним чином оголосивши, наприклад, mplayerx.videoUTI, який відповідає public.movieі додавши належне відображення розширення імені файлу.

Ви можете виправити стовпчик " Вид ", відредагувавши той самий файл і належним чином оголосивши типи файлів з кращим описом та створивши файл значків для кожного.

Просто використовуйте файл типів Core Info.plist як шаблон, замінюючи, наприклад, public.jpegвласним ідентифікатором (наприклад, mplayerx.videoякщо ви не хочете належних стовпців та знаків Kind , або mplayerx.mkvякщо ви хочете їх). Вам потрібен Xcode для редагування цих файлів або перетворення їх у XML для редагування у будь-якому текстовому редакторі за допомогою plutil -convert xml1 <filename>.

Ваші зміни, які досить легко помилитися, будуть замінені під час кожного оновлення програми.

Крім того, принаймні для Finder Arrange By Kind ви можете редагувати визначення основних типів та додати до них свої власні. Обов’язково відредагуйте копію файлу та замініть її після редагування, щоб уникнути проблем з дозволами. Майте на увазі, що ви будете редагувати та замінювати основні системні файли (тобто запитати про проблеми), зробивши це.

Більш безпечним рішенням було б створити нову "фіктивну" програму, яка просто оголошує UTI типу файлу як ІМТ експортованого типу . Це використовуватиметься у базі даних файлів OS X, і ви можете оновити як OS X, так і MPlayerX, не втрачаючи асоціацій типу вмісту. Навіть якщо ви зміните, наприклад, .m4aна MPlayerX, змінюється лише стовпець " Kind ", він все ще знаходиться в категорії " Кіно " через декларації в іншому додатку, незалежному від пов'язаної програми.

Отже, створіть нову програму, наприклад, використовуючи Automator, який насправді нічого не робить під час запуску, та додайте у свій Contents/Info.plistфайл таке:

введіть тут опис зображення

Збережіть /Applicationsабо перезавантажте Finder.

введіть тут опис зображення

Часткове mdlsвиведення .mkvфайлу, тип вмісту, наданий "допоміжною програмою", тип елемента, наданий асоційованим програвачем (MPlayerX):

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

Оскільки це лише неохайна інтеграція платформи розробником, ви, ймовірно, повинні подати помилку.


Дуже цікаво. Сьогодні дізналися щось нове. Тож чому kMDItemContentTypeTreeметадані не додають нічого корисного?
slhck

@slhck Рівно. Системі потрібен спосіб пов'язати файл із типом вмісту UTI. Цього немає, оскільки його немає в системі за замовчуванням (наприклад, .mp4є), і додаток, що додає тип файлу до системи, не оголошує ні UTI (так що це просто dyn.xyz), ні відношення (так що це просто public.data). Їм потрібно буде оголосити UTI і пов’язати його public.movie(замість, наприклад public.data).
Даніель Бек

1
Оце Так! Дякуємо за таке інформативне та ретельне дослідження проблеми. Це дуже навчально і корисно. Я все ще намагаюся спробувати ваше рішення, але впевнений, що він спрацює. Дуже хороша!
Арнольд

Самий хакістський з усіх хакків - це просто перейменувати його .mkvна .avi задишку !!! Я роблю це трохи менш жахливим, залишаючи коментар прожектора (в Get Info), кажучи, що це дійсно mkv. .. це, звичайно, припускає, що ваш медіаплеєр не в порядку з неправильним розширенням - VLC знижується;)
Джоел Меллон

... Я забув, ви також можете перейменувати його на .mkv.aviнайменш злий спосіб вирішення, але з трохи менш гарним ім'ям файлу.
Джоел Меллон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.