Browse Source

[fix] qwant engine - prevent exception on date/time value is None

Has been reported in [1], error messages::

  Error
       Error: ValueError
       Percentage: 0
       Parameters: ()
       File name: searx/engines/qwant.py:159
       Function: response
       Code: pub_date = datetime.fromtimestamp(item['date'], None)

    Error
        Error: TypeError
        Percentage: 0
        Parameters: ('an integer is required (got type NoneType)',)
        File name: searx/engines/qwant.py:196
        Function: response
       Code: pub_date = datetime.fromtimestamp(item['date'])

Fix timedelta from seconds to milliseconds [1], error message::

    Error
        Error: TypeError
        Percentage: 0
        Parameters: ('unsupported type for timedelta seconds component: NoneType',)
        File name: searx/engines/qwant.py:195
        Function: response
        Code: length = timedelta(seconds=item['duration'])

[1] https://github.com/searxng/searxng/issues/222

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 3 years ago
parent
commit
ca57c7421b
1 changed files with 10 additions and 3 deletions
  1. 10 3
      searx/engines/qwant.py

+ 10 - 3
searx/engines/qwant.py

@@ -156,7 +156,10 @@ def response(resp):
                 })
                 })
 
 
             elif mainline_type == 'news':
             elif mainline_type == 'news':
-                pub_date = datetime.fromtimestamp(item['date'], None)
+
+                pub_date = item['date']
+                if pub_date is not None:
+                    pub_date = datetime.fromtimestamp(pub_date)
                 news_media = item.get('media', [])
                 news_media = item.get('media', [])
                 img_src = None
                 img_src = None
                 if news_media:
                 if news_media:
@@ -192,8 +195,12 @@ def response(resp):
                 if c:
                 if c:
                     content_parts.append("%s: %s " % (gettext("Channel"), c))
                     content_parts.append("%s: %s " % (gettext("Channel"), c))
                 content = ' // '.join(content_parts)
                 content = ' // '.join(content_parts)
-                length = timedelta(seconds=item['duration'])
-                pub_date = datetime.fromtimestamp(item['date'])
+                length = item['duration']
+                if length is not None:
+                    length = timedelta(milliseconds=length)
+                pub_date = item['date']
+                if pub_date is not None:
+                    pub_date = datetime.fromtimestamp(pub_date)
                 thumbnail = item['thumbnail']
                 thumbnail = item['thumbnail']
                 # from some locations (DE and others?) the s2 link do
                 # from some locations (DE and others?) the s2 link do
                 # response a 'Please wait ..' but does not deliver the thumbnail
                 # response a 'Please wait ..' but does not deliver the thumbnail