.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.engines.huggingface Namespace Reference

Functions

 init (_)
 
 request (query, params)
 
EngineResults response (resp)
 

Variables

dict about
 
list categories = ['it', 'repos']
 
str base_url = "https://huggingface.co"
 
str huggingface_endpoint = 'models'
 

Detailed Description

`Hugging Face`_ search engine for SearXNG.

.. _Hugging Face: https://huggingface.co

Configuration
=============

The engine has the following additional settings:

- :py:obj:`huggingface_endpoint`

Configurations for endpoints:

.. code:: yaml

  - name: huggingface
    engine: huggingface
    shortcut: hf

  - name: huggingface datasets
    huggingface_endpoint: datasets
    engine: huggingface
    shortcut: hfd

  - name: huggingface spaces
    huggingface_endpoint: spaces
    engine: huggingface
    shortcut: hfs

Implementations
===============

Function Documentation

◆ init()

searx.engines.huggingface.init ( _)

Definition at line 65 of file huggingface.py.

65def init(_):
66 if huggingface_endpoint not in ('datasets', 'models', 'spaces'):
67 raise SearxEngineAPIException(f"Unsupported Hugging Face endpoint: {huggingface_endpoint}")
68
69

◆ request()

searx.engines.huggingface.request ( query,
params )

Definition at line 70 of file huggingface.py.

70def request(query, params):
71 query_params = {
72 "direction": -1,
73 "search": query,
74 }
75
76 params["url"] = f"{base_url}/api/{huggingface_endpoint}?{urlencode(query_params)}"
77
78 return params
79
80

◆ response()

EngineResults searx.engines.huggingface.response ( resp)

Definition at line 81 of file huggingface.py.

81def response(resp) -> EngineResults:
82 results = EngineResults()
83
84 data = resp.json()
85
86 for entry in data:
87 if huggingface_endpoint != 'models':
88 url = f"{base_url}/{huggingface_endpoint}/{entry['id']}"
89 else:
90 url = f"{base_url}/{entry['id']}"
91
92 published_date = None
93 try:
94 published_date = datetime.strptime(entry["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
95 except (ValueError, TypeError):
96 pass
97
98 contents = []
99 if entry.get("likes"):
100 contents.append(f"Likes: {entry['likes']}")
101 if entry.get("downloads"):
102 contents.append(f"Downloads: {entry['downloads']:,}")
103 if entry.get("tags"):
104 contents.append(f"Tags: {', '.join(entry['tags'])}")
105 if entry.get("description"):
106 contents.append(f"Description: {entry['description']}")
107
108 item = MainResult(
109 title=entry["id"],
110 content=html_to_text(" | ".join(contents)),
111 url=url,
112 publishedDate=published_date,
113 )
114 results.add(item)
115
116 return results

Variable Documentation

◆ about

dict searx.engines.huggingface.about
Initial value:
1= {
2 "website": "https://huggingface.co/",
3 "wikidata_id": "Q108943604",
4 "official_api_documentation": "https://huggingface.co/docs/hub/en/api",
5 "use_official_api": True,
6 "require_api_key": False,
7 "results": "JSON",
8}

Definition at line 43 of file huggingface.py.

◆ base_url

str searx.engines.huggingface.base_url = "https://huggingface.co"

Definition at line 54 of file huggingface.py.

◆ categories

list searx.engines.huggingface.categories = ['it', 'repos']

Definition at line 52 of file huggingface.py.

◆ huggingface_endpoint

str searx.engines.huggingface.huggingface_endpoint = 'models'

Definition at line 56 of file huggingface.py.