OSX:コンテンツの種類に拡張子を割り当てる


14

ここに、*。mkvファイル(明らかにビデオ)と* .srtファイル(明らかに字幕)の束を含むフォルダーがあります。それらを1つのフォルダー内に保持したいのですが、それらを一緒にしたくありません。それらを2つの別々のグループに視覚的に配置することは良い考えのようです。

ただし、どちらの拡張機能もシステムによって認識されず、依然として1つのグループ「ドキュメント」の下に置かれますが、これは明らかに私が望むものではありません。

質問:すべての* .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これらのファイルの1つに対するターミナルでの出力は何mdls "Game of Thrones episode 2.mkv"ですか?
ダニエルベック

このグループ化機能はLionで新しく追加されましたか?アイコンにはそれぞれ「字幕」と「ビデオ」も表示されるため、実際には問題になりません。
slhck

@slhck Lionで新しくなりました。アイコンは100%画像であり、関連するアプリケーションによって提供されるため、それは何の意味もありません。アーノルド、mdls出力をありがとう。MPlayer OSXまたはMPlayer OSX Extendedを使用していますか?
ダニエルベック

@DanielBeck、それはApp Storeの通常のMPlayerXです。
アーノルド

@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(など、with public.itemおよびpublic.data)であると判断できます。Finderはすべてのファイルを(また)public.image取得し、同じ画像グループに入れます。

同じことはに適用public.mpeg-4し、public.movieそこにファイル名マッピング。


残念ながら、MPlayerXの作成者はUTIのマッピングを気にしませんでした。

彼は、プログラムがサポートするすべての拡張子に対して適切なファイルタイプを作成することさえしませんでした。そのため、Finderのリストビューでは、すべての.mkvファイルMatroska Videoなどと呼ばれ、アイコンに一致するMKVラベルがありますが、単に一般的なビデオラベルが付いたビデオメディアです。サポートされているすべてのファイルタイプは、この「ファイル形式」のファイル拡張子別にリストされているため、MPlayerXはそれらを開くことができます。

ここに画像の説明を入力してください

つまり、たとえば、.m4aiTunesよりもMPlayerX でファイルを再生したい場合は、Finderの種類列で説明的なApple MPEG-4オーディオを失い、代わりにオーディオメディアを取得します。


グループ化を修正するには、/Applications/MPlayerX.app/Contents/Info.plistファイルを編集し、適切なファイル名拡張子マッピングにmplayerx.video準拠するUTI などを適切に宣言しpublic.movieます。

[ 種類 ]列を修正するには、同じファイルを編集し、より適切な説明を含むファイルタイプを適切に宣言し、それぞれのアイコンファイルを作成します。

コアタイプ Info.plistファイルをテンプレートとして使用し、たとえばpublic.jpeg独自のカスタム識別子に置き換えます(たとえばmplayerx.video、適切な種類の列とアイコンが必要mplayerx.mkvない場合、または必要な場合)。これらのファイルを編集するには、またはを使用してテキストエディターで編集可能なXMLに変換するには、Xcodeが必要plutil -convert xml1 <filename>です。

間違いを犯しやすい変更は、アプリケーションが更新されるたびに上書きされます。

または、少なくともFinder Arrange By Kindの場合は、コアタイプの定義を編集して独自の定義を追加できます。アクセス許可の問題を回避するために、必ずファイルのコピーを編集し、編集後に置き換えてください。これを行うことにより、コアシステムファイルを編集および置換する(つまり、トラブルを依頼する)ことに注意してください。

賢明な解決策は、ファイルタイプUTIをエクスポートタイプUTIとして宣言するだけの新しい「ダミー」アプリケーションを作成することです。これはOS Xのファイルタイプデータベースで使用され、コンテンツタイプの関連付けを失うことなくOS XとMPlayerXの両方を更新できます。たとえば.m4aMPlayerXに変更した場合でも、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のSpotlight Commentに、それが本当にmkvであるというコメントを残すことで、少し恐ろしくなりました。..もちろん、これはメディアプレーヤーが間違った拡張子で問題ないことを前提としています-VLCはダウンしています;)
ジョエルメロン

...忘れてしまった、あなたはまた.mkv.avi、最も邪悪な回避策のためにそれを変更することができますが、わずかにきれいなファイル名で。
ジョエルメロン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.