[feat] image results: automatically guess mimetype based on path

This commit is contained in:
Bnyro
2026-06-16 22:15:53 +02:00
parent 4cc32b2457
commit 952896d29e
+15 -1
View File
@@ -14,6 +14,7 @@ template.
# pylint: disable=too-few-public-methods
__all__ = ["Image", "ImageRef"]
import mimetypes
import types
import typing as t
from collections.abc import Callable
@@ -71,7 +72,7 @@ class Image(MainResult, kw_only=True):
"""The resolution of the image (e.g. ``1920 x 1080`` pixel)"""
img_format: str = ""
"""The format of the image (e.g. ``png``)."""
"""The format of the image :py:obj:`.MainResult.img_src` (e.g. ``png``)."""
source: str = ""
"""Source of the image."""
@@ -83,6 +84,19 @@ class Image(MainResult, kw_only=True):
formats: list[ImageRef] = []
"""List of links to alternative image formats."""
def __post_init__(self):
super().__post_init__()
if not self.img_format:
# automatically guess the image format based on the path of the image
mimetype = mimetypes.guess_type(self.img_src)[0]
if mimetype:
subtype = mimetype.split("/")[-1]
if subtype in MIMESUB:
self.img_format = MIMESUB[subtype]
else:
self.img_format = subtype.upper()
def filter_urls(self, filter_func: "Callable[[Result | LegacyResult, str, str], str | bool ]"):
for _ref in self.formats[:]: