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$ 

이상하게도 'Item Kind'는 'Video Media'로 표시됩니다. 자막 파일은 '자막'입니다. 그래도 Finder가 어떤 이유로 파일을 올바르게 정렬하는 데 도움이되지 않습니다 ...


이 파일들과 관련된 프로그램은 무엇입니까? mdls이러한 파일 중 하나에 대한 터미널 출력은 무엇입니까 mdls "Game of Thrones episode 2.mkv"?
— Daniel Beck

이 그룹화 기능은 Lion의 새로운 기능입니까? 아이콘에는 각각 "자막"과 "비디오"라고 표시되어 있으므로 실제로 문제가되지 않습니다.
— slhck

@slhck Lion의 새로운 기능입니다. 아이콘은 100 % 이미지이며 관련 응용 프로그램에서 제공하므로 아무 의미가 없습니다. 아놀드, mdls출력 주셔서 감사합니다 . 당신이 사용하고 MPlayer는 OSX 또는 확장 MPlayer는 OSX를 ?
— 다니엘 벡


@DanielBeck Ah, 나는 그것이 대표한다고 생각했다 kMDContentType. 그래도 위에 나열된 컨텐츠 유형은 무엇입니까?
— slhck

답변:


12

.mkv파일 이름 확장자 와 같은 올바른 파일 형식 연결을 선언하는 응용 프로그램을 사용해야합니다 .

예를 들어, 시스템 정의 파일 형식 /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist은 Exported Type UTIs 섹션 에서 다음을 선언합니다 .

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

이를 통해 시스템은 UTI public.jpeg 를 "UTI 그룹"과 연관시킬 수 있습니다. 이는 public.imageFinder가 이미지 그룹에 사용하는 것입니다 . 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가 열 수 있습니다.

여기에 이미지 설명을 입력하십시오

예를 들어 .m4aMPlayerX에서 iTunes로 파일을 재생하려는 경우 Finder 's Kind ( 파인더의 종류) 열 에서 설명적인 Apple MPEG-4 오디오 를 잃어 버리고 대신 오디오 미디어 를 가져옵니다 .


/Applications/MPlayerX.app/Contents/Info.plist파일 을 편집 하고 적절한 파일 이름 확장자 매핑 mplayerx.video을 준수 public.movie하고 추가 하는 UTI를 올바르게 선언 하여 그룹화를 수정할 수 있습니다 .

동일한 파일을 편집하고 더 나은 설명으로 파일 유형을 올바르게 선언하고 각각에 대한 아이콘 파일을 작성 하여 종류 열을 수정할 수 있습니다 .

Core Types 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를 모두 업데이트 할 수 있습니다. 예 .m4a를 들어 MPlayerX로 변경하더라도 Kind 열만 변경되지만 관련 응용 프로그램과 독립적으로 다른 응용 프로그램의 선언으로 인해 여전히 영화 범주에 있습니다.

따라서 Automator를 사용하여 시작할 때 실제로 아무것도하지 않는 새 응용 프로그램을 만들고 Contents/Info.plist파일에 다음을 추가 하십시오.

여기에 이미지 설명을 입력하십시오

저장하고 /ApplicationsFinder를 다시 시작하십시오.

여기에 이미지 설명을 입력하십시오

파일 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와 연관시키는 방법이 필요합니다. 기본적으로 시스템에 있지 않기 때문에 누락되어 있습니다 (예 : .mp4is 와 같음 ) . 파일 유형을 시스템에 추가 하는 응용 프로그램 은 UTI (그래서 그냥 dyn.xyz) 또는 관계 (그래서 그냥 )를 선언하지 않습니다 public.data. 그들은 UTI를 선언해야 할 것 와 와 연결 public.movie(대신 등의 public.data).
— Daniel Beck

1
와! 문제에 대한 유익하고 철저한 연구에 감사드립니다. 이것은 매우 교육적이고 도움이됩니다. 나는 아직도 당신의 해결책을 시험해 보지 만 그것이 효과가있을 것이라고 확신합니다. 아주 좋아요!
— Arnold

모든 해킹 중 가장 어려운 것은 단순히 이름 .mkv을 .avi 헐떡 거림으로 바꾸는 것입니다 ! Spotlight Comment (Get Info)에서 실제로 mkv라고 말하면 약간 덜 끔찍합니다. 물론 ..이 미디어 플레이어가 잘못된 확장자 괜찮 가정 - VLC가 다운)
— 조엘 멜론

... .mkv.avi사악한 해결 방법으로 이름을 바꿀 수 있지만 파일 이름이 약간 적습니다.
— Joel Mellon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.