OSX: gán phần mở rộng cho loại nội dung


14

Ở đây tôi có một thư mục chứa một loạt các tệp * .mkv (video, rõ ràng) và * .srt (phụ đề, rõ ràng). Tôi muốn giữ chúng trong một thư mục nhưng tôi không muốn chúng bị trộn lẫn với nhau. Có vẻ như một ý tưởng tốt để sắp xếp trực quan chúng thành hai nhóm riêng biệt.

Tuy nhiên, không có tiện ích mở rộng nào được hệ thống nhận ra và chúng vẫn được đặt trong một nhóm 'Tài liệu', đây rõ ràng không phải là điều tôi muốn.

Câu hỏi: làm thế nào để nói với hệ thống rằng tất cả tệp * .mkv nên được coi là 'Phương tiện' (hoặc 'Video' hoặc bất kỳ tên nào của nhóm loại tệp cho tệp video)?

Cảm ơn.nhập mô tả hình ảnh ở đây

BIÊN TẬP:

@Daniel, chương trình liên quan là MPlayerX và đầu ra của lệnh đó như sau:

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$ 

Thật kỳ lạ, 'Loại vật phẩm' hiển thị dưới dạng 'Video Media'. Và đối với tệp phụ đề là 'Phụ đề'. Tuy nhiên, nó không giúp Finder sắp xếp các tệp đó một cách chính xác vì một số lý do


Chương trình nào được liên kết với các tập tin này? Đầu ra của mdlsTerminal cho một trong những tệp này là mdls "Game of Thrones episode 2.mkv"gì?
Daniel Beck

Là tính năng nhóm này mới trong Lion? Các biểu tượng cũng lần lượt nói "Phụ đề" và "Video", vì vậy nó thực sự không phải là một vấn đề.
slhck

@slhck Nó mới ở Lion. Các biểu tượng là hình ảnh 100% và được cung cấp bởi ứng dụng liên quan, do đó không có nghĩa gì cả. Arnold, cảm ơn vì mdlsđầu ra. Bạn đang sử dụng MPlayer OSX hay MPlayer OSX Extended ?
Daniel Beck

@DanielBeck, đó chỉ là MPlayerX thông thường từ App Store .
Arnold

@DanielBeck Ah, tôi nghĩ rằng nó được đại diện bởi kMDContentType. Những loại nội dung được liệt kê ở trên mặc dù?
slhck

Câu trả lời:


12

Bạn cần sử dụng một ứng dụng khai báo liên kết loại tệp chính xác, ví dụ như .mkvphần mở rộng tên tệp.

Ví dụ: các loại tệp do hệ thống xác định khi /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistkhai báo như sau trong phần UTI loại đã xuất :

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Điều này cho phép hệ thống liên kết UTI public.jpeg với "nhóm UTI" public.image, đây là (rất có thể) những gì Finder sử dụng cho nhóm Hình ảnh ; các public.filename-extensions loại tương đương bản đồ để phần mở rộng tập tin.

Điều này cho phép OS X xác định, .jpgtệp đó có UTI public.jpegvà đó là UTI phụ của public.image(và cứ thế, với public.itempublic.data). Finder sau đó lấy tất cả các tệp (cũng) public.imagevà đặt chúng vào cùng một nhóm Hình ảnh .

Điều tương tự áp dụng cho public.mpeg-4public.movieánh xạ tên tệp ở đó.


Thật không may, tác giả của MPlayerX đã không bận tâm đến việc lập bản đồ UTI.

Anh ta thậm chí không bận tâm đến việc tạo các loại tệp thích hợp cho tất cả các tiện ích mở rộng mà chương trình hỗ trợ. Đó là lý do tại chế độ xem danh sách của Finder , tất cả .mkvcác tệp không được gọi là Matroska Video và có nhãn MKV phù hợp trên biểu tượng của chúng, nhưng chỉ đơn giản là Video Media với nhãn Video chung . Tất cả các loại tệp được hỗ trợ được liệt kê theo phần mở rộng tệp cho "định dạng tệp" này, vì vậy MPlayerX có thể mở chúng:

nhập mô tả hình ảnh ở đây

Điều đó có nghĩa là, ví dụ, nếu bạn thích phát .m4acác tệp trong MPlayerX cho iTunes, bạn sẽ mất âm thanh Apple MPEG-4 mô tả trong cột Loại của Người tìm và thay vào đó là Audio Media .


Bạn có thể sửa nhóm bằng cách chỉnh sửa /Applications/MPlayerX.app/Contents/Info.plisttệp và khai báo đúng, ví dụ mplayerx.videoUTI tuân thủ public.movievà thêm ánh xạ mở rộng tên tệp thích hợp.

