summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
authorBnyro <bnyro@tutanota.com>2024-07-20 21:27:12 +0200
committerMarkus Heiser <markus.heiser@darmarIT.de>2024-07-27 11:49:58 +0200
commit304ddd8114e12f4fdd5057dc933a2981bd9e1ec7 (patch)
tree036c00c01e08e1dd1eb1a6ee136f88d8d5871848 /searx
parent3f22dbb68ab1b1effa84048e15651c5b2e6aa160 (diff)
downloadsearxng-304ddd8114e12f4fdd5057dc933a2981bd9e1ec7.tar.gz
searxng-304ddd8114e12f4fdd5057dc933a2981bd9e1ec7.zip
[feat] videos template: support for view count
Diffstat (limited to 'searx')
-rw-r--r--searx/engines/invidious.py5
-rw-r--r--searx/engines/peertube.py3
-rw-r--r--searx/engines/piped.py3
-rw-r--r--searx/static/themes/simple/src/less/style.less1
-rw-r--r--searx/templates/simple/macros.html1
-rw-r--r--searx/utils.py12
6 files changed, 23 insertions, 2 deletions
diff --git a/searx/engines/invidious.py b/searx/engines/invidious.py
index 49f90cc09..540f89a2f 100644
--- a/searx/engines/invidious.py
+++ b/searx/engines/invidious.py
@@ -7,6 +7,8 @@ import random
from urllib.parse import quote_plus, urlparse
from dateutil import parser
+from searx.utils import humanize_number
+
# about
about = {
"website": 'https://api.invidious.io/',
@@ -91,7 +93,8 @@ def response(resp):
"url": url,
"title": result.get("title", ""),
"content": result.get("description", ""),
- 'length': length,
+ "length": length,
+ "views": humanize_number(result['viewCount']),
"template": "videos.html",
"author": result.get("author"),
"publishedDate": publishedDate,
diff --git a/searx/engines/peertube.py b/searx/engines/peertube.py
index 114e24c4f..0457c5d8d 100644
--- a/searx/engines/peertube.py
+++ b/searx/engines/peertube.py
@@ -14,7 +14,7 @@ import babel
from searx.network import get # see https://github.com/searxng/searxng/issues/762
from searx.locales import language_tag
-from searx.utils import html_to_text
+from searx.utils import html_to_text, humanize_number
from searx.enginelib.traits import EngineTraits
traits: EngineTraits
@@ -124,6 +124,7 @@ def video_response(resp):
'content': html_to_text(result.get('description') or ''),
'author': result.get('account', {}).get('displayName'),
'length': minute_to_hm(result.get('duration')),
+ 'views': humanize_number(result['views']),
'template': 'videos.html',
'publishedDate': parse(result['publishedAt']),
'iframe_src': result.get('embedUrl'),
diff --git a/searx/engines/piped.py b/searx/engines/piped.py
index 5b60dec5a..0b7199437 100644
--- a/searx/engines/piped.py
+++ b/searx/engines/piped.py
@@ -53,6 +53,8 @@ from urllib.parse import urlencode
import datetime
from dateutil import parser
+from searx.utils import humanize_number
+
# about
about = {
"website": 'https://github.com/TeamPiped/Piped/',
@@ -138,6 +140,7 @@ def response(resp):
"title": result.get("title", ""),
"publishedDate": parser.parse(time.ctime(uploaded / 1000)) if uploaded != -1 else None,
"iframe_src": _frontend_url() + '/embed' + result.get("url", ""),
+ "views": humanize_number(result["views"]),
}
length = result.get("duration")
if length:
diff --git a/searx/static/themes/simple/src/less/style.less b/searx/static/themes/simple/src/less/style.less
index 0d0996e7b..b7cd475f7 100644
--- a/searx/static/themes/simple/src/less/style.less
+++ b/searx/static/themes/simple/src/less/style.less
@@ -271,6 +271,7 @@ article[data-vim-selected].category-social {
.published_date,
.result_length,
+ .result_views,
.result_author,
.result_shipping,
.result_source_country {
diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html
index 9ec6fb47c..f7af553b6 100644
--- a/searx/templates/simple/macros.html
+++ b/searx/templates/simple/macros.html
@@ -33,6 +33,7 @@
{%- macro result_sub_header(result) -%}
{%- if result.publishedDate %}<time class="published_date" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif -%}
{%- if result.length %}<div class="result_length">{{ _('Length') }}: {{ result.length }}</div>{% endif -%}
+ {%- if result.views %}<div class="result_views">{{ _('Views') }}: {{ result.views }}</div>{% endif -%}
{%- if result.author %}<div class="result_author">{{ _('Author') }}: {{ result.author }}</div>{% endif -%}
{%- if result.metadata %}<div class="highlight">{{ result.metadata|safe }}</div>{% endif -%}
{%- endmacro -%}
diff --git a/searx/utils.py b/searx/utils.py
index 191161bde..407d44cd0 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -334,6 +334,18 @@ def humanize_bytes(size, precision=2):
return "%.*f %s" % (precision, size, s[p])
+def humanize_number(size, precision=0):
+ """Determine the *human readable* value of a decimal number."""
+ s = ['', 'K', 'M', 'B', 'T']
+
+ x = len(s)
+ p = 0
+ while size > 1000 and p < x:
+ p += 1
+ size = size / 1000.0
+ return "%.*f%s" % (precision, size, s[p])
+
+
def convert_str_to_int(number_str: str) -> int:
"""Convert number_str to int or 0 if number_str is not a number."""
if number_str.isdigit():