#!/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])