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$ 

แปลกมาก 'ประเภทรายการ' จะแสดงเป็น 'สื่อวิดีโอ' และสำหรับไฟล์คำบรรยายคือ 'Subtitle' ถึงกระนั้นมันก็ไม่ได้ช่วย Finder จัดเรียงไฟล์เหล่านั้นอย่างถูกต้องด้วยเหตุผลบางอย่าง ...


โปรแกรมใดที่เกี่ยวข้องกับไฟล์เหล่านี้ มีอะไรส่งออกของmdlsในเทอร์มิหนึ่งในไฟล์เหล่านี้เช่นmdls "Game of Thrones episode 2.mkv"?
Daniel Beck

คุณลักษณะการจัดกลุ่มใหม่ใน Lion หรือไม่ ไอคอนยังพูดว่า "คำบรรยาย" และ "วิดีโอ" ตามลำดับดังนั้นจึงไม่น่าจะมีปัญหา
slhck

@slhck มันใหม่ใน Lion ไอคอนเป็นภาพ 100% และจัดทำโดยแอปพลิเคชันที่เกี่ยวข้องดังนั้นจึงไม่มีความหมายอะไรเลย อาร์โนลด์ขอบคุณสำหรับmdlsผลลัพธ์ คุณใช้MPlayer OSXหรือMPlayer OSX Extendedหรือไม่?
Daniel Beck

@DanielBeck มันเป็นเพียงปกติ MPlayerX จาก App Store
อาร์โนลด์

@DanielBeck kMDContentTypeอาผมคิดว่ามันเป็นตัวแทนจาก ประเภทเนื้อหาประเภทใดที่ระบุไว้ข้างต้น
slhck

คำตอบ:


12

คุณต้องใช้แอปพลิเคชั่นที่ประกาศความสัมพันธ์ของประเภทไฟล์ที่ถูกต้องเช่น.mkvนามสกุลไฟล์

ตัวอย่างเช่นประเภทไฟล์ที่ระบบกำหนดในการ/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plistประกาศข้อมูลต่อไปนี้ในส่วนUTI ประเภทที่ส่งออก :

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้ช่วยให้ระบบสามารถเชื่อมโยงUTI public.jpegกับ "กลุ่ม UTI" public.imageซึ่งเป็นไปได้มากที่เครื่องมือค้นหาใช้สำหรับกลุ่มรูปภาพ public.filename-extensions เทียบเท่าแมปกับนามสกุลของไฟล์

สิ่งนี้ทำให้ OS X สามารถตรวจสอบได้ว่า.jpgไฟล์นั้นมี UTI public.jpegและนั่นคือ sub-UTI ของpublic.image(และอื่น ๆ ด้วยpublic.itemและpublic.data) ตัวค้นหาจะใช้ไฟล์ทั้งหมดที่เป็น (เช่นกัน) public.imageและวางไว้ในกลุ่มรูปภาพเดียวกัน

เช่นเดียวกับpublic.mpeg-4และpublic.movieและการทำแผนที่ชื่อไฟล์ที่มี


น่าเสียดายที่ผู้เขียน MPlayerX ไม่ได้รบกวนการทำแผนที่ UTIs

เขาไม่ได้รำคาญที่จะสร้างไฟล์ประเภทที่เหมาะสมสำหรับส่วนขยายทั้งหมดที่โปรแกรมรองรับ นั่นเป็นเหตุผลที่ในมุมมองรายการของ Finder .mkvไฟล์ทั้งหมดไม่ถูกเรียกเช่นMatroska Videoและมีป้ายกำกับMKV ที่ตรงกันบนไอคอนของพวกเขา แต่เพียงวิดีโอสื่อที่มีป้ายกำกับวิดีโอทั่วไป ประเภทไฟล์ที่รองรับทั้งหมดมีการระบุไว้โดยนามสกุลไฟล์สำหรับ "รูปแบบไฟล์" นี้ดังนั้น MPlayerX สามารถเปิดได้:

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเช่นถ้าคุณชอบเล่น.m4aไฟล์ใน MPlayerX กับ iTunes คุณจะสูญเสียเสียงApple MPEG-4ในคอลัมน์Finder's Kindและได้รับMedia Audioแทน


คุณสามารถแก้ไขการจัดกลุ่มโดยแก้ไข/Applications/MPlayerX.app/Contents/Info.plistไฟล์และประกาศอย่างถูกต้องเช่นmplayerx.videoUTI ที่สอดคล้องpublic.movieและเพิ่มการแมปนามสกุลไฟล์ที่เหมาะสม

คุณสามารถแก้ไขคอลัมน์ชนิดได้โดยการแก้ไขไฟล์เดียวกันและประกาศประเภทไฟล์อย่างเหมาะสมพร้อมคำอธิบายที่ดีกว่าและสร้างไฟล์ไอคอนสำหรับแต่ละไฟล์

