def check(self): """""" try: module = importlib.import_module("plugins.{0}.link_checker".format(self.host.replace('.', '_'))) self.link_status, file_name, self.size, self.status_msg = module.LinkChecker().check(self.link) self.file_name = utils.normalize_file_name(file_name) except ImportError as err: logger.debug(err) self.file_name = utils.normalize_file_name(utils.get_filename_from_url(self.link)) or cons.UNKNOWN #may be an empty str self.link_status = cons.LINK_ERROR except Exception as err: logger.exception(err) self.link_status = cons.LINK_ERROR
def __set_filename_n_size(self): info = self.source.info() old_file_name = self.file_name if self.save_as: self.file_name = utils.normalize_file_name(self.save_as) else: self.file_name = self.__get_filename_from_source(info) if self.file_exists and old_file_name != self.file_name: #do not rename the file. raise StatusError("Cant resume, file name has change. Please retry.") self.size_file = self.get_content_size(info)
def __get_filename_from_source(self, info): """""" file_name = None if info.getheader("Content-Disposition", None): #Content-Disposition: Attachment; filename=name.ext disposition = info.getheader("Content-Disposition") #get file name if 'filename="' in disposition: file_name = disposition.split('filename=')[-1].split('"')[1] elif "filename='" in disposition: file_name = disposition.split('filename=')[-1].split("'")[1] elif 'filename=' in disposition: file_name = disposition.split('filename=')[-1] elif 'filename*=' in disposition: file_name = disposition.split("'")[-1] if not file_name: #may be an empty string or None file_name = utils.get_filename_from_url(self.source.url) elif file_name.startswith('=?UTF-8?B?'): #base64 file_name = file_name[10:].decode('base64') file_name = utils.normalize_file_name(file_name) return file_name