这里我有一个文件夹,里面有一堆 *.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 正确排列这些文件……
答案1
您需要使用一个声明正确文件类型关联的应用程序,例如.mkv
文件扩展名。
例如,系统定义的文件类型在/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist
声明中如下出口型 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 视频并有一个匹配的美军标签在他们的图标上,而只是视频媒体使用通用的视频标签。所有支持的文件类型都按此“文件格式”的文件扩展名列出,因此 MPlayerX 可以打开它们:
这意味着,例如,如果你更喜欢.m4a
在 MPlayerX 中播放文件而不是 iTunes,那么你就失去了描述性Apple MPEG-4 音频在 Finder 的种类列并获取音频媒体反而。
/Applications/MPlayerX.app/Contents/Info.plist
您可以通过编辑文件并正确声明(例如mplayerx.video
符合的 UTI)public.movie
并添加正确的文件扩展名映射来修复分组。
您可以修复种类通过编辑同一个文件,并正确地声明具有更好描述的文件类型,并为每个文件创建一个图标文件,可以实现此目的。
只需使用核心类型 Info.plist
文件作为模板,用public.jpeg
你自己的自定义标识符替换(例如,mplayerx.video
如果你不想要正确的种类列和图标,或者mplayerx.mkv
如果您想要的话)。您需要 Xcode 来编辑这些文件,或者使用 将它们转换为可在任何文本编辑器中编辑的 XML plutil -convert xml1 <filename>
。
您的更改很容易出错,并且将在每次应用程序更新时被覆盖。
或者,至少对于 Finder按种类排列,您可以编辑核心类型定义并添加您自己的定义。请确保编辑文件的副本并在编辑后替换它以避免权限问题。请注意,这样做会编辑和替换核心系统文件(即自找麻烦)。
一个更明智的解决方案是创建一个新的“虚拟”应用程序,简单地将文件类型 UTI 声明为出口型 UTI。这将由 OS X 的文件类型数据库使用,您可以更新 OS X 和 MPlayerX,而不会丢失内容类型关联。即使您更改.m4a
为 MPlayerX,也只有种类列已更改,但仍在电影类别,因为另一个应用程序中的声明独立于关联应用程序。
因此,创建一个新的应用例如使用 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"
由于这只是开发人员对平台集成不严谨的结果,您可能应该提交一个错误。