quick-start-connectors
45 строк · 1.3 Кб
1import logging2
3from .client import get_client4
5logger = logging.getLogger(__name__)6
7
8def process_content(node):9if isinstance(node, list):10values = [process_content(item) for item in node]11return " ".join(values)12elif isinstance(node, dict):13if "content" in node:14return process_content(node["content"])15elif "value" in node:16return node["value"]17return str(node)18
19
20def serialize_results(results, mapping):21data = []22for result in results:23item = {"content_type": result.content_type.id, "id": result.id}24for key, value in result.fields().items():25item[key] = str(value)26if key == "content":27item[key] = process_content(value)28type_key = f"{result.content_type.id}.{key}"29if type_key in mapping:30item[mapping[type_key]] = item.pop(key)31
32data.append(item)33return data34
35
36def search(query):37client = get_client()38
39params = {"query": query, "limit": client.get_search_limit()}40content_type = client.get_content_type()41if content_type:42params["content_type"] = content_type43results = client.entries(params)44
45return serialize_results(results.items, client.get_mapping())46