Files
omni-parse/omni/providers/treg.py

37 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""treg.to: публичного поискового API нет, работаем только со своим токеном.
Провайдер существует, чтобы в общем списке было видно: источник требует доступ,
а не молча отсутствует. Если TREG_TOKEN задан и у аккаунта есть веб-поиск,
провайдер отдаст результаты, иначе сразу скажет причину.
"""
import urllib.parse
from .. import config, net
from ..model import Item
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/141.0.0.0 Safari/537.36"}
def available(name="treg"):
if not config.KEYS.get("TREG_TOKEN"):
return False, "нужен TREG_TOKEN (публичного поиска нет)"
return True, "токен есть"
def search_treg(query, limit=10):
tok = config.KEYS.get("TREG_TOKEN")
if not tok:
return []
# основной путь: внутренний поиск по каталогу моделей/задач
url = f"https://treg.to/api/search?q={urllib.parse.quote(query)}&limit={min(limit, 20)}"
r = net.get(url, headers={**UA, "Authorization": f"Bearer {tok}"}, json_mode=True)
d = r.json() or {}
rows = d.get("results") or d.get("data") or []
out = []
for x in rows[:limit]:
if not isinstance(x, dict):
continue
out.append(Item("treg", "result", url=x.get("url") or x.get("link") or "https://treg.to",
title=x.get("title") or x.get("name") or "", text=(x.get("description") or "")[:1500],
score=float(x.get("score") or 0)))
return out