Bạn có thể sửa cột Kind bằng cách chỉnh sửa cùng một tệp và khai báo đúng loại tệp với mô tả tốt hơn và tạo tệp biểu tượng cho từng loại.

Chỉ cần sử dụng tệp Loại lõi Info.plist làm mẫu, thay thế ví dụ public.jpegbằng mã định danh tùy chỉnh của riêng bạn (ví dụ: mplayerx.videonếu bạn không muốn các cột và biểu tượng Loại phù hợp hoặc mplayerx.mkvnếu bạn muốn chúng). Bạn cần Xcode để chỉnh sửa các tệp này hoặc chuyển đổi chúng thành XML có thể chỉnh sửa trong bất kỳ trình soạn thảo văn bản nào bằng cách sử dụng plutil -convert xml1 <filename>.

Những thay đổi của bạn, khá dễ bị sai, sẽ bị ghi đè với mỗi bản cập nhật ứng dụng.

Ngoài ra, ít nhất là đối với Finder Arrange By Kind , bạn có thể chỉnh sửa các định nghĩa loại lõi và thêm định nghĩa của riêng bạn vào đó. Đảm bảo chỉnh sửa một bản sao của tệp và thay thế nó sau khi chỉnh sửa để tránh các vấn đề về quyền. Xin lưu ý rằng bạn sẽ chỉnh sửa và thay thế các tệp hệ thống cốt lõi (nghĩa là yêu cầu sự cố) bằng cách thực hiện việc này.

Một giải pháp saner sẽ là tạo ra một ứng dụng "giả" mới chỉ đơn giản khai báo UTI loại tệp là UTI loại xuất khẩu . Điều này sẽ được sử dụng bởi cơ sở dữ liệu loại tệp của OS X và bạn có thể cập nhật cả OS X và MPlayerX mà không làm mất các liên kết loại nội dung. Ngay cả khi bạn thay đổi, ví dụ .m4athành MPlayerX, chỉ có cột Loại được thay đổi, nó vẫn nằm trong danh mục Phim , do các khai báo trong một ứng dụng khác độc lập với ứng dụng được liên kết.

Vì vậy, hãy tạo một ứng dụng mới, ví dụ như sử dụng Automator mà không thực sự làm gì khi khởi chạy và thêm phần sau vào Contents/Info.plisttệp của nó :

nhập mô tả hình ảnh ở đây

Lưu vào /Applicationshoặc như vậy, và khởi động lại Finder.

nhập mô tả hình ảnh ở đây

mdlsĐầu ra một phần của .mkvtệp, loại nội dung được cung cấp bởi "ứng dụng trợ giúp", loại vật phẩm được cung cấp bởi trình phát được liên kết (MPlayerX):

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

Vì đây chỉ là sự tích hợp nền tảng cẩu thả của nhà phát triển, nên có lẽ bạn nên báo lỗi.


Rất thú vị. Đã học được một cái gì đó mới ngày hôm nay. Vậy đó là lý do tại sao kMDItemContentTypeTreekhông thêm bất cứ điều gì hữu ích vào siêu dữ liệu?
slhck

@slhck Chính xác. Hệ thống cần một cách để liên kết tệp với loại nội dung UTI. Điều đó bị thiếu, vì nó không có trong hệ thống theo mặc định (ví dụ như vậy .mp4) và ứng dụng thêm loại tệp vào hệ thống không khai báo UTI (vì vậy nó chỉ dyn.xyz) hoặc mối quan hệ (vì vậy nó chỉ public.data). Họ cần phải khai báo UTI liên kết nó với public.movie(thay vì ví dụ public.data).
Daniel Beck

1
Ồ Cảm ơn cho một nghiên cứu thông tin và kỹ lưỡng về vấn đề này. Điều này rất giáo dục và hữu ích. Tôi vẫn chưa thử giải pháp của bạn, nhưng tôi chắc chắn rằng nó sẽ hoạt động. Rất đẹp!
Arnold

Điều khó khăn nhất trong tất cả các vụ hack là chỉ cần đổi tên .mkvthành .avi thở hổn hển !!! Tôi làm cho nó bớt kinh khủng hơn một chút bằng cách để lại một bình luận nổi bật (trong Nhận thông tin) nói rằng đó thực sự là một mkv. .. tất nhiên, giả sử trình phát đa phương tiện của bạn ổn với phần mở rộng sai - VLC không hoạt động;)
Joel Mellon

... Tôi quên mất, bạn cũng có thể đổi tên nó thành .mkv.avicách khắc phục ít tệ nhất nhưng với tên tệp hơi kém.
Joel Mellon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.