def test_urlinfo_parser(self): self.assertFalse( utils.parse_url_info('http://www.google.com/', [], '', 2)) self.assertFalse( utils.parse_url_info('http://www.google.com', [], '', 2)) self.assertEqual( utils.parse_url_info('http://sub.dom.net/my_tar.tar.gz', [], '', 2), ('my_tar.tar.gz', 'http://sub.dom.net/my_tar.tar.gz'))
def test_urlinfo_parser(self): self.assertFalse(utils.parse_url_info('http://www.google.com/', [], '', 2)) self.assertFalse(utils.parse_url_info('http://www.google.com', [], '', 2)) self.assertEqual(utils.parse_url_info('http://sub.dom.net/my_tar.tar.gz', [], '', 2), ('my_tar.tar.gz', 'http://sub.dom.net/my_tar.tar.gz'))
def download(self): """Handles complete download Puts link to end of list if error occurs """ error_item = None for ele in self.links: if ele["status"] == "success" or ele["status"] == "skip": # skip if already successfully (or completely broken) downloaded continue # init progress bar ele["progress"] = "-" self.cur_item = ele # get item info link = ele["link"] fname = ele["filename"] # set identifiers ele["status"] = "loading" self.loading = True # get url info (name, direct link) answ = utils.parse_url_info(*utils.get_url_info(link)) parse_error = not answ # answ == False on error load_error = load_fatal = False if not parse_error: # try to actually download file fname, download_link = answ if not ele["filename"]: ele["filename"] = fname final_path = os.path.join(self.dw_dir, fname) load_error, load_fatal = utils.load_file( download_link, final_path, self.handle_download_progress) # handle errors if needed self.loading = False if load_fatal: ele["status"] = "skip" error_item = ele elif load_error or parse_error: ele["status"] = "error" error_item = ele else: ele["status"] = "success" if error_item: # move error to end of list self.links.remove(error_item) self.links.append(error_item) error_item = None ele["progress"] = "-" else: # fix size if '/' in ele["progress"]: ele["progress"] = ele["progress"].split('/')[1] # save current changes self.saver()
def download(self): """Handles complete download Puts link to end of list if error occurs """ error_item = None for ele in self.links: if ele["status"] == "success" or ele["status"] == "skip": # skip if already successfully (or completely broken) downloaded continue # init progress bar ele["progress"] = "-" self.cur_item = ele # get item info link = ele["link"] fname = ele["filename"] # set identifiers ele["status"] = "loading" self.loading = True # get url info (name, direct link) answ = utils.parse_url_info(*utils.get_url_info(link)) parse_error = not answ # answ == False on error load_error = load_fatal = False if not parse_error: # try to actually download file fname, download_link = answ if not ele["filename"]: ele["filename"] = fname final_path = os.path.join(self.dw_dir, fname) load_error, load_fatal = utils.load_file(download_link, final_path, self.handle_download_progress) # handle errors if needed self.loading = False if load_fatal: ele["status"] = "skip" error_item = ele elif load_error or parse_error: ele["status"] = "error" error_item = ele else: ele["status"] = "success" if error_item: # move error to end of list self.links.remove(error_item) self.links.append(error_item) error_item = None ele["progress"] = "-" else: # fix size if '/' in ele["progress"]: ele["progress"] = ele["progress"].split('/')[1] # save current changes self.saver()