summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/result_types/__init__.py1
-rw-r--r--searx/result_types/_base.py7
-rw-r--r--searx/utils.py2
3 files changed, 9 insertions, 1 deletions
diff --git a/searx/result_types/__init__.py b/searx/result_types/__init__.py
index 2ea989149..5a2ae6f47 100644
--- a/searx/result_types/__init__.py
+++ b/searx/result_types/__init__.py
@@ -15,6 +15,7 @@
__all__ = [
"Result",
"MainResult",
+ "LegacyResult",
"KeyValue",
"EngineResults",
"AnswerSet",
diff --git a/searx/result_types/_base.py b/searx/result_types/_base.py
index 94a55337c..9284302e3 100644
--- a/searx/result_types/_base.py
+++ b/searx/result_types/_base.py
@@ -31,6 +31,7 @@ from collections.abc import Callable
import msgspec
from searx import logger
+from searx.utils import get_embedded_stream_url
log = logger.getChild("result_types")
@@ -480,6 +481,7 @@ class LegacyResult(dict[str, t.Any]):
category: str
publishedDate: datetime.datetime | None
pubdate: str = ""
+ iframe_src: str | None
# infobox result
urls: list[dict[str, str]]
@@ -509,6 +511,7 @@ class LegacyResult(dict[str, t.Any]):
self["score"] = self.get("score", 0)
self["category"] = self.get("category", "")
self["publishedDate"] = self.get("publishedDate")
+ self["iframe_src"] = self.get("iframe_src")
if "infobox" in self:
self["urls"] = self.get("urls", [])
@@ -531,6 +534,10 @@ class LegacyResult(dict[str, t.Any]):
DeprecationWarning,
)
+ # TODO: move into typed video results class once it is implemented # pylint: disable=fixme
+ if self.template == "videos.html" and self.url and not self.iframe_src:
+ self.iframe_src = get_embedded_stream_url(self.url)
+
def __getattr__(self, name: str, default: t.Any = UNSET) -> t.Any:
if default == UNSET and name not in self:
raise AttributeError(f"LegacyResult object has no field named: {name}")
diff --git a/searx/utils.py b/searx/utils.py
index 1ebfda12f..9c70c8cc4 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -592,7 +592,7 @@ def eval_xpath_getindex(
return default
-def get_embeded_stream_url(url: str):
+def get_embedded_stream_url(url: str):
"""
Converts a standard video URL into its embed format. Supported services include Youtube,
Facebook, Instagram, TikTok, Dailymotion, and Bilibili.