Skip to content
This repository was archived by the owner on Aug 10, 2023. It is now read-only.

Commit 2c0cbaa

Browse files
author
Antonio
committed
Automatically detect if official can reach
1 parent 55dff85 commit 2c0cbaa

1 file changed

Lines changed: 27 additions & 17 deletions

File tree

src/revChatGPT/V1.py

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,21 @@ def __init__(
162162
self.conversation_id_prev_queue = []
163163
self.parent_id_prev_queue = []
164164
self.lazy_loading = lazy_loading
165-
self.base_url = base_url or BASE_URL
166165
self.recipients = RecipientManager()
167166
self.disable_history = config.get("disable_history", False)
168167

169168
self.__check_credentials()
169+
# Check if chat.openai.com is reachable
170+
if not base_url:
171+
response = self.session.get("https://chat.openai.com/backend-api/accounts/check", impersonate='safari15_5')
172+
if response.status_code != 200:
173+
print(f"Using bypass.churchless.tech backend due to status code {response.status_code}")
174+
self.base_url = BASE_URL
175+
else:
176+
print("Using chat.openai.com backend")
177+
self.base_url = "https://chat.openai.com/backend-api/"
178+
else:
179+
self.base_url = base_url
170180

171181
@logger(is_timed=True)
172182
def __check_credentials(self) -> None:
@@ -345,7 +355,7 @@ def __send_request(
345355
url=f"{self.base_url}conversation",
346356
data=json.dumps(data),
347357
timeout=timeout,
348-
impersonate='chrome110',
358+
impersonate='safari15_5',
349359
content_callback=response_file.write, # a hack around curl_cffi not supporting stream=True
350360
)
351361
self.__check_response(response)
@@ -693,7 +703,7 @@ def get_conversations(
693703
:param limit: Integer
694704
"""
695705
url = f"{self.base_url}conversations?offset={offset}&limit={limit}"
696-
response = self.session.get(url, impersonate='chrome110')
706+
response = self.session.get(url, impersonate='safari15_5')
697707
self.__check_response(response)
698708
if encoding is not None:
699709
response.encoding = encoding
@@ -708,7 +718,7 @@ def get_msg_history(self, convo_id: str, encoding: str | None = None) -> list:
708718
:param encoding: String
709719
"""
710720
url = f"{self.base_url}conversation/{convo_id}"
711-
response = self.session.get(url, impersonate='chrome110')
721+
response = self.session.get(url, impersonate='safari15_5')
712722
self.__check_response(response)
713723
if encoding is not None:
714724
response.encoding = encoding
@@ -724,7 +734,7 @@ def gen_title(self, convo_id: str, message_id: str) -> str:
724734
data=json.dumps(
725735
{"message_id": message_id, "model": "text-davinci-002-render"},
726736
),
727-
impersonate='chrome110'
737+
impersonate='safari15_5'
728738
)
729739
self.__check_response(response)
730740
return response.json().get("title", "Error generating title")
@@ -737,7 +747,7 @@ def change_title(self, convo_id: str, title: str) -> None:
737747
:param title: String
738748
"""
739749
url = f"{self.base_url}conversation/{convo_id}"
740-
response = self.session.patch(url, data=json.dumps({"title": title}), impersonate='chrome110')
750+
response = self.session.patch(url, data=json.dumps({"title": title}), impersonate='safari15_5')
741751
self.__check_response(response)
742752

743753
@logger(is_timed=True)
@@ -747,7 +757,7 @@ def delete_conversation(self, convo_id: str) -> None:
747757
:param id: UUID of conversation
748758
"""
749759
url = f"{self.base_url}conversation/{convo_id}"
750-
response = self.session.patch(url, data='{"is_visible": false}', impersonate='chrome110')
760+
response = self.session.patch(url, data='{"is_visible": false}', impersonate='safari15_5')
751761
self.__check_response(response)
752762

753763
@logger(is_timed=True)
@@ -756,7 +766,7 @@ def clear_conversations(self) -> None:
756766
Delete all conversations
757767
"""
758768
url = f"{self.base_url}conversations"
759-
response = self.session.patch(url, data='{"is_visible": false}', impersonate='chrome110')
769+
response = self.session.patch(url, data='{"is_visible": false}', impersonate='safari15_5')
760770
self.__check_response(response)
761771

762772
@logger(is_timed=False)
@@ -790,7 +800,7 @@ def rollback_conversation(self, num: int = 1) -> None:
790800
@logger(is_timed=True)
791801
def get_plugins(self, offset: int = 0, limit: int = 250, status: str = "approved"):
792802
url = f"{self.base_url}aip/p?offset={offset}&limit={limit}&statuses={status}"
793-
response = self.session.get(url, impersonate='chrome110')
803+
response = self.session.get(url, impersonate='safari15_5')
794804
self.__check_response(response)
795805
# Parse as JSON
796806
return json.loads(response.text)
@@ -799,7 +809,7 @@ def get_plugins(self, offset: int = 0, limit: int = 250, status: str = "approved
799809
def install_plugin(self, plugin_id: str):
800810
url = f"{self.base_url}aip/p/{plugin_id}/user-settings"
801811
payload = {"is_installed": True}
802-
response = self.session.patch(url, data=json.dumps(payload), impersonate='chrome110')
812+
response = self.session.patch(url, data=json.dumps(payload), impersonate='safari15_5')
803813
self.__check_response(response)
804814

805815
@logger(is_timed=False)
@@ -861,7 +871,7 @@ async def __send_request(
861871
url=f"{self.base_url}conversation",
862872
data=json.dumps(data),
863873
timeout=timeout,
864-
impersonate='chrome110',
874+
impersonate='safari15_5',
865875
content_callback=response_file.write,
866876
)
867877
await self.__check_response(response)
@@ -1138,7 +1148,7 @@ async def get_conversations(self, offset: int = 0, limit: int = 20) -> list:
11381148
:param limit: Integer
11391149
"""
11401150
url = f"{self.base_url}conversations?offset={offset}&limit={limit}"
1141-
response = await self.session.get(url, impersonate='chrome110')
1151+
response = await self.session.get(url, impersonate='safari15_5')
11421152
await self.__check_response(response)
11431153
data = json.loads(response.text)
11441154
return data["items"]
@@ -1153,7 +1163,7 @@ async def get_msg_history(
11531163
:param id: UUID of conversation
11541164
"""
11551165
url = f"{self.base_url}conversation/{convo_id}"
1156-
response = await self.session.get(url, impersonate='chrome110')
1166+
response = await self.session.get(url, impersonate='safari15_5')
11571167
if encoding is not None:
11581168
response.encoding = encoding
11591169
await self.__check_response(response)
@@ -1169,7 +1179,7 @@ async def gen_title(self, convo_id: str, message_id: str) -> None:
11691179
url,
11701180
data=json.dumps(
11711181
{"message_id": message_id, "model": "text-davinci-002-render"},
1172-
), impersonate='chrome110'
1182+
), impersonate='safari15_5'
11731183
)
11741184
await self.__check_response(response)
11751185

@@ -1180,7 +1190,7 @@ async def change_title(self, convo_id: str, title: str) -> None:
11801190
:param title: String
11811191
"""
11821192
url = f"{self.base_url}conversation/{convo_id}"
1183-
response = await self.session.patch(url, data=f'{{"title": "{title}"}}', impersonate='chrome110')
1193+
response = await self.session.patch(url, data=f'{{"title": "{title}"}}', impersonate='safari15_5')
11841194
await self.__check_response(response)
11851195

11861196
async def delete_conversation(self, convo_id: str) -> None:
@@ -1189,15 +1199,15 @@ async def delete_conversation(self, convo_id: str) -> None:
11891199
:param convo_id: UUID of conversation
11901200
"""
11911201
url = f"{self.base_url}conversation/{convo_id}"
1192-
response = await self.session.patch(url, data='{"is_visible": false}', impersonate='chrome110')
1202+
response = await self.session.patch(url, data='{"is_visible": false}', impersonate='safari15_5')
11931203
await self.__check_response(response)
11941204

11951205
async def clear_conversations(self) -> None:
11961206
"""
11971207
Delete all conversations
11981208
"""
11991209
url = f"{self.base_url}conversations"
1200-
response = await self.session.patch(url, data='{"is_visible": false}', impersonate='chrome110')
1210+
response = await self.session.patch(url, data='{"is_visible": false}', impersonate='safari15_5')
12011211
await self.__check_response(response)
12021212

12031213
async def __map_conversations(self) -> None:

0 commit comments

Comments
 (0)