diff options
Diffstat (limited to 'feed/sse_tar.py')
-rwxr-xr-x | feed/sse_tar.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/feed/sse_tar.py b/feed/sse_tar.py new file mode 100755 index 0000000..79671f6 --- /dev/null +++ b/feed/sse_tar.py @@ -0,0 +1,66 @@ +#!/usr/bin/python + +import tarfile, zipfile, sys, os +import sse_feed + +def archive_uncompress(archive, root, meta = {}): + + f = tarfile.open(archive, "r") + + while True: + + i = f.next() + + if i is None: + break + + if not i.isreg(): + continue + + if not sse_feed.supported_source(i.name): + continue + + dst = os.path.join(root, i.name) + f.extract(i, dst) + os.utime(dst, (i.mtime, i.mtime)) + + sse_feed.process_source(archive, root, i.name, meta) + + del f + +def calc_md(fn): + m = md5.new() + f = fopen(fn) + + while True: + data = m.read(1024) + + if len(data) <= 0: + break + + m.update(data) + + del f + + return m.hexdigest() + + +def process_archive(archive, meta = {}): + + md = calc_md(archive) + root = os.path.join(HOME, "sources", md) + + try: + os.mkdir(root) + except: + pass + + meta["md"] = md + + archive_uncompress(archive, root, meta) + +if __name__ == "__main__": + + archive_uncompress(sys.argv[1]) + + |