def _is_archive(path): mime = mimetypes.guess_type(path) mime_type = mime[0] encoding = mime[1] supportedArchives = ['application/x-rar-compressed', 'application/x-tar', 'application/x-7z-compressed', 'application/x-cpio', 'gzip', 'bzip2'] return mime_type in supportedArchives or encoding in supportedArchives
def get_frame(self, frame_number, quality=Quality.ORIGINAL, out_type=Type.BUFFER): _, chunk_number, frame_offset = self._validate_frame_number(frame_number) loader = self._loaders[quality] chunk_reader = loader.load(chunk_number) frame, frame_name, _ = chunk_reader[frame_offset] frame = self._convert_frame(frame, loader.reader_class, out_type) if loader.reader_class is VideoReader: return (frame, self.VIDEO_FRAME_MIME) return (frame, mimetypes.guess_type(frame_name))
def _get_frame(self, frame_number, chunk_path_getter, extracted_chunk, chunk_reader, reader_class): _, chunk_number, frame_offset = self._validate_frame_number(frame_number) chunk_path = chunk_path_getter(chunk_number) if chunk_number != extracted_chunk: extracted_chunk = chunk_number chunk_reader = reader_class([chunk_path]) frame, frame_name, _ = next(itertools.islice(chunk_reader, frame_offset, None)) if reader_class is VideoReader: return (self._av_frame_to_png_bytes(frame), 'image/png') return (frame, mimetypes.guess_type(frame_name))
def _is_zip(path): mime = mimetypes.guess_type(path) mime_type = mime[0] encoding = mime[1] supportedArchives = ['application/zip'] return mime_type in supportedArchives or encoding in supportedArchives
def _is_pdf(path): mime = mimetypes.guess_type(path) return mime[0] == 'application/pdf'
def _is_image(path): mime = mimetypes.guess_type(path) # Exclude vector graphic images because Pillow cannot work with them return mime[0] is not None and mime[0].startswith('image') and \ not mime[0].startswith('image/svg')
def _is_video(path): mime = mimetypes.guess_type(path) return mime[0] is not None and mime[0].startswith('video')