Ejemplo n.º 1
0
    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'))
Ejemplo n.º 2
0
	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'))
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
	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()