Browse Source

[feat] new engine: svgrepo

Bnyro 1 year ago
parent
commit
64d9587ac8
2 changed files with 52 additions and 0 deletions
  1. 46 0
      searx/engines/svgrepo.py
  2. 6 0
      searx/settings.yml

+ 46 - 0
searx/engines/svgrepo.py

@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Svgrepo (images)
+"""
+
+from lxml import html
+from searx.utils import extract_text, eval_xpath, eval_xpath_list
+
+about = {
+    "website": 'https://www.svgrepo.com',
+    "official_api_documentation": 'https://svgapi.com',
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": 'HTML',
+}
+
+paging = True
+categories = ['images']
+base_url = "https://www.svgrepo.com"
+
+results_xpath = "//div[@class='style_nodeListing__7Nmro']/div"
+url_xpath = ".//a/@href"
+title_xpath = ".//a/@title"
+img_src_xpath = ".//img/@src"
+
+
+def request(query, params):
+    params['url'] = f"{base_url}/vectors/{query}/{params['pageno']}/"
+    return params
+
+
+def response(resp):
+    results = []
+
+    dom = html.fromstring(resp.text)
+    for result in eval_xpath_list(dom, results_xpath):
+        results.append(
+            {
+                'template': 'images.html',
+                'url': base_url + extract_text(eval_xpath(result, url_xpath)),
+                'title': extract_text(eval_xpath(result, title_xpath)).replace(" SVG File", "").replace("Show ", ""),
+                'img_src': extract_text(eval_xpath(result, img_src_xpath)),
+            }
+        )
+
+    return results

+ 6 - 0
searx/settings.yml

@@ -1869,6 +1869,12 @@ engines:
     timeout: 5.0
     disabled: true
 
+  - name: svgrepo
+    engine: svgrepo
+    shortcut: svg
+    timeout: 10.0
+    disabled: true
+
     # wikimini: online encyclopedia for children
     # The fulltext and title parameter is necessary for Wikimini because
     # sometimes it will not show the results and redirect instead