OSX: Weisen Sie der Inhaltsart eine Erweiterung zu

14

Hier habe ich einen Ordner mit einer Reihe von * .mkv-Dateien (Video, offensichtlich) und * .srt-Dateien (Untertitel, offensichtlich). Ich möchte sie in einem Ordner behalten, aber ich möchte nicht, dass sie miteinander vermischt werden. Es scheint eine gute Idee zu sein, sie visuell in zwei separate Gruppen zu unterteilen.

Keine der Erweiterungen wird jedoch vom System erkannt, und sie werden immer noch unter einer Gruppe "Dokumente" abgelegt, was eindeutig nicht das ist, was ich möchte.

Die Frage: Wie kann man dem System mitteilen, dass alle * .mkv-Dateien als 'Medien' (oder 'Videos' oder wie auch immer der Name der Dateitypgruppe für Videodateien lautet) behandelt werden sollen?

Vielen Dank.Bildbeschreibung hier eingeben

BEARBEITEN:

@ Daniel, das zugehörige Programm ist MPlayerX und die Ausgabe dieses Befehls lautet wie folgt:

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$ 

Seltsamerweise wird die 'Item Art' als 'Video Media' angezeigt. Und für eine Untertiteldatei ist 'Untertitel'. Trotzdem hilft es Finder aus irgendeinem Grund nicht, diese Dateien richtig anzuordnen.

Arnold
quelle
Welches Programm ist mit diesen Dateien verbunden? Was ist die Ausgabe mdlsin Terminal für eine dieser Dateien, zB mdls "Game of Thrones episode 2.mkv"?
Daniel Beck
Ist diese Gruppierungsfunktion in Lion neu? Die Symbole sagen auch "Untertitel" und "Video", so dass es eigentlich kein Problem sein sollte.
Slhck
@slhck Es ist neu in Lion. Symbole sind zu 100% Bilder und werden von der zugehörigen Anwendung bereitgestellt. Das bedeutet also nichts. Arnold, danke für die mdlsAusgabe. Verwenden Sie MPlayer OSX oder MPlayer OSX Extended ?
Daniel Beck
@DanielBeck, es ist nur der normale MPlayerX aus dem App Store .
Arnold
@ DanielBeck Ah, ich dachte, es wurde vertreten durch kMDContentType. Welche Art von Inhaltstyp ist der oben aufgeführte?
Slhck

Antworten:

12

Sie müssen eine Anwendung verwenden, die die richtige Dateitypzuordnung deklariert, z. B. für die .mkvDateinamenerweiterung.

Beispielsweise /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistdeklarieren die systemdefinierten Dateitypen in im Abschnitt Exportierte Typ-UTIs Folgendes :

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Auf diese Weise kann das System die UTI public.jpeg der "UTI-Gruppe" zuordnen public.image, die (sehr wahrscheinlich) von Finder für die Gruppe " Images " verwendet wird. Der public.filename-extensions entsprechende Typ entspricht der Dateierweiterung.

Auf diese Weise kann OS X feststellen, ob diese .jpgDatei die UTI enthält public.jpegund ob es sich um eine Unter-UTI von public.image(und so weiter, mit public.itemund public.data) handelt. Finder nimmt dann alle Dateien, die (auch) vorhanden sind, public.imageund legt sie in derselben Bildergruppe ab .

Gleiches gilt für public.mpeg-4und public.movieund das dortige Dateinamens-Mapping.


Leider hat sich der Autor von MPlayerX nicht darum gekümmert, die UTIs zu mappen.

Er hat sich nicht einmal die Mühe gemacht, die richtigen Dateitypen für alle vom Programm unterstützten Erweiterungen zu erstellen. Aus diesem Grunde in Finder Listenansicht , alle .mkvDateien sind nicht zB genannt Matroska Video , und ein passendes haben MKV - Label auf ihrer Ikone, sondern einfach Video Medien mit einem allgemeinen Video - Label. Alle unterstützten Dateitypen werden nach Dateierweiterung für dieses "Dateiformat" aufgelistet, sodass MPlayerX sie öffnen kann:

Bildbeschreibung hier eingeben

Wenn Sie beispielsweise .m4aDateien in MPlayerX vor iTunes abspielen möchten, verlieren Sie das beschreibende Apple MPEG-4-Audio in der Spalte Finder- Typ und erhalten stattdessen Audio-Medien .


Sie können die Gruppierung korrigieren, indem Sie die /Applications/MPlayerX.app/Contents/Info.plistDatei bearbeiten und z. B. eine mplayerx.videoUTI, die public.movieder Zuordnung der Dateinamenerweiterungen entspricht, ordnungsgemäß deklarieren und hinzufügen.

