diff options
author | Heinrich Wendel <h_wendel@cojobo.net> | 2009-10-28 17:16:17 +0000 |
---|---|---|
committer | Heinrich Wendel <h_wendel@cojobo.net> | 2009-10-28 17:16:17 +0000 |
commit | 8c1e1895456e5df9053f54d5ffba3d6fc3bd6fb0 (patch) | |
tree | 847e4cb1b0cd9dd31eee0462c6f430f34edb2c08 | |
parent | 4bf67ae4e566e764ff8f6ca027d193b6249a513d (diff) |
add get_mime_by_contents to Mime.py
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | xdg/Mime.py | 37 |
2 files changed, 28 insertions, 13 deletions
@@ -1,3 +1,7 @@ +Version 0.18 + + * Mime.py: Add get_type_by_contents() + Version 0.17 2008-10-30 Heinrich Wendel <h_wendel@cojobo.net> diff --git a/xdg/Mime.py b/xdg/Mime.py index 73ff914..66eefaf 100644 --- a/xdg/Mime.py +++ b/xdg/Mime.py @@ -274,24 +274,28 @@ class MagicDB: if not c: break + def match_data(self, data, max_pri=100, min_pri=0): + pris=self.types.keys() + pris.sort(lambda a, b: -cmp(a, b)) + for pri in pris: + #print pri, max_pri, min_pri + if pri>max_pri: + continue + if pri<min_pri: + break + for type in self.types[pri]: + m=type.match(buf) + if m: + return m + + def match(self, path, max_pri=100, min_pri=0): try: buf=file(path, 'r').read(self.maxlen) - pris=self.types.keys() - pris.sort(lambda a, b: -cmp(a, b)) - for pri in pris: - #print pri, max_pri, min_pri - if pri>max_pri: - continue - if pri<min_pri: - break - for type in self.types[pri]: - m=type.match(buf) - if m: - return m + return self.match_data(buf, max_pri, min_pri) except: pass - + return None def __repr__(self): @@ -389,6 +393,13 @@ def get_type_by_contents(path, max_pri=100, min_pri=0): return magic.match(path, max_pri, min_pri) +def get_type_by_data(data, max_pri=100, min_pri=0): + """Returns type of the data""" + if not _cache_uptodate: + _cache_database() + + return magic.match_data(data, max_pri, min_pri) + def get_type(path, follow=1, name_pri=100): """Returns type of file indicated by path. path - pathname to check (need not exist) |