X-Git-Url: https://code.delx.au/webdl/blobdiff_plain/1752ae8337d26c7b7733fcbbab5e38b4fae7b0ad..8c1040ccbc3e3dd49a0b38f7517181052bcf9f8e:/autograbber.py diff --git a/autograbber.py b/autograbber.py index 62e6f27..84b8469 100755 --- a/autograbber.py +++ b/autograbber.py @@ -1,5 +1,4 @@ -#!/usr/bin/env python -# vim:ts=4:sts=4:sw=4:noet +#!/usr/bin/python2 from common import load_root_node import fnmatch @@ -7,72 +6,72 @@ import os import sys DOWNLOAD_HISTORY_FILES = [ - ".downloaded_auto.txt", - "downloaded_auto.txt", + ".downloaded_auto.txt", + "downloaded_auto.txt", ] class DownloadList(object): - 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.decode("utf-8").strip()) - self.f.close() - except Exception, e: - print >>sys.stderr, "Could not open:", filename, e - self.f = open(filename, "a") - - def has_seen(self, node): - return node.title in self.seen_list - - def mark_seen(self, node): - self.seen_list.add(node.title) - self.f.write(node.title.encode("utf-8") + "\n") - self.f.flush() + 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.decode("utf-8").strip()) + self.f.close() + except Exception, e: + print >>sys.stderr, "Could not open:", filename, e + self.f = open(filename, "a") + + def has_seen(self, node): + return node.title in self.seen_list + + def mark_seen(self, node): + self.seen_list.add(node.title) + self.f.write(node.title.encode("utf-8") + "\n") + self.f.flush() def match(download_list, node, pattern, count=0): - if node.can_download: - if not download_list.has_seen(node): - if node.download(): - download_list.mark_seen(node) - else: - print >>sys.stderr, "Failed to download!", node.title - return + if node.can_download: + if not download_list.has_seen(node): + if node.download(): + download_list.mark_seen(node) + else: + print >>sys.stderr, "Failed to download!", node.title + return - if count >= len(pattern): - print "No match found for pattern:", "/".join(pattern) - return - p = pattern[count] - for child in node.get_children(): - if fnmatch.fnmatch(child.title, p): - match(download_list, child, pattern, count+1) + if count >= len(pattern): + print "No match found for pattern:", "/".join(pattern) + return + p = pattern[count] + for child in node.get_children(): + if fnmatch.fnmatch(child.title, p): + match(download_list, child, pattern, count+1) def main(destdir, patternfile): - os.chdir(destdir) - node = load_root_node() - download_list = DownloadList() + os.chdir(destdir) + node = load_root_node() + download_list = DownloadList() - for line in open(patternfile): - search = line.strip().split("/") - match(download_list, node, search) + for line in open(patternfile): + search = line.strip().split("/") + match(download_list, node, search) if __name__ == "__main__": - try: - 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..." + try: + 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..."