diff --git a/ncdu_s3/directory_walker.py b/ncdu_s3/directory_walker.py index e9ae205..0d35697 100644 --- a/ncdu_s3/directory_walker.py +++ b/ncdu_s3/directory_walker.py @@ -12,7 +12,7 @@ def __init__(self, writer): self.writer = writer self.current_path = [] - def process_item(self, path, size): + def process_item(self, path, size, last_modified): key_filename = path.pop() if self.current_path != path: @@ -41,4 +41,4 @@ def process_item(self, path, size): # directory entry ends with a '/' so the key_filename will be ''. # in that case, omit it if key_filename != '': - self.writer.file_entry(key_filename, size) + self.writer.file_entry(key_filename, size, last_modified) diff --git a/ncdu_s3/main.py b/ncdu_s3/main.py index 0adaa52..9fbe908 100755 --- a/ncdu_s3/main.py +++ b/ncdu_s3/main.py @@ -21,8 +21,8 @@ def main(ctx, s3_url, output): with NcduDataWriter(output, s3_url) as ncdu: walker = DirectoryWalker(ncdu) - for path, size in s3_directory_generator: - walker.process_item(path, size) + for path, size, last_modified in s3_directory_generator: + walker.process_item(path, size, last_modified) if __name__ == '__main__': main() diff --git a/ncdu_s3/ncdu_data_writer.py b/ncdu_s3/ncdu_data_writer.py index f62f9c1..6489a06 100644 --- a/ncdu_s3/ncdu_data_writer.py +++ b/ncdu_s3/ncdu_data_writer.py @@ -51,15 +51,17 @@ def dir_leave(self): self.depth -= 1 self.output.write(']') - def file_entry(self, name, size): + def file_entry(self, name, size, last_modified): """ :type name: str :type size: int + :type last_modified: datetime """ self.output.write(",\n") - json.dump({'name': name, 'dsize': size}, self.output) + unixtime = int(time.mktime(last_modified.timetuple())) + json.dump({'name': name, 'dsize': size, 'mtime': unixtime}, self.output) def close(self): for i in xrange(self.depth): diff --git a/ncdu_s3/s3_directory_generator.py b/ncdu_s3/s3_directory_generator.py index 1a3a04c..1ba812d 100644 --- a/ncdu_s3/s3_directory_generator.py +++ b/ncdu_s3/s3_directory_generator.py @@ -1,11 +1,11 @@ from __future__ import absolute_import -import urlparse +from urlparse import urlparse import boto3 class S3DirectoryGenerator(object): def __init__(self, s3_url): - parsed_s3_url = urlparse.urlparse(s3_url) + parsed_s3_url = urlparse(s3_url) if parsed_s3_url.scheme != 's3': raise SyntaxError('Invalid S3 scheme') @@ -43,4 +43,4 @@ def generator(self): # we assume the S3 prefix is a directory that wasn't terminated with a '/' path.pop(0) - yield (path, o.size) + yield (path, o.size, o.last_modified)