OSX: atribuir extensão ao tipo de conteúdo

14

Aqui eu tenho uma pasta contendo um monte de arquivos * .mkv (vídeo, obviamente) e * .srt (legendas, obviamente). Quero mantê-los em uma pasta, mas não quero que eles sejam misturados. Parece uma boa ideia organizá-los visualmente em dois grupos separados.

No entanto, nenhuma das extensões é reconhecida pelo sistema e ainda é colocada em um grupo 'Documentos', o que claramente não é o que eu quero.

A questão: como informar ao sistema que todos os arquivos * .mkv devem ser tratados como 'Mídia' (ou 'Vídeos' ou qualquer que seja o nome do grupo de tipos de arquivos dos arquivos de vídeo)?

Obrigado.insira a descrição da imagem aqui

EDITAR:

@ Daniel, o programa associado é MPlayerX e a saída desse comando é a seguinte:

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$ 

Estranhamente, o 'Item Kind' aparece como 'Video Media'. E para um arquivo de legenda é 'Subtitle'. Ainda assim, não ajuda o Finder a organizar esses arquivos corretamente por algum motivo ...

Arnold
fonte
Qual programa está associado a esses arquivos? Qual é a saída do mdlsTerminal para um desses arquivos, por exemplo mdls "Game of Thrones episode 2.mkv"?
Daniel Beck
Esse recurso de agrupamento é novo no Lion? Os ícones também dizem "Legendas" e "Vídeo", respectivamente, portanto não deve ser realmente um problema.
slhck
@slhck É novo no Lion. Os ícones são 100% imagens e são fornecidos pelo aplicativo associado, o que não significa nada. Arnold, obrigado pela mdlssaída. Você está usando o MPlayer OSX ou o MPlayer OSX Extended ?
Daniel Beck
@DanielBeck, é apenas o MPlayerX comum da App Store .
Arnold
@DanielBeck Ah, eu pensei que era representado por kMDContentType. Que tipo de conteúdo é o listado acima?
slhck

Respostas:

12

Você precisa usar um aplicativo que declare a associação correta do tipo de arquivo, por exemplo, a .mkvextensão do nome do arquivo.

Por exemplo, os tipos de arquivo definidos pelo sistema /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistdeclaram o seguinte na seção UTIs de tipo exportado :

insira a descrição da imagem aqui insira a descrição da imagem aqui

Isso permite que o sistema associe a UTI public.jpeg ao "grupo UTI" public.image, que é (muito provavelmente) o que o Finder usa para o grupo Imagens ; o public.filename-extensions tipo equivalente é mapeado para a extensão do arquivo.

Isso permite que o OS X determine, esse .jpgarquivo possui a UTI public.jpege é uma sub-UTI de public.image(e assim por diante, com public.iteme public.data). O Finder pega todos os arquivos que estão (também) public.imagee os coloca no mesmo grupo de Imagens .

O mesmo aplica-se a public.mpeg-4e public.moviee o mapeamento de nome de arquivo lá.


Infelizmente, o autor do MPlayerX não se incomodou em mapear as UTIs.

Ele nem se deu ao trabalho de criar tipos de arquivos adequados para todas as extensões que o programa suporta. É por isso que, na exibição em lista do Finder , todos os .mkvarquivos não são chamados, por exemplo, Matroska Video , e têm um rótulo MKV correspondente em seu ícone, mas simplesmente Video Media com um rótulo Video genérico . Todos os tipos de arquivos suportados são listados por extensão para este "formato de arquivo", para que o MPlayerX possa abri-los:

insira a descrição da imagem aqui

Isso significa, por exemplo, que se você prefere reproduzir .m4aarquivos no MPlayerX e no iTunes, perde o áudio descritivo do Apple MPEG-4 na coluna Kind 's Kind e obtém a mídia de áudio .


Você pode corrigir o agrupamento editando o /Applications/MPlayerX.app/Contents/Info.plistarquivo e declarando adequadamente, por exemplo, uma mplayerx.videoUTI em conformidade public.moviee adicionando o mapeamento de extensão de nome de arquivo adequado.

