from typing import Optional
from dedoc.converters.concrete_converters.abstract_converter import AbstractConverter
[docs]class BinaryConverter(AbstractConverter):
"""
Converts image-like documents with `mime=application/octet-stream` into PNG.
Look to the :class:`~dedoc.converters.AbstractConverter` documentation to get the information about the methods' parameters.
"""
def __init__(self, *, config: Optional[dict] = None) -> None:
from dedoc.converters.concrete_converters.png_converter import PNGConverter
super().__init__(config=config)
self.png_converter = PNGConverter(config=self.config)
[docs] def can_convert(self,
file_path: Optional[str] = None,
extension: Optional[str] = None,
mime: Optional[str] = None,
parameters: Optional[dict] = None) -> bool:
"""
Checks if the document is image-like (e.g. it has .bmp, .jpg, .tiff, etc. extension) and has `mime=application/octet-stream`.
"""
from dedoc.utils import supported_image_types
from dedoc.utils.utils import get_mime_extension
mime, extension = get_mime_extension(file_path=file_path, mime=mime, extension=extension)
return mime == "application/octet-stream" and extension in supported_image_types
[docs] def convert(self, file_path: str, parameters: Optional[dict] = None) -> str:
"""
Convert the image-like and application/octet-stream documents into files with .png extension.
"""
return self.png_converter.convert(file_path, parameters=parameters)