summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Wendel <h_wendel@cojobo.net>2009-10-28 17:16:17 +0000
committerHeinrich Wendel <h_wendel@cojobo.net>2009-10-28 17:16:17 +0000
commit8c1e1895456e5df9053f54d5ffba3d6fc3bd6fb0 (patch)
tree847e4cb1b0cd9dd31eee0462c6f430f34edb2c08
parent4bf67ae4e566e764ff8f6ca027d193b6249a513d (diff)
add get_mime_by_contents to Mime.py
-rw-r--r--ChangeLog4
-rw-r--r--xdg/Mime.py37
2 files changed, 28 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index cba239d..f5375e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)