Odczytywanie mime i metainformacji plików
12 December 2008
Comments
Środowiska graficzne takie jak GNOME, czy KDE posiadają własne biblioteki odpowiedzialne za określanie typu MIME pliku, czy też sugerowanie aplikacji za pomocą których można te pliki otworzyć, uruchomić. W przypadku GNOME można użyć gnomevfs:
import gnomevfs
def get_meta_info(filename):
# filename - nazwa pliku ze ścieżką
try:
file_mimetype = gnomevfs.get_mime_type(filename)
except:
return False
ret = {}
# Typ Mime
ret['mime'] = file_mimetype
# domyślna aplikacja
ret['default_app'] = gnomevfs.mime_get_default_application(file_mimetype)
# inne aplikacje
ret['other_apps'] = gnomevfs.mime_get_all_applications(file_mimetype)
# opis typu mime
ret ['description'] = gnomevfs.mime_get_description(file_mimetype)
return ret
Teoretycznie obecnie powinna być już stosowana biblioteka GIO (w Pythonie API dostępne w pygobject):
import gio
print gio.content_type_guess('plik.ods')
a = gio.content_type_guess('plik.ods')
print gio.content_type_get_description(a)
Bardziej przenośnym rozwiązaniem pobierania metainformacji o plikach jest zastosowanie bibliotek z projektu Hachoir. Dla wybranych binarnych typów plików potrafi pobrać metainformacje (grafika, multimedia, archiwa itp.):
from hachoir_core.error import HachoirError
from hachoir_core.cmd_line import unicodeFilename
from hachoir_parser import createParser
from hachoir_core.tools import makePrintable
from hachoir_metadata import extractMetadata
from hachoir_core.i18n import getTerminalCharset
def get_meta_info(filename):
# filename - nazwa pliku ze ścieżką
try:
parser = createParser(filename, filename)
except:
return False
if parser:
try:
metadata = extractMetadata(parser)
except HachoirError, err:
return False
else:
if metadata:
return metadata.exportPlaintext()
return False
RkBlog
Comment article