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.plistExported Type UTIs 섹션 에서 다음을 선언합니다 .

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

이를 통해 시스템은 UTI public.jpeg 를 "UTI 그룹"과 연관시킬 수 있습니다. 이는 public.imageFinder가 이미지 그룹에 사용하는 것입니다 . public.filename-extensions 동일한 종류는 파일 확장자에 매핑됩니다.

이를 통해 OS X .jpg은 해당 파일에 UTI가 있으며 해당 파일 public.jpeg의 하위 UTI public.image(및 public.itempublic.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.