X-Git-Url: https://code.delx.au/webdl/blobdiff_plain/8caddd92c23d96414c445bc35a62d3f1ed0bc385..b6ad3911d2593698d5ed405520aa2cc0e6ce2ea0:/autograbber.py diff --git a/autograbber.py b/autograbber.py index 663b95a..61b0673 100755 --- a/autograbber.py +++ b/autograbber.py @@ -1,17 +1,28 @@ -#!/usr/bin/env python +#!/usr/bin/python2 # vim:ts=4:sts=4:sw=4:noet from common import load_root_node import fnmatch +import os import sys +DOWNLOAD_HISTORY_FILES = [ + ".downloaded_auto.txt", + "downloaded_auto.txt", +] + class DownloadList(object): - def __init__(self, filename): + def __init__(self): self.seen_list = set() + for filename in DOWNLOAD_HISTORY_FILES: + if os.path.isfile(filename): + break + else: + filename = DOWNLOAD_HISTORY_FILES[0] try: self.f = open(filename, "r") for line in self.f: - self.seen_list.add(line.strip()) + self.seen_list.add(line.decode("utf-8").strip()) self.f.close() except Exception, e: print >>sys.stderr, "Could not open:", filename, e @@ -22,7 +33,7 @@ class DownloadList(object): def mark_seen(self, node): self.seen_list.add(node.title) - self.f.write(node.title + "\n") + self.f.write(node.title.encode("utf-8") + "\n") self.f.flush() @@ -39,22 +50,29 @@ def match(download_list, node, pattern, count=0): print "No match found for pattern:", "/".join(pattern) return p = pattern[count] - for child in node.children: + for child in node.get_children(): if fnmatch.fnmatch(child.title, p): match(download_list, child, pattern, count+1) -def main(): +def main(destdir, patternfile): + os.chdir(destdir) node = load_root_node() - download_list = DownloadList("downloaded_auto.txt") + download_list = DownloadList() - for search in sys.argv[1:]: - search = search.split("/") + for line in open(patternfile): + search = line.strip().split("/") match(download_list, node, search) if __name__ == "__main__": try: - main() + destdir = os.path.abspath(sys.argv[1]) + patternfile = os.path.abspath(sys.argv[2]) + except IndexError: + print >>sys.stderr, "Usage: %s destdir patternfile" % sys.argv[0] + sys.exit(1) + try: + main(destdir, patternfile) except (KeyboardInterrupt, EOFError): print "\nExiting..."