OSX: assegna l'estensione al tipo di contenuto


14

Qui ho una cartella contenente un mucchio di file * .mkv (video, ovviamente) e * .srt (sottotitoli, ovviamente). Voglio tenerli all'interno di una cartella, ma non voglio che vengano mescolati insieme. Sembra una buona idea organizzarli visivamente in due gruppi separati.

Tuttavia, nessuna estensione viene riconosciuta dal sistema e viene comunque inserita in un unico gruppo "Documenti", che chiaramente non è quello che desidero.

La domanda: come dire al sistema che tutti i file * .mkv devono essere trattati come 'Media' (o 'Video', o qualunque sia il nome del gruppo di tipi di file per i file video)?

Grazie.inserisci qui la descrizione dell'immagine

MODIFICARE:

@Daniel, il programma associato è MPlayerX e l'output di quel comando è il seguente:

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$ 

Stranamente, "Item Kind" appare come "Video Media". E per un file di sottotitoli è 'Sottotitolo'. Tuttavia, non aiuta Finder a organizzare quei file correttamente per qualche motivo ...


Quale programma è associato a questi file? Qual è l'output di mdlsin Terminal per uno di questi file, ad esempio mdls "Game of Thrones episode 2.mkv"?
Daniel Beck

Questa funzionalità di raggruppamento è nuova in Lion? Le icone dicono anche "Sottotitoli" e "Video", rispettivamente, quindi non dovrebbe essere un problema.
slhck,

@slhck È nuovo in Lion. Le icone sono immagini al 100% e fornite dall'applicazione associata, quindi ciò non significa nulla. Arnold, grazie per l' mdlsoutput. Stai usando MPlayer OSX o MPlayer OSX Extended ?
Daniel Beck

@DanielBeck, è solo il normale MPlayerX dell'App Store .
Arnold,

@DanielBeck Ah, pensavo fosse rappresentato da kMDContentType. Che tipo di contenuto è quello elencato sopra però?
slhck,

Risposte:


12

È necessario utilizzare un'applicazione che dichiari l'associazione corretta del tipo di file, ad esempio l' .mkvestensione del nome file.

Ad esempio, i tipi di file definiti dal sistema in /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistdichiarano quanto segue nella sezione UTI Tipo esportato :

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Ciò consente al sistema di associare l' UTI public.jpeg al "gruppo UTI" public.image, che è (molto probabilmente) ciò che il Finder utilizza per il gruppo Immagini ; il public.filename-extensions tipo equivalente è associato all'estensione del file.

Ciò consente a OS X di determinare che il .jpgfile ha l'UDI public.jpege che sia un UTI secondario di public.image(e così via, con public.iteme public.data). Finder quindi prende tutti i file che sono (anche) public.imagee li mette nello stesso gruppo di immagini .

Lo stesso vale per public.mpeg-4e public.moviee la mappatura nome del file lì.


Sfortunatamente, l'autore di MPlayerX non si è preoccupato di mappare le UTI.

Non si è nemmeno preoccupato di creare i tipi di file corretti per tutte le estensioni supportate dal programma. Ecco perché nella visualizzazione elenco del Finder , tutti i .mkvfile non sono chiamati ad esempio Matroska Video e hanno un'etichetta MKV corrispondente sulla loro icona, ma semplicemente Media video con un'etichetta video generica . Tutti i tipi di file supportati sono elencati in base all'estensione per questo "formato file", in modo che MPlayerX possa aprirli:

inserisci qui la descrizione dell'immagine

Ciò significa, ad esempio, se si preferisce riprodurre .m4afile in MPlayerX su iTunes, si perde l' audio descrittivo Apple MPEG-4 nella colonna Tipo del Finder e si ottiene invece Audio Media .


È possibile correggere il raggruppamento modificando il /Applications/MPlayerX.app/Contents/Info.plistfile e dichiarando correttamente, ad esempio, un mplayerx.videoUTI conforme public.moviee aggiungendo il corretto mapping dell'estensione del nome file.

È possibile correggere la colonna Kind modificando lo stesso file e dichiarando correttamente i tipi di file con una descrizione migliore e creando un file icona per ciascuno.

Usa semplicemente il file Tipi di core Info.plist come modello, sostituendolo ad es. public.jpegCon il tuo identificativo personalizzato (ad es. mplayerx.videoSe non vuoi colonne e icone Kind appropriate , o mplayerx.mkvse li vuoi). È necessario Xcode per modificare questi file o convertirli in XML modificabili in qualsiasi editor di testo tramite plutil -convert xml1 <filename>.

Le tue modifiche, che sono piuttosto facili da sbagliare, verranno sostituite con ogni aggiornamento dell'applicazione.

In alternativa, almeno per il Finder Arrange By Kind , puoi modificare le definizioni dei tipi principali e aggiungerne una tua. Assicurati di modificare una copia del file e sostituirlo dopo la modifica per aggirare i problemi di autorizzazione. Tieni presente che eseguirai la modifica e la sostituzione dei file di sistema di base (ad esempio chiedendo problemi) in questo modo.

Una soluzione più efficace sarebbe quella di creare una nuova applicazione "fittizia" che dichiari semplicemente le UTI di tipo file come UTI di tipo esportato . Questo verrà utilizzato dal database dei tipi di file di OS X ed è possibile aggiornare sia OS X che MPlayerX senza perdere le associazioni dei tipi di contenuto. Anche se cambi ad es. In .m4aMPlayerX, viene modificata solo la colonna Kind , è ancora nella categoria Film , a causa delle dichiarazioni in un'altra applicazione indipendente dall'applicazione associata.

Quindi, crea una nuova applicazione, ad esempio utilizzando Automator che in realtà non fa nulla quando viene avviato e aggiungi quanto segue al suo Contents/Info.plistfile:

inserisci qui la descrizione dell'immagine

Salva in /Applicationscirca e riavvia Finder.

inserisci qui la descrizione dell'immagine

mdlsOutput parziale del .mkvfile, tipo di contenuto fornito dalla "app di supporto", tipo di elemento fornito dal lettore associato (MPlayerX):

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

Dato che si tratta solo di un'integrazione sciatta della piattaforma da parte dello sviluppatore, probabilmente dovresti presentare un bug.


Molto interessante. Ho imparato qualcosa di nuovo oggi. Ecco perché kMDItemContentTypeTreenon aggiunge nulla di utile ai metadati?
slhck

@slhck Esattamente. Il sistema ha bisogno di un modo per associare il file al tipo di contenuto UTI. Manca, poiché non è nel sistema per impostazione predefinita (come ad es. Lo .mp4è) e l'applicazione che aggiunge il tipo di file al sistema non dichiara né l'UTI (quindi è solo dyn.xyz) né la relazione (quindi è solo public.data). Dovrebbero dichiarare l'UTI e associarlo public.movie(anziché ad es public.data.).
Daniel Beck

1
Wow! Grazie per una ricerca così istruttiva e approfondita sul problema. Questo è molto educativo e utile. Devo ancora provare la tua soluzione, ma sono sicuro che funzionerà. Molto bella!
Arnold,

Il più hack di tutti gli hack è semplicemente rinominare il .mkvto .avi gasp !!! Lo rendo leggermente meno orribile lasciando un commento Spotlight (in Ottieni informazioni) dicendo che è davvero un mkv. ..questo ovviamente presuppone che il tuo lettore multimediale sia a posto con l'estensione sbagliata - VLC è inattivo;)
Joel Mellon

... Ho dimenticato, puoi anche rinominarlo .mkv.aviper la soluzione meno malvagia ma con un nome file leggermente meno carino.
Joel Mellon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.