def _set_type(self, hash_only=False): if hash_only: # cannot say anything about the file if we only know the hash self['type'] = "hash" return config = Config.get(name="types").get_values() config = ConfigObject(from_string=config.mappings) detailed_types = config.get('details') extensions = config.get('extensions') self['type'] = self['mime'] # First, look at extensions for ext in extensions: if self['filepath'].split('.')[-1].lower() == ext: self['type'] = extensions.get(ext) break # Otherwise, look in 'detailed_types' else: for t in detailed_types: if self['detailed_type'].lower().startswith(t.lower()): self['type'] = detailed_types.get(t) break # Or mime types else: types = config.get("types") if types.get(self['mime']) is not None: self['type'] = types.get(self['mime']) # Run Filetype modules, starting with the most specific ones filetype_modules = dispatcher.get_filetype_modules_for(self['type']) filetype_modules += dispatcher.get_filetype_modules_for('*') for module in filetype_modules: try: known_type = module.recognize(self['filepath'], self['type']) if known_type: self['type'] = known_type break except: pass
def _set_type(self): config = Config.get(name="types").get_values() config = ConfigObject(from_string=config.mappings) detailed_types = config.get('details') extensions = config.get('extensions') self['type'] = self['mime'] # First, look at extensions for ext in extensions: if self['filepath'].split('.')[-1].lower() == ext: self['type'] = extensions.get(ext) break # Otherwise, look in 'detailed_types' else: for t in detailed_types: if self['detailed_type'].lower().startswith(t.lower()): self['type'] = detailed_types.get(t) break # Finally, look at mime types else: types = config.get("types") if types.get(self['mime']) is not None: self['type'] = types.get(self['mime'])