เพียงใช้ไฟล์Core Types Info.plistเป็นเทมเพลตแทนที่เช่นpublic.jpegด้วยตัวระบุที่กำหนดเองของคุณเอง (เช่นmplayerx.videoหากคุณไม่ต้องการคอลัมน์และไอคอนชนิดที่เหมาะสมหรือmplayerx.mkvหากคุณต้องการ) คุณต้อง Xcode แก้ไขไฟล์เหล่านี้หรือแปลงให้สามารถแก้ไข XML ในการแก้ไขข้อความใด ๆ plutil -convert xml1 <filename>โดยใช้

การเปลี่ยนแปลงของคุณซึ่งค่อนข้างง่ายที่จะผิดจะถูกแทนที่ด้วยการอัปเดตแอปพลิเคชันทุกครั้ง

หรืออย่างน้อยที่สุดสำหรับการจัดเรียงการค้นหาตามชนิดคุณสามารถแก้ไขคำจำกัดความประเภทหลักและเพิ่มของคุณเองลงไปได้ ตรวจสอบให้แน่ใจว่าได้แก้ไขสำเนาของไฟล์และแทนที่หลังจากแก้ไขเพื่อหลีกเลี่ยงปัญหาการอนุญาต โปรดระวังว่าคุณจะแก้ไขและแทนที่ไฟล์ระบบหลัก (เช่นถามปัญหา) โดยทำสิ่งนี้

วิธีการแก้ปัญหา saner จะสร้างใหม่ "ดัมมี่" โปรแกรมที่เพียงแค่บอกประเภทของไฟล์อุทิศเป็นส่งออกประเภทอุทิศ จะใช้ฐานข้อมูลชนิดไฟล์ของ OS X และคุณสามารถอัปเดตทั้ง OS X และ MPlayerX โดยไม่สูญเสียการเชื่อมโยงประเภทเนื้อหา แม้ว่าคุณจะเปลี่ยนเช่น.m4aเป็น MPlayerX จะมีการเปลี่ยนแปลงเฉพาะคอลัมน์ชนิดแต่ยังคงอยู่ในหมวดหมู่ภาพยนตร์เนื่องจากมีการประกาศในแอปพลิเคชันอื่นซึ่งเป็นอิสระจากแอปพลิเคชันที่เกี่ยวข้อง

ดังนั้นสร้างแอปพลิเคชั่นใหม่เช่นใช้ Automator ซึ่งไม่ได้ทำอะไรเลยเมื่อเปิดตัวและเพิ่มสิ่งต่อไปนี้ในContents/Info.plistไฟล์:

ป้อนคำอธิบายรูปภาพที่นี่

บันทึกใน/Applicationsหรือดังนั้นแล้วรีสตาร์ท Finder

ป้อนคำอธิบายรูปภาพที่นี่

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 ที่หายไปเนื่องจากไม่ได้อยู่ในระบบตามค่าเริ่มต้น (เช่นเช่น.mp4เป็น) และแอปพลิเคชันที่เพิ่มประเภทไฟล์ลงในระบบไม่ได้ประกาศ UTI (ดังนั้นจึงเป็นเพียงdyn.xyz) หรือความสัมพันธ์ (เช่นกันpublic.data) พวกเขาต้องการประกาศ UTI และเชื่อมโยงกับpublic.movie(แทนเช่นpublic.data)
Daniel Beck

1
ว้าว! ขอบคุณสำหรับการวิจัยที่ให้ข้อมูลและละเอียดเกี่ยวกับปัญหา นี่คือการศึกษาและเป็นประโยชน์มาก ฉันยังไม่ได้ลองวิธีแก้ปัญหาของคุณ แต่ฉันแน่ใจว่ามันจะใช้งานได้ ดีมาก!
อาร์โนลด์

hackiest ของแฮ็กทั้งหมดก็คือการเปลี่ยนชื่อ.mkvที่จะ.avi อ้าปากค้าง !!! ฉันทำให้มันน่ากลัวน้อยลงเล็กน้อยโดยการใส่ความเห็น Spotlight (ในการรับข้อมูล) โดยบอกว่าเป็น mkv จริงๆ .. แน่นอนว่าผู้เล่นสื่อของคุณนั้นโอเคกับส่วนขยายที่ผิด - VLC ไม่ทำงาน;)
Joel Mellon

... ฉันลืมคุณยังสามารถเปลี่ยนชื่อ.mkv.aviเป็นวิธีแก้ปัญหาความชั่วร้ายน้อยที่สุด แต่ด้วยชื่อไฟล์ที่ค่อนข้างน้อย
Joel Mellon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.