From 633bcd81d70f4fc343204d8f562bec3d45b789b9 Mon Sep 17 00:00:00 2001 From: "t.me/xtekky" <98614666+xtekky@users.noreply.github.com> Date: Mon, 10 Apr 2023 01:03:55 +0200 Subject: you.com api (gpt 3.5 + internet) --- you/__init__.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 you/__init__.py (limited to 'you/__init__.py') diff --git a/you/__init__.py b/you/__init__.py new file mode 100644 index 00000000..dc440b79 --- /dev/null +++ b/you/__init__.py @@ -0,0 +1,77 @@ +from tls_client import Session +from re import findall +from json import loads, dumps +from uuid import uuid4 + + +class Completion: + def create( + prompt : str, + page : int = 1, + count : int = 10, + safeSearch : str = "Moderate", + onShoppingpage : bool = False, + mkt : str = "", + responseFilter : str = "WebPages,Translations,TimeZone,Computation,RelatedSearches", + domain : str = "youchat", + queryTraceId : str = None, + chat : list = [], + includelinks : bool = False, + detailed : bool = False, + debug : bool = False ) -> dict: + + client = Session(client_identifier="chrome_108") + client.headers = { + "authority" : "you.com", + "accept" : "text/event-stream", + "accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3", + "cache-control" : "no-cache", + "referer" : "https://you.com/search?q=who+are+you&tbm=youchat", + "sec-ch-ua" : '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"', + "sec-ch-ua-mobile" : "?0", + "sec-ch-ua-platform": '"Windows"', + "sec-fetch-dest" : "empty", + "sec-fetch-mode" : "cors", + "sec-fetch-site" : "same-origin", + 'cookie' : f'safesearch_guest=Moderate; uuid_guest={str(uuid4())}', + "user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", + } + + response = client.get(f"https://you.com/api/streamingSearch", params = { + "q" : prompt, + "page" : page, + "count" : count, + "safeSearch" : safeSearch, + "onShoppingPage" : onShoppingpage, + "mkt" : mkt, + "responseFilter" : responseFilter, + "domain" : domain, + "queryTraceId" : str(uuid4()) if queryTraceId is None else queryTraceId, + "chat" : str(chat), # {"question":"","answer":" '"} + } + ) + + + if debug: + print('\n\n------------------\n\n') + print(response.text) + print('\n\n------------------\n\n') + + youChatSerpResults = findall(r'youChatSerpResults\ndata: (.*)\n\nevent', response.text)[0] + thirdPartySearchResults = findall(r"thirdPartySearchResults\ndata: (.*)\n\nevent", response.text)[0] + slots = findall(r"slots\ndata: (.*)\n\nevent", response.text)[0] + + text = response.text.split('}]}\n\nevent: youChatToken\ndata: {"youChatToken": "')[-1] + text = text.replace('"}\n\nevent: youChatToken\ndata: {"youChatToken": "', '') + text = text.replace('event: done\ndata: I\'m Mr. Meeseeks. Look at me.\n\n', '') + + extra = { + 'youChatSerpResults' : loads(youChatSerpResults), + 'slots' : loads(slots) + } + + return { + 'response': text, + 'links' : loads(thirdPartySearchResults)['search']["third_party_search_results"] if includelinks else None, + 'extra' : extra if detailed else None, + } \ No newline at end of file -- cgit v1.2.3