def check_dependencies(cls) -> None: if not executable_is_available("xvfb-run"): raise BuilderDependencyNotFound( "this builder requires xvfb-run to be available") if not executable_is_available("/usr/bin/drawio"): raise BuilderDependencyNotFound( "this builder requires drawio to be available")
def check_dependencies(cls) -> None: if not xvfbwrapper_installed: raise BuilderDependencyNotFound( "this builder requires xvfbwrapper") if not executable_is_available("xvfb-run"): raise BuilderDependencyNotFound( "this builder requires xvfb-run to be available") if not executable_is_available("drawio"): raise BuilderDependencyNotFound( "this builder requires drawio to be available")
def __load_mimetypes(cls) -> typing.List[str]: """ Load supported mimetypes from WAND library :return: list of supported mime types """ mimes = imagemagick_supported_mimes() # type: typing.List[str] # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common # default imagemagick configuration delegate raw format to ufraw-batch. if executable_is_available("ufraw-batch"): for mimetype_mapping in cls.SUPPORTED_RAW_CAMERA_MIMETYPE_MAPPING: mimes.append(mimetype_mapping.mimetype) if executable_is_available("dwebp"): mimes.append("image/webp") return mimes
def check_dependencies(cls) -> None: if not xvfbwrapper_installed: raise BuilderDependencyNotFound( "this builder requires xvfbwrapper") if not executable_is_available("scribus"): raise BuilderDependencyNotFound( "this builder requires scribus to be available")
def __load_mimetypes(cls) -> typing.List[str]: """ Load supported mimetypes from WAND library :return: list of supported mime types """ all_supported = wand.version.formats("*") mimes = [] # type: typing.List[str] for supported in all_supported: url = "./FILE.{0}".format(supported) # Fake a url mime, enc = mimetypes.guess_type(url) if mime and mime not in mimes: if "video" not in mime: # TODO - D.A. - 2018-09-24 - Do not skip video if supported mimes.append(mime) svg_mime = "image/svg+xml" if svg_mime in mimes: # HACK - D.A. - 2018-11-07 do not convert SVG using convert # The optionnal behavior is related to different configurations on Debian and Ubuntu # (need to remove the mimetype on Ubuntu but useless on Debian mimes.remove("image/svg+xml") # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common # default imagemagick configuration delegate raw format to ufraw-batch. if executable_is_available("ufraw-batch"): for mimetype in cls.SUPPORTED_RAW_CAMERA_MIMETYPE: mimes.append(mimetype) return mimes
def test_check_dependencies() -> None: from preview_generator.preview.builder.office__libreoffice import ( OfficePreviewBuilderLibreoffice, ) if executable_is_available("libreoffice"): OfficePreviewBuilderLibreoffice.check_dependencies() else: with pytest.raises(BuilderDependencyNotFound): OfficePreviewBuilderLibreoffice.check_dependencies()
def __load_mimetypes(cls) -> typing.List[str]: """ Load supported mimetypes from WAND library :return: list of supported mime types """ mimes = imagemagick_supported_mimes() # type: typing.List[str] # HACK - G.M - 2019-10-31 - Handle raw format only if ufraw-batch is installed as most common # default imagemagick configuration delegate raw format to ufraw-batch. if executable_is_available("ufraw-batch"): for mimetype_mapping in cls.SUPPORTED_RAW_CAMERA_MIMETYPE_MAPPING: mimes.append(mimetype_mapping.mimetype) # HACK - G.M - 2019-11-14 - disable support for postscript file in imagemagick to use # pillow instead mimes.remove("application/postscript") mimes.append("application/x-xcf") mimes.append("image/x-xcf") return mimes
import io import os from pathlib import Path import magic import pytest from preview_generator.exception import InputExtensionNotFound from preview_generator.preview.builder.office__libreoffice import OfficePreviewBuilderLibreoffice from preview_generator.utils import executable_is_available CACHE_DIR = "/tmp/preview-generator-tests/cache" if not executable_is_available("libreoffice"): pytest.skip("libreoffice is not available.", allow_module_level=True) def test_convert_office_document_to_pdf__ok__with_input_extension_and_mimetype() -> None: content = io.BytesIO(b"Test content") output_filepath = CACHE_DIR + "/test.pdf" _file = Path(output_filepath) assert not _file.exists() OfficePreviewBuilderLibreoffice().convert_office_document_to_pdf( content, cache_path=CACHE_DIR, input_extension=".txt", mimetype="text/plain", output_filepath=output_filepath, ) assert _file.is_file() mime = magic.Magic(mime=True)
# -*- coding: utf-8 -*- import os import re import shutil import typing from PIL import Image import pytest from preview_generator.manager import PreviewManager from preview_generator.utils import executable_is_available from tests import test_utils if not executable_is_available("drawio"): pytest.skip("drawio is not available.", allow_module_level=True) CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) CACHE_DIR = "/tmp/preview-generator-tests/cache" IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "test_drawio.drawio") def setup_function(function: typing.Callable) -> None: shutil.rmtree(CACHE_DIR, ignore_errors=True) @pytest.mark.drawio def test_drawio_to_jpeg() -> None: manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True) assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True path_to_file = manager.get_jpeg_preview(file_path=IMAGE_FILE_PATH,
def check_dependencies(cls) -> None: for executable in ["pdftocairo", "pdfinfo"]: if not executable_is_available(executable): raise BuilderDependencyNotFound( "this builder requires {} to be available (from poppler-utils)" .format(executable))
def check_dependencies(cls) -> None: if not executable_is_available("convert"): raise BuilderDependencyNotFound( "this builder requires convert to be available")
from PIL import Image import pytest from preview_generator.exception import UnavailablePreviewType from preview_generator.manager import PreviewManager from preview_generator.utils import executable_is_available from tests import test_utils """ dng file from: https://www.kenrockwell.com/leica/m9/sample-photos-3.htm """ CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) CACHE_DIR = "/tmp/preview-generator-tests/cache" IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "L1004235.DNG") if not executable_is_available("ufraw-batch"): pytest.skip("ufraw-batch is not available.", allow_module_level=True) def setup_function(function: typing.Callable) -> None: shutil.rmtree(CACHE_DIR, ignore_errors=True) def test_to_jpeg() -> None: manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True) assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True path_to_file = manager.get_jpeg_preview(file_path=IMAGE_FILE_PATH, height=256, width=512, force=True) assert os.path.exists(path_to_file) is True
def check_dependencies(cls) -> None: if not executable_is_available(INKSCAPE_EXECUTABLE): raise BuilderDependencyNotFound( "this builder requires inkscape to be available")
import shutil import typing from PIL import Image import pytest from preview_generator.exception import UnavailablePreviewType from preview_generator.manager import PreviewManager from preview_generator.utils import executable_is_available from tests import test_utils CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) CACHE_DIR = "/tmp/preview-generator-tests/cache" IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "the_webp.webp") if not executable_is_available("dwepb"): pytest.skip("libreoffice is not available.", allow_module_level=True) def setup_function(function: typing.Callable) -> None: shutil.rmtree(CACHE_DIR, ignore_errors=True) def test_to_jpeg() -> None: manager = PreviewManager(cache_folder_path=CACHE_DIR, create_folder=True) assert manager.has_jpeg_preview(file_path=IMAGE_FILE_PATH) is True path_to_file = manager.get_jpeg_preview( file_path=IMAGE_FILE_PATH, height=256, width=512, force=True ) assert os.path.exists(path_to_file) is True assert os.path.getsize(path_to_file) > 0
import typing from PIL import Image import pytest from preview_generator.preview.builder.video__ffmpeg import VideoPreviewBuilderFFMPEG from preview_generator.utils import ImgDims from preview_generator.utils import executable_is_available CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) CACHE_DIR = "/tmp/preview-generator-tests/cache/" # INFO - G.M - 2019-11-05 - video from https://peach.blender.org/trailer-page/ # Big buck bunny trailer under licence cc-by IMAGE_FILE_PATH = os.path.join(CURRENT_DIR, "trailer_400p.ogg") if not executable_is_available("ffprobe"): pytest.skip("ffprobe is not available.", allow_module_level=True) def setup_function(function: typing.Callable) -> None: shutil.rmtree(CACHE_DIR, ignore_errors=True) def test_to_jpeg() -> None: os.makedirs(CACHE_DIR) builder = VideoPreviewBuilderFFMPEG() assert builder.has_jpeg_preview() is True size = ImgDims(height=256, width=512) preview_name = "ogg_theora_big_buck_bunny_trailer_test_ffmpeg" builder.build_jpeg_preview( file_path=IMAGE_FILE_PATH,
def check_dependencies(cls) -> None: if not executable_is_available("libreoffice"): raise BuilderDependencyNotFound("this builder requires libreoffice to be available")
def test_executable_is_available(exec: typing.Dict[str, typing.Any]) -> None: executable_list = exec.get("test") # type: typing.Any assert executable_is_available(executable_list) == exec.get("result")