MIME Type is disjoint

そういえば Windows の MIME Type はどうなっているのだろう?

MIMEタイプの取得・判定 – Programming/Tips – 総武ソフトウェア推進所

ふむふむ、そうやるのか。
Windows の場合は拡張子が全てなので Python の mimetypes モジュールでよさげだが。
せっかくなので試してみよう。

# -*- coding: UTF-8 -*-

import clr

clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

from System import *
from System.IO import *
from System.Windows import *
from System.Windows.Controls import *
from Microsoft.Win32 import *

class MimeTypeWindow(Window):
    """
        Get MIME Type for Windows
    """
    def __init__(self):
        self.Width = 320
        self.Height = 240
        self.Title = "MimeTypeWindow"
        self.AllowDrop = True
        self.Drop += self.on_drop
        self.textblock = TextBlock()
        self.textblock.Text = "Drop"
        self.Content = self.textblock

    def on_drop(self, sender, e):
        files = e.Data.GetData(DataFormats.FileDrop)
        ext = Path.GetExtension(str(files[0]))
        if ext:
            key = Registry.ClassesRoot.OpenSubKey(ext)
            if key:
                s = key.GetValue("Content Type")
                if s:
                    self.textblock.Text = s
                else:
                    self.textblock.Text = "No MimeType"
            else:
                self.textblock.Text = "No Registry Key"
        else:
            self.textblock.Text = "No Extension Value"

if __name__ == "__main__":
    a = Application()
    a.Run(MimeTypeWindow())

今頃知ったけど .NET Framework の null は None でイイんだね。
これと Python の mimetypes モジュールとでどうなるか試す。
ぱぇぽぃ2 ? Blog Archive ? Get MIME Type and Description
で GNOME と違うのかもついでに、zip アーカイブを試す。

mime_all

あら…
ついでに Opera は Linux 版なのに

opera_mime

なんというか、やっぱりアプリケーションによってバラバラだよ。