#!/usr/bin/python __author__ = "Nicolas Seriot" __date__ = "2008-04-10" # display UTIs in Spotlight importers on your system import os import plistlib import sets libs = ['/System/Library/Spotlight', '/Library/Spotlight'] apps = ['/Applications', '/Developer/Applications'] def extract_uti_from_bundle(b): plist_file = os.path.join(b, 'Contents', 'Info.plist') if os.path.exists(plist_file): plist = plistlib.Plist.fromFile(plist_file) if plist.has_key("CFBundleDocumentTypes"): array = plist["CFBundleDocumentTypes"] for d in array: if d.has_key("LSItemContentTypes"): for uti in d["LSItemContentTypes"]: s.add(uti) def extract_utis_from_importers_in_dirs(ds): for d in ds: if os.path.exists(d): for importer in filter(lambda x:x.endswith('.mdimporter'), os.listdir(d)): extract_uti_from_bundle(os.path.join(d, importer)) s = set() extract_utis_from_importers_in_dirs(libs) for app in apps: for app_file in filter(lambda x:x.endswith('.app'), os.listdir(app)): spotlight_dir = os.path.join(app, app_file, 'Contents', 'Library', 'Spotlight') extract_utis_from_importers_in_dirs([spotlight_dir]) utis = list(s) utis.sort() for uti in utis: print uti