返回提交历史
Modified
g4f/Provider/PerplexityAi.py
+9
-10
XFEstudio/gpt4free
Update PerplexityAi.py
0625bd0a
代码差异
1 个文件
+9
-10
@@ -1,15 +1,10 @@
1
1
from __future__ import annotations
2
2
3
3
import time
4
try:
5
from selenium.webdriver.remote.webdriver import WebDriver
6
except ImportError:
7
class WebDriver():
8
pass
9
4
10
5
from ..typing import CreateResult, Messages
11
6
from .base_provider import BaseProvider
12
from .helper import format_prompt, get_browser
7
from .helper import WebDriver, format_prompt, get_browser
13
8
14
9
class PerplexityAi(BaseProvider):
15
10
url = "https://www.perplexity.ai"
@@ -27,13 +22,13 @@ class PerplexityAi(BaseProvider):
27
22
timeout: int = 120,
28
23
browser: WebDriver = None,
29
24
copilot: bool = False,
30
display: bool = True,
25
hidden_display: bool = True,
31
26
**kwargs
32
27
) -> CreateResult:
33
28
if browser:
34
29
driver = browser
35
30
else:
36
if display:
31
if hidden_display:
37
32
driver, display = get_browser("", True, proxy)
38
33
else:
39
34
driver = get_browser("", False, proxy)
@@ -50,6 +45,7 @@ class PerplexityAi(BaseProvider):
50
45
# Page loaded?
51
46
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "textarea[placeholder='Ask anything...']")))
52
47
48
# Add WebSocket hook
53
49
script = """
54
50
window._message = window._last_message = "";
55
51
window._message_finished = false;
@@ -80,10 +76,12 @@ WebSocket.prototype.send = function(...args) {
80
76
81
77
if copilot:
82
78
try:
79
# Check account
83
80
driver.find_element(By.CSS_SELECTOR, "img[alt='User avatar']")
81
# Enable copilot
84
82
driver.find_element(By.CSS_SELECTOR, "button[data-testid='copilot-toggle']").click()
85
83
except:
86
pass
84
raise RuntimeError("For copilot you needs a account")
87
85
88
86
# Enter question
89
87
driver.find_element(By.CSS_SELECTOR, "textarea[placeholder='Ask anything...']").send_keys(prompt)
@@ -91,6 +89,7 @@ WebSocket.prototype.send = function(...args) {
91
89
driver.find_element(By.CSS_SELECTOR, "button.bg-super svg[data-icon='arrow-right']").click()
92
90
93
91
try:
92
# Yield response
94
93
script = """
95
94
if(window._message && window._message != window._last_message) {
96
95
try {
@@ -117,5 +116,5 @@ if(window._message && window._message != window._last_message) {
117
116
if not browser:
118
117
time.sleep(0.1)
119
118
driver.quit()
120
if display:
119
if hidden_display:
121
120
display.stop()