def handle_starttag(self, tag, attrs): if tag == "a": for item in attrs: if item[0] == "href": url = item[1] if not download.is_remote(item): #fix relative links url = download.path_join(self.url, url) if not url.startswith("mailto:"): self.urls.append(url)
def check_metalink(self, src): ''' Decode a metalink file, can be local or remote First parameter, file to download, URL or file path to download from Returns the results of the check in a dictonary ''' self.running = True src = download.complete_url(src) try: metalinkobj = download.parse_metalink(src, nocheck=False) except: print _("ERROR parsing XML.") raise if not metalinkobj: return False if metalinkobj.type == "dynamic": origin = metalinkobj.origin if origin != src and origin != "": try: result = self.check_metalink(origin) self.running = True return result except: print "Error downloading from origin %s, not using." % origin urllist = metalinkobj.files if len(urllist) == 0: print _("No urls to download file from.") self.running = False return False #results = {} for filenode in urllist: #size = filenode.size #name = filenode.filename #print "=" * 79 #print _("File") + ": %s " % name + _("Size") + ": %s" % size myheaders = {} if download.is_remote(src): myheaders = {'referer': src} self.check_file_node(filenode, myheaders) self.running = False