summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
authorAlexandre FLAMENT <alexandre.flament@hesge.ch>2022-08-26 16:04:50 +0000
committerAlexandre Flament <alex@al-f.net>2022-09-23 20:45:58 +0200
commita96f503d7b4866e6eb352afd759433b3aad0a3f5 (patch)
tree6d08c8ba1892e4babc33b62ceba585cdc1e06b66 /searx
parentbef3984d0320b2010c50097e186b07b6673a9647 (diff)
Add searx.webutils.searxng_format_date
* Move the datetime to str code from searx.webapp.search to searx.webutils.searxng_format_date * When the month, day, hour, day and second are zero, the function returns only the year.
Diffstat (limited to 'searx')
-rwxr-xr-xsearx/webapp.py17
-rw-r--r--searx/webutils.py19
2 files changed, 21 insertions, 15 deletions
diff --git a/searx/webapp.py b/searx/webapp.py
index bd76cc53..e6bda42b 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -12,7 +12,6 @@ import os
import sys
import base64
-from datetime import datetime, timedelta
from timeit import default_timer
from html import escape
from io import StringIO
@@ -45,7 +44,6 @@ from flask.json import jsonify
from flask_babel import (
Babel,
gettext,
- format_date,
format_decimal,
)
@@ -79,6 +77,7 @@ from searx.webutils import (
is_hmac_of,
is_flask_run_cmdline,
group_engines_in_tab,
+ searxng_format_date,
)
from searx.webadapter import (
get_search_query_from_webapp,
@@ -718,25 +717,13 @@ def search():
if 'url' in result:
result['pretty_url'] = prettify_url(result['url'])
- # TODO, check if timezone is calculated right # pylint: disable=fixme
if result.get('publishedDate'): # do not try to get a date from an empty string or a None type
try: # test if publishedDate >= 1900 (datetime module bug)
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
except ValueError:
result['publishedDate'] = None
else:
- if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1):
- timedifference = datetime.now() - result['publishedDate'].replace(tzinfo=None)
- minutes = int((timedifference.seconds / 60) % 60)
- hours = int(timedifference.seconds / 60 / 60)
- if hours == 0:
- result['publishedDate'] = gettext('{minutes} minute(s) ago').format(minutes=minutes)
- else:
- result['publishedDate'] = gettext('{hours} hour(s), {minutes} minute(s) ago').format(
- hours=hours, minutes=minutes
- )
- else:
- result['publishedDate'] = format_date(result['publishedDate'])
+ result['publishedDate'] = searxng_format_date(result['publishedDate'])
# set result['open_group'] = True when the template changes from the previous result
# set result['close_group'] = True when the template changes on the next result
diff --git a/searx/webutils.py b/searx/webutils.py
index b18fd5c6..f084fe9d 100644
--- a/searx/webutils.py
+++ b/searx/webutils.py
@@ -7,11 +7,14 @@ import hmac
import re
import inspect
import itertools
+from datetime import datetime, timedelta
from typing import Iterable, List, Tuple, Dict
from io import StringIO
from codecs import getincrementalencoder
+from flask_babel import gettext, format_date
+
from searx import logger, settings
from searx.engines import Engine, OTHER_CATEGORY
@@ -138,6 +141,22 @@ def highlight_content(content, query):
return content
+def searxng_format_date(dt: datetime): # pylint: disable=invalid-name
+ # TODO, check if timezone is calculated right # pylint: disable=fixme
+ d = dt.date()
+ t = dt.time()
+ if d.month == 1 and d.day == 1 and t.hour == 0 and t.minute == 0 and t.second == 0:
+ return str(d.year)
+ if dt.replace(tzinfo=None) >= datetime.now() - timedelta(days=1):
+ timedifference = datetime.now() - dt.replace(tzinfo=None)
+ minutes = int((timedifference.seconds / 60) % 60)
+ hours = int(timedifference.seconds / 60 / 60)
+ if hours == 0:
+ return gettext('{minutes} minute(s) ago').format(minutes=minutes)
+ return gettext('{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes)
+ return format_date(dt)
+
+
def is_flask_run_cmdline():
"""Check if the application was started using "flask run" command line