summaryrefslogtreecommitdiff
path: root/lib/mat.py
diff options
context:
space:
mode:
authorjvoisin2011-06-10 01:29:29 +0200
committerjvoisin2011-06-10 01:29:29 +0200
commitc308cf7daaa4fa46377e2df0f2e9a397981e19b2 (patch)
treef016ce17cd6747acc068a7d2fc5093d1bd96fa9e /lib/mat.py
parentf7082a21d6511c5069fbb9ff186ce22f3e22fed7 (diff)
The current version is (mostly) working
Diffstat (limited to 'lib/mat.py')
-rw-r--r--lib/mat.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/lib/mat.py b/lib/mat.py
deleted file mode 100644
index d22c9ab..0000000
--- a/lib/mat.py
+++ /dev/null
@@ -1,104 +0,0 @@
1import hachoir_core.error
2import hachoir_core.cmd_line
3import hachoir_parser
4import hachoir_metadata
5
6from strippers import *
7
8from hachoir_editor import (createEditor,
9 NewFieldSet, EditableInteger, EditableBytes)
10
11import hachoir_editor
12
13import sys
14
15__version__ = "0.1"
16__author__ = "jvoisin"
17
18
19class file():
20 def __init__(self, filename):
21 self.metadata = {}
22 self.clean = False
23 self.editor = createEditor(self.parser)
24 self.filename = filename
25 self.filename, self.realname = hachoir_core.cmd_line.unicodeFilename(
26 self.filename), self.filename
27 self.parser = hachoir_parser.createParser(self.filename, self.realname)
28
29 if not self.parser:
30 print("Unable to parse file : sorry")
31 sys.exit(1)
32
33 try:
34 self.meta = hachoir_metadata.extractMetadata(self.parser)
35 except hachoir_core.error.HachoirError, err:
36 print "Metadata extraction error: %s" % unicode(err)
37 self.data = None
38
39 if not self.meta:
40 print "Unable to extract metadata"
41 sys.exit(1)
42
43 def is_clean(self):
44 '''
45 Return true if the file is clean from any compromizing meta
46 '''
47 return self.clean
48
49 def remove_all(self):
50 '''
51 Remove all the files that are compromizing
52 '''
53 stripEditor(self.editor, self.realname, level, not(values.quiet))
54 for key, field in metadata:
55 if should_remove(key):
56 remove(self, key)
57
58 def remove(self, field):
59 '''
60 Remove the given file
61 '''
62 del editor[field]
63 return True
64
65
66 def get_meta(self):
67 '''return a dict with all the meta of the file'''
68 #FIXME : sooooooooooo dirty !
69 for title in self.meta:
70 if title.values != []: #if the field is not empty
71 value = ""
72 for item in title.values:
73 value = item.text
74 self.metadata[title.key] = value
75 return self.metadata
76
77 def should_remove(self, field):
78 '''
79 return True if the field is compromizing
80 abstract method
81 '''
82 raise NotImplementedError()
83
84def stripEditor(editor, filename, realname, level, verbose):
85 '''
86 Assign a stripper to an editor
87 '''
88 cls = editor.input.__class__
89 try:
90 stripper_cls = strippers[cls]
91 except KeyError:
92 print "Don't have stripper for file type: %s" % editor.description
93 return False
94 stripper = stripper_cls(editor, level, verbose)
95
96 if stripper():
97 output = FileOutputStream(filename, realname)
98 editor.writeInto(output)
99
100 else:
101 print _("Stripper doesn't touch the file")
102 return True
103
104file(sys.argv[1]).get_meta()