]> code.delx.au - webdl/blobdiff - autograbber.py
brightcove: seems to work well, no need to mark it experimental anymore
[webdl] / autograbber.py
index 663b95a388517aacc5ccb820ee910f603447f2a4..61b0673bf22fa210f8e0f484ed9b59f6935488fb 100755 (executable)
@@ -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..."