mirror of
https://github.com/searxng/searxng.git
synced 2026-07-17 21:41:24 +00:00
f9304437267b1113086e3cbec47dfb37e15f1112
I was testing the new Kagi engine and found for some queries I was getting a
`KeyError` exception from the result parsing.
This PR ensures we only assumes the `url` key exists, and we use `.get()` to
retrieve values for keys that may not be present.
Their API documentation [1] clarifies that only the `url` and `title` properties
are required/guaranteed in the search result object, but this is not correct:
File "/home/patrick/code/searxng/searx/engines/kagi.py", line 161, in response
title=html.unescape(result["title"]),
~~~~~~^^^^^^^^^
KeyError: 'title
Heard back from Kagi support:
> The image results "title' should be marked as optional, as many images likely
> don't have titles - as you've noticed. The only required field there should be
> the "url" field.
[1] https://kagi.redocly.app/api/docs/openapi/search/search#search/search/t=response&c=200&path=data/search
[2] https://github.com/searxng/searxng/issues/2247#issuecomment-4692976877
.. SPDX-License-Identifier: AGPL-3.0-or-later .. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine .. _Installation guide: https://docs.searxng.org/admin/installation.html .. _Configuration guide: https://docs.searxng.org/admin/settings/index.html .. _CONTRIBUTING: https://github.com/searxng/searxng/blob/master/CONTRIBUTING.rst .. _LICENSE: https://github.com/searxng/searxng/blob/master/LICENSE .. figure:: https://raw.githubusercontent.com/searxng/searxng/master/client/simple/src/brand/searxng.svg :target: https://searxng.org :alt: SearXNG :width: 512px SearXNG is a `metasearch engine`_. Users are neither tracked nor profiled. .. image:: https://img.shields.io/badge/organization-3050ff?style=flat-square&logo=searxng&logoColor=fff&cacheSeconds=86400 :target: https://github.com/searxng :alt: Organization .. image:: https://img.shields.io/badge/documentation-3050ff?style=flat-square&logo=readthedocs&logoColor=fff&cacheSeconds=86400 :target: https://docs.searxng.org :alt: Documentation .. image:: https://img.shields.io/github/license/searxng/searxng?style=flat-square&label=license&color=3050ff&cacheSeconds=86400 :target: https://github.com/searxng/searxng/blob/master/LICENSE :alt: License .. image:: https://img.shields.io/github/commit-activity/y/searxng/searxng/master?style=flat-square&label=commits&color=3050ff&cacheSeconds=3600 :target: https://github.com/searxng/searxng/commits/master/ :alt: Commits .. image:: https://img.shields.io/weblate/progress/searxng?server=https%3A%2F%2Ftranslate.codeberg.org&style=flat-square&label=translated&color=3050ff&cacheSeconds=86400 :target: https://translate.codeberg.org/projects/searxng/ :alt: Translated Setup ===== To install SearXNG, see `Installation guide`_. To fine-tune SearXNG, see `Configuration guide`_. Further information on *how-to* can be found `here <https://docs.searxng.org/admin/index.html>`_. Connect ======= If you have questions or want to connect with others in the community: - `#searxng:matrix.org <https://matrix.to/#/#searxng:matrix.org>`_ Contributing ============ See CONTRIBUTING_ for more details. License ======= This project is licensed under the GNU Affero General Public License (AGPL-3.0). See LICENSE_ for more details.
Languages
Python
81.8%
Shell
6%
HTML
5%
Less
3.9%
TypeScript
2.8%
Other
0.4%