class DownloadList(object):
def __init__(self, filename):
- self.f = open(filename, "a+")
self.seen_list = set()
- for line in self.f:
- self.seen_list.add(line.strip())
+ 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 + "\n")
+ self.f.write(node.title.encode("utf-8") + "\n")
+ self.f.flush()
-def match(download_list, node, pattern):
+def match(download_list, node, pattern, count=0):
if node.can_download:
if not download_list.has_seen(node):
if node.download():
print >>sys.stderr, "Failed to download!", node.title
return
- p = pattern[0]
- for child in node.children:
+ 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[1:])
+ match(download_list, child, pattern, count+1)
def main():