Arn*_*old 14 finder file-association macos
在这里,我有一个文件夹,其中包含一堆 *.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$
Run Code Online (Sandbox Code Playgroud)
奇怪的是,“项目种类”确实显示为“视频媒体”。而对于字幕文件是“字幕”。尽管如此,由于某种原因,它并不能帮助 Finder 正确排列这些文件......
Dan*_*eck 12
您需要使用一个应用程序来声明正确的文件类型关联,例如.mkv
文件扩展名。
例如,系统定义的文件类型在导出类型 UTI部分/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist
声明以下内容:
这允许系统将UTI public.jpeg
与“UTI 组”相关联public.image
,这(很可能)是 Finder 用于图像组的内容;在public.filename-extensions
同等类型映射到文件扩展名。
这允许 OS X 确定该.jpg
文件具有 UTI public.jpeg
,并且它是public.image
(依此类推,带有public.item
和public.data
)的子 UTI 。Finder 然后获取(也)所有文件public.image
并将它们放在同一个图像组中。
这同样适用于public.mpeg-4
和public.movie
和那里的文件名映射。
不幸的是,MPlayerX 的作者并没有费心映射 UTI。
他甚至没有费心为程序支持的所有扩展名创建正确的文件类型。这就是为什么在 Finder 的列表视图中,所有.mkv
文件都没有被称为,例如Matroska Video,并且在它们的图标上有一个匹配的MKV标签,而只是带有通用视频标签的Video Media。所有支持的文件类型都按此“文件格式”的文件扩展名列出,因此 MPlayerX 可以打开它们:
这意味着,例如,如果您更喜欢.m4a
在 MPlayerX 中播放文件而不是iTunes,您将丢失Finder 的种类列中的描述性Apple MPEG-4 音频,而是获得音频媒体。
您可以通过编辑/Applications/MPlayerX.app/Contents/Info.plist
文件并正确声明例如mplayerx.video
符合public.movie
并添加正确文件扩展名映射的UTI来修复分组。
您可以通过编辑相同的文件来修复Kind列,并使用更好的描述正确声明文件类型,并为每个文件创建一个图标文件。
只需使用Core Types Info.plist
文件作为模板,例如替换public.jpeg
为您自己的自定义标识符(例如,mplayerx.video
如果您不想要正确的Kind列和图标,或者mplayerx.mkv
如果您想要它们)。您需要 Xcode 来编辑这些文件,或者使用plutil -convert xml1 <filename>
.
您的更改很容易出错,每次应用程序更新都会覆盖这些更改。
或者,至少对于 Finder按种类排列,您可以编辑核心类型定义并将您自己的定义添加到其中。确保编辑文件的副本并在编辑后替换它以规避权限问题。请注意,您将通过这样做来编辑和替换核心系统文件(即自找麻烦)。
更明智的解决方案是创建一个新的“虚拟”应用程序,该应用程序简单地将文件类型 UTI 声明为导出类型 UTI。这将由 OS X 的文件类型数据库使用,您可以更新 OS X 和 MPlayerX 而不会丢失内容类型关联。即使您更改.m4a
为 MPlayerX,仅更改Kind列,它仍然在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"
Run Code Online (Sandbox Code Playgroud)
由于这只是开发人员草率的平台集成,您可能应该提交错误。
归档时间: |
|
查看次数: |
8384 次 |
最近记录: |