Você pode corrigir a coluna Tipo editando o mesmo arquivo e declarando corretamente os tipos de arquivo com uma descrição melhor e criando um arquivo de ícone para cada um.

Basta usar o arquivo Core Types Info.plist como modelo, substituindo, por exemplo, por public.jpegseu próprio identificador personalizado (por exemplo, mplayerx.videose você não deseja colunas e ícones Kind apropriados , ou mplayerx.mkvse deseja). Você precisa do Xcode para editar esses arquivos ou convertê-los para XML editável em qualquer editor de texto usando plutil -convert xml1 <filename>.

Suas alterações, que são fáceis de errar, serão substituídas a cada atualização do aplicativo.

Como alternativa, pelo menos para o Finder Organizar por tipo , você pode editar as definições dos tipos principais e adicionar suas próprias. Certifique-se de editar uma cópia do arquivo e substituí-lo após a edição para contornar os problemas de permissão. Esteja ciente de que você estará editando e substituindo os arquivos principais do sistema (ou seja, solicitando problemas) fazendo isso.

Uma solução mais saudável seria criar um novo aplicativo "fictício" que simplesmente declare as UTIs do tipo de arquivo como UTIs do tipo exportado . Isso será usado pelo banco de dados de tipo de arquivo do OS X e você poderá atualizar o OS X e o MPlayerX sem perder as associações de tipo de conteúdo. Mesmo se você mudar, por exemplo, .m4apara MPlayerX, apenas a coluna Tipo será alterada, ela ainda estará na categoria Filme , devido às declarações em outro aplicativo independente do aplicativo associado.

Portanto, crie um novo aplicativo, por exemplo, usando o Automator que realmente não faz nada quando iniciado e adicione o seguinte ao seu Contents/Info.plistarquivo:

insira a descrição da imagem aqui

Salve mais /Applicationsou menos e reinicie o Finder.

insira a descrição da imagem aqui

mdlsSaída parcial do .mkvarquivo, tipo de conteúdo fornecido pelo "aplicativo auxiliar", tipo de item fornecido pelo player associado (MPlayerX):

kMDItemContentType             = "superuser.371939.mkv"
kMDItemContentTypeTree         = (
    "superuser.371939.mkv",
    "public.movie",
    "public.audiovisual-content",
    "public.data",
    "public.item",
    "public.content"
)
...
kMDItemKind                    = "Video Media"

Como essa é apenas uma integração desleixada da plataforma pelo desenvolvedor, você provavelmente deve registrar um bug.

Daniel Beck
fonte
Muito interessante. Aprendi algo novo hoje. É por isso kMDItemContentTypeTreeque não adiciona nada útil aos metadados?
slhck
@slhck Exatamente. O sistema precisa de uma maneira de associar o arquivo ao tipo de conteúdo UTI. Está faltando, já que não está no sistema por padrão (como, por exemplo, .mp4está), e o aplicativo que adiciona o tipo de arquivo ao sistema não declara a UTI (por isso é apenas dyn.xyz) ou a relação (por isso é apenas public.data) também. Eles precisariam declarar a UTI e associá-la public.movie(em vez de, por exemplo public.data).
Daniel Beck
1
Uau! Obrigado por uma pesquisa tão informativa e completa sobre o problema. Isso é muito educativo e útil. Ainda estou para experimentar sua solução, mas tenho certeza que funcionará. Muito agradável!
Arnold
O hackiest de todos os hacks é simplesmente renomear o .mkvpara .avi ofegar !!! Para torná-lo um pouco menos horrível, deixo um Comentário do Spotlight (em Obter informações) dizendo que é realmente um MKV. ..a de curso assume seu media player está tudo bem com a extensão errada - VLC é baixo;)
Joel Mellon
... Esqueci, você também pode renomeá-lo .mkv.avipara a solução alternativa menos perigosa, mas com um nome de arquivo um pouco menos bonito.
Joel Mellon