mirror of
https://github.com/searxng/searxng.git
synced 2026-06-22 17:48:33 +02:00
[feat] image results: automatically guess mimetype based on path
This commit is contained in:
@@ -14,6 +14,7 @@ template.
|
|||||||
# pylint: disable=too-few-public-methods
|
# pylint: disable=too-few-public-methods
|
||||||
__all__ = ["Image", "ImageRef"]
|
__all__ = ["Image", "ImageRef"]
|
||||||
|
|
||||||
|
import mimetypes
|
||||||
import types
|
import types
|
||||||
import typing as t
|
import typing as t
|
||||||
from collections.abc import Callable
|
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)"""
|
"""The resolution of the image (e.g. ``1920 x 1080`` pixel)"""
|
||||||
|
|
||||||
img_format: str = ""
|
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: str = ""
|
||||||
"""Source of the image."""
|
"""Source of the image."""
|
||||||
@@ -83,6 +84,19 @@ class Image(MainResult, kw_only=True):
|
|||||||
formats: list[ImageRef] = []
|
formats: list[ImageRef] = []
|
||||||
"""List of links to alternative image formats."""
|
"""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 ]"):
|
def filter_urls(self, filter_func: "Callable[[Result | LegacyResult, str, str], str | bool ]"):
|
||||||
|
|
||||||
for _ref in self.formats[:]:
|
for _ref in self.formats[:]:
|
||||||
|
|||||||
Reference in New Issue
Block a user