diff options
| author | jvoisin | 2011-07-26 04:55:59 +0200 |
|---|---|---|
| committer | jvoisin | 2011-07-26 04:55:59 +0200 |
| commit | f6e3d57173604dab7228c830e84415ead02e169b (patch) | |
| tree | c38b5e2f09b6aebff79a6786ce8d26d05c7c5845 /lib | |
| parent | 342cbf4bd69e638f62319ea0e6660af5dc717131 (diff) | |
Tests are green for opendocument format
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/archive.py | 9 | ||||
| -rw-r--r-- | lib/mat.py | 15 | ||||
| -rw-r--r-- | lib/office.py | 3 | ||||
| -rw-r--r-- | lib/parser.py | 4 |
4 files changed, 16 insertions, 15 deletions
diff --git a/lib/archive.py b/lib/archive.py index 8a8f7f4..f22af39 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -69,10 +69,13 @@ class ZipStripper(GenericArchiveStripper): | |||
| 69 | return False | 69 | return False |
| 70 | except: | 70 | except: |
| 71 | #best solution I have found | 71 | #best solution I have found |
| 72 | logging.error('%s is not supported' % item.filename) | 72 | logging.info('%s\'s fileformat is not supported, or is a \ |
| 73 | _, ext = os.path.splitext(name) | 73 | harmless format' % item.filename) |
| 74 | base, ext = os.path.splitext(name) | ||
| 75 | bname = os.path.basename(item.filename) | ||
| 74 | if ext not in parser.NOMETA: | 76 | if ext not in parser.NOMETA: |
| 75 | return False | 77 | if bname != 'mimetype': |
| 78 | return False | ||
| 76 | mat.secure_remove(name) | 79 | mat.secure_remove(name) |
| 77 | zipin.close() | 80 | zipin.close() |
| 78 | return True | 81 | return True |
| @@ -18,8 +18,8 @@ import audio | |||
| 18 | import office | 18 | import office |
| 19 | import archive | 19 | import archive |
| 20 | 20 | ||
| 21 | __version__ = "0.1" | 21 | __version__ = '0.1' |
| 22 | __author__ = "jvoisin" | 22 | __author__ = 'jvoisin' |
| 23 | 23 | ||
| 24 | LOGGING_LEVEL = logging.DEBUG | 24 | LOGGING_LEVEL = logging.DEBUG |
| 25 | 25 | ||
| @@ -53,7 +53,7 @@ def is_secure(filename): | |||
| 53 | ''' | 53 | ''' |
| 54 | 54 | ||
| 55 | if not(os.path.isfile(filename)): #check if the file exist | 55 | if not(os.path.isfile(filename)): #check if the file exist |
| 56 | logging.error("Error: %s is not a valid file" % filename) | 56 | logging.error('Error: %s is not a valid file' % filename) |
| 57 | return False | 57 | return False |
| 58 | 58 | ||
| 59 | def create_class_file(name, backup, add2archive): | 59 | def create_class_file(name, backup, add2archive): |
| @@ -64,7 +64,7 @@ def create_class_file(name, backup, add2archive): | |||
| 64 | if is_secure(name): | 64 | if is_secure(name): |
| 65 | return | 65 | return |
| 66 | 66 | ||
| 67 | filename = "" | 67 | filename = '' |
| 68 | realname = name | 68 | realname = name |
| 69 | try: | 69 | try: |
| 70 | filename = hachoir_core.cmd_line.unicodeFilename(name) | 70 | filename = hachoir_core.cmd_line.unicodeFilename(name) |
| @@ -72,7 +72,7 @@ def create_class_file(name, backup, add2archive): | |||
| 72 | filename = name | 72 | filename = name |
| 73 | parser = hachoir_parser.createParser(filename) | 73 | parser = hachoir_parser.createParser(filename) |
| 74 | if not parser: | 74 | if not parser: |
| 75 | logging.error("Unable to parse %s" % filename) | 75 | logging.info('Unable to parse %s' % filename) |
| 76 | return | 76 | return |
| 77 | 77 | ||
| 78 | editor = hachoir_editor.createEditor(parser) | 78 | editor = hachoir_editor.createEditor(parser) |
| @@ -85,7 +85,7 @@ def create_class_file(name, backup, add2archive): | |||
| 85 | stripper_class = strippers[editor.input.__class__] | 85 | stripper_class = strippers[editor.input.__class__] |
| 86 | except KeyError: | 86 | except KeyError: |
| 87 | #Place for another lib than hachoir | 87 | #Place for another lib than hachoir |
| 88 | logging.error("Don't have stripper for format %s" % editor.description) | 88 | logging.info('Don\'t have stripper for format %s' % editor.description) |
| 89 | return | 89 | return |
| 90 | 90 | ||
| 91 | if editor.input.__class__ == hachoir_parser.misc.PDFDocument:#pdf | 91 | if editor.input.__class__ == hachoir_parser.misc.PDFDocument:#pdf |
| @@ -95,8 +95,7 @@ def create_class_file(name, backup, add2archive): | |||
| 95 | #zip based format | 95 | #zip based format |
| 96 | mime = mimetypes.guess_type(filename)[0] | 96 | mime = mimetypes.guess_type(filename)[0] |
| 97 | try:#Ugly workaround, cleaning open document delete mime (wtf?) | 97 | try:#Ugly workaround, cleaning open document delete mime (wtf?) |
| 98 | if mime.startswith(#Open document format | 98 | if mime.startswith('application/vnd.oasis.opendocument'): |
| 99 | 'application/vnd.oasis.opendocument'): | ||
| 100 | return office.OpenDocumentStripper(realname, filename, parser, | 99 | return office.OpenDocumentStripper(realname, filename, parser, |
| 101 | editor, backup, add2archive) | 100 | editor, backup, add2archive) |
| 102 | else:#normal zip | 101 | else:#normal zip |
diff --git a/lib/office.py b/lib/office.py index b7fa555..27677d2 100644 --- a/lib/office.py +++ b/lib/office.py | |||
| @@ -34,7 +34,6 @@ class OpenDocumentStripper(archive.GenericArchiveStripper): | |||
| 34 | metadata[key] = node.text | 34 | metadata[key] = node.text |
| 35 | except KeyError:#no meta.xml file found | 35 | except KeyError:#no meta.xml file found |
| 36 | logging.debug('%s has no opendocument metadata' % self.filename) | 36 | logging.debug('%s has no opendocument metadata' % self.filename) |
| 37 | metadata[self.filename] = '' | ||
| 38 | return metadata | 37 | return metadata |
| 39 | 38 | ||
| 40 | 39 | ||
| @@ -76,7 +75,7 @@ class OpenDocumentStripper(archive.GenericArchiveStripper): | |||
| 76 | except: | 75 | except: |
| 77 | logging.info('%s\' fileformat is not supported' % item) | 76 | logging.info('%s\' fileformat is not supported' % item) |
| 78 | if self.add2archive: | 77 | if self.add2archive: |
| 79 | zipout.write(item, name) | 78 | zipout.write(name, item) |
| 80 | mat.secure_remove(name) | 79 | mat.secure_remove(name) |
| 81 | zipout.comment = '' | 80 | zipout.comment = '' |
| 82 | logging.info('%s treated' % self.filename) | 81 | logging.info('%s treated' % self.filename) |
diff --git a/lib/parser.py b/lib/parser.py index 04d7625..aa7e7f1 100644 --- a/lib/parser.py +++ b/lib/parser.py | |||
| @@ -13,7 +13,7 @@ import mimetypes | |||
| 13 | 13 | ||
| 14 | import mat | 14 | import mat |
| 15 | 15 | ||
| 16 | NOMETA = ('.txt', '.bmp', '.py', '.xml') | 16 | NOMETA = ('.txt', '.bmp', '.py', '.xml', '.rdf') |
| 17 | 17 | ||
| 18 | class Generic_parser(object): | 18 | class Generic_parser(object): |
| 19 | def __init__(self, realname, filename, parser, editor, backup, add2archive): | 19 | def __init__(self, realname, filename, parser, editor, backup, add2archive): |
| @@ -21,7 +21,7 @@ class Generic_parser(object): | |||
| 21 | self.output = basename + '.cleaned' + ext | 21 | self.output = basename + '.cleaned' + ext |
| 22 | self.filename = filename #path + filename | 22 | self.filename = filename #path + filename |
| 23 | self.realname = realname #path + filename | 23 | self.realname = realname #path + filename |
| 24 | self.shortname = os.path.basename(filename) #only filename | 24 | self.basename = os.path.basename(filename) #only filename |
| 25 | self.mime = mimetypes.guess_type(filename)[0] #mimetype | 25 | self.mime = mimetypes.guess_type(filename)[0] #mimetype |
| 26 | self.parser = parser | 26 | self.parser = parser |
| 27 | self.editor = editor | 27 | self.editor = editor |
