diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-11-15 01:55:44 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-11-15 01:55:44 (GMT) |
commit | 8309677b5b1d37224e17af584f0339b238d0a79d (patch) | |
tree | 87a3984170ddaf35bd8c1203adab81cdb27def3d | |
parent | 4c12b34363163822bc05cefc4a39bd4f9534c058 (diff) |
parse backup datastores
-rwxr-xr-x | dsparse.py | 100 |
1 files changed, 58 insertions, 42 deletions
@@ -29,48 +29,64 @@ class ParseMain(): for path in glob.glob(os.path.join(abspath, '*')): if isdsdir(path): self._dsdict[os.path.basename(path)] = [] - dsobjdirs = glob.glob( - os.path.join(path, DIROFINTEREST, '??')) - for dsobjdir in dsobjdirs: - dsobjs = glob.glob(os.path.join(dsobjdir, '*')) - for dsobj in dsobjs: - self._dsdict[os.path.basename(path)].append({}) - activity = isactivity(dsobj) - if not activity: - self._dsdict[os.path.basename(path)][-1][ - 'activity'] = 'media object' - else: - self._dsdict[os.path.basename(path)][-1][ - 'activity'] = activity - if activity == 'TurtleArtActivity': - score = hasturtleblocks(dsobj) - if score: - self._dsdict[os.path.basename(path)][-1][ - 'score'] = score - if activity == 'AbiWordActivity': - score = hasmenuitems(dsobj) - if score: - self._dsdict[os.path.basename(path)][-1][ - 'score'] = score - mime_type = hascomponent(dsobj, 'mime_type') - if mime_type: - self._dsdict[os.path.basename(path)][-1][ - 'mime_type'] = mime_type - mtime = hascomponent(dsobj, 'mtime') - if mtime: - self._dsdict[os.path.basename(path)][-1][ - 'mtime'] = mtime - creation_time = hascomponent(dsobj, 'creation_time') - if creation_time: - self._dsdict[os.path.basename(path)][-1][ - 'creation_time'] = \ - time.strftime('%Y-%m-%dT%H:%M:%S', - time.gmtime(float(creation_time))) - activity_count = hascomponent(dsobj, 'activity count') - if activity_count: - self._dsdict[os.path.basename(path)][-1][ - 'activity count'] = activity_count - + self.dsobj_list = [] + # First, parse datastore-current; then look for + # additional objects in the backup dirs + # FIXME: go from most recent to least recent + alldirs = glob.glob(os.path.join(path, '*')) + self._parse_dir(path, DIROFINTEREST) + for directory in alldirs: + if directory != DIROFINTEREST: + self._parse_dir(path, directory) + self._output() + + def _parse_dir(self, path, directory): + dsobjdirs = glob.glob( + os.path.join(path, directory, '??')) + for dsobjdir in dsobjdirs: + dsobjs = glob.glob(os.path.join(dsobjdir, '*')) + for dsobj in dsobjs: + basename = os.path.basename(dsobj) + if not basename in self.dsobj_list: + self.dsobj_list.append(basename) + else: + continue # don't overwrite current object + self._dsdict[os.path.basename(path)].append({}) + activity = isactivity(dsobj) + if not activity: + self._dsdict[os.path.basename(path)][-1]['activity'] = \ + 'media object' + else: + self._dsdict[os.path.basename(path)][-1]['activity'] = \ + activity + if activity == 'TurtleArtActivity': + score = hasturtleblocks(dsobj) + if score: + self._dsdict[os.path.basename(path)][-1]['score'] = \ + score + if activity == 'AbiWordActivity': + score = hasmenuitems(dsobj) + if score: + self._dsdict[os.path.basename(path)][-1]['score'] = \ + score + mime_type = hascomponent(dsobj, 'mime_type') + if mime_type: + self._dsdict[os.path.basename(path)][-1]['mime_type'] = \ + mime_type + mtime = hascomponent(dsobj, 'mtime') + if mtime: + self._dsdict[os.path.basename(path)][-1]['mtime'] = mtime + creation_time = hascomponent(dsobj, 'creation_time') + if creation_time: + self._dsdict[os.path.basename(path)][-1]['creation_time'] \ + = time.strftime('%Y-%m-%dT%H:%M:%S', + time.gmtime(float(creation_time))) + activity_count = hascomponent(dsobj, 'activity count') + if activity_count: + self._dsdict[os.path.basename(path)][-1]['activity count'] \ + = activity_count + + def _output(self): for k, v in self._dsdict.iteritems(): for i in v: line = '%s, ' % (k) |