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в Terminal для одного из этих файлов, например mdls "Game of Thrones episode 2.mkv"?
Даниэль Бек

Является ли эта групповая функция новой в Lion? Значки также обозначают «Субтитры» и «Видео» соответственно, поэтому это не должно быть проблемой.
slhck

@slhck Это новое в Lion. Иконки являются 100% изображениями и предоставлены связанным приложением, так что это ничего не значит. Арнольд, спасибо за mdlsвыход. Используете ли вы MPlayer OSX или MPlayer OSX Extended ?
Даниэль Бек

@DanielBeck, это просто обычный MPlayerX из App Store .
Арнольд

@DanielBeck Ах, я думал, что это было представлено kMDContentType. Какой тип контента указан выше?
slhck

Ответы:


12

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

Например, определенные в системе типы файлов /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistобъявляют следующее в разделе UTIs Exported Type :

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

Это позволяет системе ассоциировать 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 ярлык на их значок, а просто видеоносителей с общим видео этикеткой. Все поддерживаемые типы файлов перечислены по расширению файла для этого «формата файла», поэтому MPlayerX может открыть их:

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

Это означает, что, например, если вы предпочитаете воспроизводить .m4aфайлы в MPlayerX, а не в iTunes, вы теряете описательный звук Apple MPEG-4 в столбце « Вид Finder» и вместо этого получаете Audio Media .


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

Вы можете исправить столбец « Вид », отредактировав один и тот же файл, правильно объявив типы файлов с лучшим описанием и создав файл значков для каждого из них.

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

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

В качестве альтернативы, по крайней мере, для Finder Arrange By Kind , вы можете редактировать определения основных типов и добавлять свои собственные. Обязательно отредактируйте копию файла и замените ее после редактирования, чтобы обойти проблемы с разрешениями. Имейте в виду, что при этом вы будете редактировать и заменять основные системные файлы (то есть, вызывать проблемы).

Более разумным решением было бы создание нового «фиктивного» приложения, которое просто объявляет UTI типа файла как UTI экспортированного типа . Это будет использоваться базой данных типов файлов OS X, и вы можете обновить как OS X, так и MPlayerX, не теряя связи типов контента. Даже если вы измените, например, .m4aна MPlayerX, только вид столбец , он все еще находится в категории Movie из-за объявлений в другом приложении, независимом от связанного приложения.

Итак, создайте новое приложение, например, используя 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
Вот это да! Спасибо за столь информативное и тщательное исследование проблемы. Это очень познавательно и полезно. Мне еще предстоит опробовать ваше решение, но я уверен, что оно сработает. Очень хорошо!
Арнольд

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

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