From b230827533a89c0209aa5f12993487ab90a02fec Mon Sep 17 00:00:00 2001 From: Hackurei <138650713+Hackurei@users.noreply.github.com> Date: Tue, 5 Dec 2023 17:57:29 -0700 Subject: [PATCH 1/2] [feat] engine: implementation of brave goggles --- searx/engines/brave.py | 26 ++++++++++++++++++++------ searx/settings.yml | 10 ++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/searx/engines/brave.py b/searx/engines/brave.py index 080de1b0c..40d0ddf7c 100644 --- a/searx/engines/brave.py +++ b/searx/engines/brave.py @@ -30,6 +30,13 @@ Configured ``brave`` engines: ... brave_category: news + - name: brave.goggles + brave_category: goggles + time_range_support: true + paging: true + ... + brave_category: goggles + .. _brave regions: @@ -95,7 +102,7 @@ Implementations """ -from typing import TYPE_CHECKING +from typing import Any, TYPE_CHECKING from urllib.parse import ( urlencode, @@ -133,12 +140,14 @@ about = { base_url = "https://search.brave.com/" categories = [] brave_category = 'search' -"""Brave supports common web-search, video search, image and video search. +Goggles = Any +"""Brave supports common web-search, videos, images, news, and goggles search. - ``search``: Common WEB search - ``videos``: search for videos - ``images``: search for images - ``news``: search for news +- ``goggles``: Common WEB search with custom rules """ brave_spellcheck = False @@ -151,7 +160,7 @@ in SearXNG, the spellchecking is disabled by default. send_accept_language_header = True paging = False """Brave only supports paging in :py:obj:`brave_category` ``search`` (UI -category All).""" +category All) and in the goggles category.""" max_page = 10 """Tested 9 pages maximum (``&offset=8``), to be save max is set to 10. Trying to do more won't return any result and you will most likely be flagged as a bot. @@ -183,12 +192,15 @@ def request(query, params): if brave_spellcheck: args['spellcheck'] = '1' - if brave_category == 'search': + if brave_category in ('search', 'goggles'): if params.get('pageno', 1) - 1: args['offset'] = params.get('pageno', 1) - 1 if time_range_map.get(params['time_range']): args['tf'] = time_range_map.get(params['time_range']) + if brave_category == 'goggles': + args['goggles_id'] = Goggles + params["url"] = f"{base_url}{brave_category}?{urlencode(args)}" # set properties in the cookies @@ -209,7 +221,7 @@ def request(query, params): def response(resp): - if brave_category == 'search': + if brave_category in ('search', 'goggles'): return _parse_search(resp) datastr = "" @@ -252,7 +264,9 @@ def _parse_search(resp): if url is None or title_tag is None or not urlparse(url).netloc: # partial url likely means it's an ad continue - content_tag = eval_xpath_getindex(result, './/div[@class="snippet-description"]', 0, default='') + content_tag = eval_xpath_getindex( + result, './/div[@class="snippet-description desktop-default-regular"]', 0, default='' + ) img_src = eval_xpath_getindex(result, './/img[contains(@class, "thumb")]/@src', 0, default='') item = { diff --git a/searx/settings.yml b/searx/settings.yml index 828828b41..ae6709c3b 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -2116,6 +2116,16 @@ engines: categories: news brave_category: news + # - name: brave.goggles + # engine: brave + # network: brave + # shortcut: brgog + # time_range_support: true + # paging: true + # categories: [general, web] + # brave_category: goggles + # Goggles: # required! This should be a URL ending in .goggle + - name: lib.rs shortcut: lrs engine: xpath From 7afa72708c5dc6fd42e5ac5051d3405962cbeda6 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sun, 24 Dec 2023 09:18:00 +0100 Subject: [PATCH 2/2] [doc] description of Brave's goggles Signed-off-by: Markus Heiser --- searx/engines/brave.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/searx/engines/brave.py b/searx/engines/brave.py index 40d0ddf7c..b2469b869 100644 --- a/searx/engines/brave.py +++ b/searx/engines/brave.py @@ -65,6 +65,23 @@ region are mapped to regions in SearXNG (see :py:obj:`babel low quality. +.. _brave googles: + +Brave Goggles +============= + +.. _list of Goggles: https://search.brave.com/goggles/discover +.. _Goggles Whitepaper: https://brave.com/static-assets/files/goggles.pdf +.. _Goggles Quickstart: https://github.com/brave/goggles-quickstart + +Goggles allow you to choose, alter, or extend the ranking of Brave Search +results (`Goggles Whitepaper`_). Goggles are openly developed by the community +of Brave Search users. + +Select from the `list of Goggles`_ people have published, or create your own +(`Goggles Quickstart`_). + + .. _brave languages: Brave languages