summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
authorjvoisin2011-07-21 14:59:26 +0200
committerjvoisin2011-07-21 14:59:26 +0200
commitef2997745a071c8ae8128d41c0fa3a9d5c85ea8f (patch)
treeca4a8f9eef8ad400a9f87937b61470131b01226d /lib/archive.py
parentfbab11e43be5e88970e5ed00d8f216d7952a36a1 (diff)
Zip fileformat : Able to get metadatas
Diffstat (limited to '')
-rw-r--r--lib/archive.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/lib/archive.py b/lib/archive.py
index 8fa826e..caa0a32 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -1,18 +1,34 @@
1import tarfile 1import tarfile
2import zipfile
2import sys 3import sys
3import parser
4import mat
5import shutil 4import shutil
6import os 5import os
7import mimetypes 6
7import parser
8import mat
9
10class ZipStripper(parser.Generic_parser):
11 def is_clean(self):
12 return False
13
14 def get_meta(self):
15 self.zipin = zipfile.ZipFile(self.filename, 'r')
16 metadata = {}
17 for field in self.zipin.infolist():
18 zipmeta = {}
19 zipmeta['comment'] = field.comment
20 zipmeta['modified'] = str(field.date_time)
21 zipmeta['system'] = field.create_system
22 zipmeta['zip_version'] = field.create_version
23 metadata[field.filename] = zipmeta
24 self.zipin.close()
25 return metadata
8 26
9class TarStripper(parser.Generic_parser): 27class TarStripper(parser.Generic_parser):
10 def __init__(self, realname, filename, parser, editor, backup): 28 def __init__(self, realname, filename, parser, editor, backup):
11 super(TarStripper, self).__init__(realname, 29 super(TarStripper, self).__init__(realname,
12 filename, parser, editor, backup) 30 filename, parser, editor, backup)
13 self.compression = '' 31 self.compression = ''
14 self.shortname = os.path.basename(filename)
15 self.mime = mimetypes.guess_type(filename)[0]
16 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 32 self.tarin = tarfile.open(self.filename, 'r' + self.compression)
17 self.folder_list = [] 33 self.folder_list = []
18 34
@@ -75,9 +91,9 @@ class TarStripper(parser.Generic_parser):
75 if current_file.type is '0': #is current_file a regular file ? 91 if current_file.type is '0': #is current_file a regular file ?
76 #no backup file 92 #no backup file
77 class_file = mat.create_class_file(current_file.name, False) 93 class_file = mat.create_class_file(current_file.name, False)
78 if not class_file.is_clean(): 94 if not class_file.is_clean():#if the extracted file is not clean
79 mat.secure_remove(current_file.name) 95 mat.secure_remove(current_file.name) #remove it
80 self.remove_folder() 96 self.remove_folder() #remove all the remaining folders
81 return False 97 return False
82 if not self.is_file_clean(current_file): 98 if not self.is_file_clean(current_file):
83 return False 99 return False