forked from Ponysearch/Ponysearch
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.
This commit is contained in:
parent
bef3984d03
commit
a96f503d7b
2 changed files with 21 additions and 15 deletions
|
@ -12,7 +12,6 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
from timeit import default_timer
|
from timeit import default_timer
|
||||||
from html import escape
|
from html import escape
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
@ -45,7 +44,6 @@ from flask.json import jsonify
|
||||||
from flask_babel import (
|
from flask_babel import (
|
||||||
Babel,
|
Babel,
|
||||||
gettext,
|
gettext,
|
||||||
format_date,
|
|
||||||
format_decimal,
|
format_decimal,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -79,6 +77,7 @@ from searx.webutils import (
|
||||||
is_hmac_of,
|
is_hmac_of,
|
||||||
is_flask_run_cmdline,
|
is_flask_run_cmdline,
|
||||||
group_engines_in_tab,
|
group_engines_in_tab,
|
||||||
|
searxng_format_date,
|
||||||
)
|
)
|
||||||
from searx.webadapter import (
|
from searx.webadapter import (
|
||||||
get_search_query_from_webapp,
|
get_search_query_from_webapp,
|
||||||
|
@ -718,25 +717,13 @@ def search():
|
||||||
if 'url' in result:
|
if 'url' in result:
|
||||||
result['pretty_url'] = prettify_url(result['url'])
|
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
|
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)
|
try: # test if publishedDate >= 1900 (datetime module bug)
|
||||||
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
|
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
|
||||||
except ValueError:
|
except ValueError:
|
||||||
result['publishedDate'] = None
|
result['publishedDate'] = None
|
||||||
else:
|
else:
|
||||||
if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1):
|
result['publishedDate'] = searxng_format_date(result['publishedDate'])
|
||||||
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'])
|
|
||||||
|
|
||||||
# set result['open_group'] = True when the template changes from the previous result
|
# 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
|
# set result['close_group'] = True when the template changes on the next result
|
||||||
|
|
|
@ -7,11 +7,14 @@ import hmac
|
||||||
import re
|
import re
|
||||||
import inspect
|
import inspect
|
||||||
import itertools
|
import itertools
|
||||||
|
from datetime import datetime, timedelta
|
||||||
from typing import Iterable, List, Tuple, Dict
|
from typing import Iterable, List, Tuple, Dict
|
||||||
|
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
from codecs import getincrementalencoder
|
from codecs import getincrementalencoder
|
||||||
|
|
||||||
|
from flask_babel import gettext, format_date
|
||||||
|
|
||||||
from searx import logger, settings
|
from searx import logger, settings
|
||||||
from searx.engines import Engine, OTHER_CATEGORY
|
from searx.engines import Engine, OTHER_CATEGORY
|
||||||
|
|
||||||
|
@ -138,6 +141,22 @@ def highlight_content(content, query):
|
||||||
return content
|
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():
|
def is_flask_run_cmdline():
|
||||||
"""Check if the application was started using "flask run" command line
|
"""Check if the application was started using "flask run" command line
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue