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 __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