"""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