Sie können die Spalte " Art" korrigieren, indem Sie dieselbe Datei bearbeiten, die Dateitypen mit einer besseren Beschreibung ordnungsgemäß deklarieren und für jede Datei eine Symboldatei erstellen.

Verwenden Sie einfach die Core Types- Info.plist Datei als Vorlage und ersetzen Sie sie z. B. public.jpegdurch Ihren eigenen benutzerdefinierten Bezeichner (z. B. mplayerx.videowenn Sie nicht die richtigen Kind- Spalten und -Symbole mplayerx.mkvmöchten oder wenn Sie sie möchten). Sie benötigen Xcode, um diese Dateien zu bearbeiten oder sie in XML zu konvertieren, das mit einem beliebigen Texteditor bearbeitet werden kann plutil -convert xml1 <filename>.

Ihre Änderungen, die leicht zu verfälschen sind, werden bei jedem Anwendungsupdate überschrieben.

Alternativ können Sie zumindest für Finder Arrange By Kind die Definitionen der Kerntypen bearbeiten und eigene hinzufügen. Stellen Sie sicher, dass Sie eine Kopie der Datei bearbeiten und diese nach der Bearbeitung ersetzen, um Berechtigungsprobleme zu umgehen. Beachten Sie, dass Sie auf diese Weise Kernsystemdateien bearbeiten und ersetzen (dh nach Problemen fragen).

Eine vernünftigere Lösung wäre, eine neue "Dummy" -Anwendung zu erstellen, die die UTIs des Dateityps einfach als UTIs des exportierten Typs deklariert . Dies wird von der Dateitypdatenbank von OS X verwendet, und Sie können sowohl OS X als auch MPlayerX aktualisieren, ohne die Inhaltstypzuordnungen zu verlieren. Auch wenn Sie z. B. .m4azu MPlayerX wechseln, wird nur die Spalte " Art" geändert. Aufgrund der Deklarationen in einer anderen Anwendung, die von der zugeordneten Anwendung unabhängig ist, befindet sie sich weiterhin in der Kategorie " Film ".

Erstellen Sie also eine neue Anwendung, z. B. mit Automator, die beim Start nichts bewirkt, und fügen Sie der Contents/Info.plistDatei Folgendes hinzu :

Bildbeschreibung hier eingeben

Speichern Sie in /Applicationsoder so und starten Sie Finder neu.

Bildbeschreibung hier eingeben

Teilausgabe mdlsder .mkvDatei, Inhaltstyp, der von der "Helfer-App" bereitgestellt wird, Elementtyp, der vom zugehörigen Player (MPlayerX) bereitgestellt wird:

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

Da dies nur eine schlampige Plattformintegration durch den Entwickler ist, sollten Sie wahrscheinlich einen Fehler melden.

Daniel Beck
quelle
Sehr interessant. Heute etwas Neues gelernt. Deswegen kMDItemContentTypeTreefügt das den Metadaten also nichts Nützliches hinzu?
Slhck
@slhck Genau. Das System benötigt eine Möglichkeit, die Datei dem Inhaltstyp UTI zuzuordnen. Das fehlt, da es nicht standardmäßig im System vorhanden ist (wie z. B. .mp4) und die Anwendung, die den Dateityp zum System hinzufügt , weder die UTI (also nur dyn.xyz) noch die Relation (also nur public.data) deklariert . Sie müssten die UTI deklarieren und mit ihr verknüpfen public.movie(anstatt z public.data. B. ).
Daniel Beck
1
Beeindruckend! Vielen Dank für eine so informative und gründliche Untersuchung des Problems. Das ist sehr lehrreich und hilfreich. Ich habe Ihre Lösung noch nicht ausprobiert, aber ich bin mir sicher, dass sie funktionieren wird. Sehr schön!
Arnold
Der hackigste aller Hacks ist das Umbenennen .mkvin " .avi Keuchen" !!! Ich mache es etwas weniger schrecklich, indem ich einen Spotlight-Kommentar (in Get Info) hinterlasse, der besagt, dass es wirklich ein mkv ist. ..dies setzt natürlich voraus, dass Ihr Mediaplayer mit der falschen Erweiterung in Ordnung ist - VLC ist ausgefallen;)
Joel Mellon
... Ich habe vergessen, Sie können es auch umbenennen, .mkv.avium die am wenigsten böse Problemumgehung zu erreichen, aber mit einem etwas weniger hübschen Dateinamen.
Joel Mellon