hyperbrowser 0.29.0__tar.gz → 0.30.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hyperbrowser might be problematic. Click here for more details.
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/PKG-INFO +1 -1
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/session.py +8 -1
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/session.py +8 -1
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/consts.py +6 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/session.py +23 -2
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/transport/async_transport.py +6 -2
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/transport/sync.py +6 -2
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/pyproject.toml +1 -1
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/LICENSE +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/README.md +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/__init__.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/async_client.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/base.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/sync.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/config.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/exceptions.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/crawl.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/extension.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/extract.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/profile.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/models/scrape.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/tools/__init__.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/tools/anthropic.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/tools/openai.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/tools/schema.py +0 -0
- {hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/transport/base.py +0 -0
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/session.py
RENAMED
|
@@ -2,6 +2,7 @@ from typing import List
|
|
|
2
2
|
from ....models.session import (
|
|
3
3
|
BasicResponse,
|
|
4
4
|
CreateSessionParams,
|
|
5
|
+
GetSessionDownloadsUrlResponse,
|
|
5
6
|
GetSessionRecordingUrlResponse,
|
|
6
7
|
SessionDetail,
|
|
7
8
|
SessionListParams,
|
|
@@ -47,7 +48,7 @@ class SessionManager:
|
|
|
47
48
|
|
|
48
49
|
async def get_recording(self, id: str) -> List[SessionRecording]:
|
|
49
50
|
response = await self._client.transport.get(
|
|
50
|
-
self._client._build_url(f"/session/{id}/recording")
|
|
51
|
+
self._client._build_url(f"/session/{id}/recording"), None, True
|
|
51
52
|
)
|
|
52
53
|
return [SessionRecording(**recording) for recording in response.data]
|
|
53
54
|
|
|
@@ -56,3 +57,9 @@ class SessionManager:
|
|
|
56
57
|
self._client._build_url(f"/session/{id}/recording-url")
|
|
57
58
|
)
|
|
58
59
|
return GetSessionRecordingUrlResponse(**response.data)
|
|
60
|
+
|
|
61
|
+
async def get_downloads_url(self, id: str) -> GetSessionDownloadsUrlResponse:
|
|
62
|
+
response = await self._client.transport.get(
|
|
63
|
+
self._client._build_url(f"/session/{id}/downloads-url")
|
|
64
|
+
)
|
|
65
|
+
return GetSessionDownloadsUrlResponse(**response.data)
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/session.py
RENAMED
|
@@ -2,6 +2,7 @@ from typing import List
|
|
|
2
2
|
from ....models.session import (
|
|
3
3
|
BasicResponse,
|
|
4
4
|
CreateSessionParams,
|
|
5
|
+
GetSessionDownloadsUrlResponse,
|
|
5
6
|
GetSessionRecordingUrlResponse,
|
|
6
7
|
SessionDetail,
|
|
7
8
|
SessionListParams,
|
|
@@ -45,7 +46,7 @@ class SessionManager:
|
|
|
45
46
|
|
|
46
47
|
def get_recording(self, id: str) -> List[SessionRecording]:
|
|
47
48
|
response = self._client.transport.get(
|
|
48
|
-
self._client._build_url(f"/session/{id}/recording")
|
|
49
|
+
self._client._build_url(f"/session/{id}/recording"), None, True
|
|
49
50
|
)
|
|
50
51
|
return [SessionRecording(**recording) for recording in response.data]
|
|
51
52
|
|
|
@@ -54,3 +55,9 @@ class SessionManager:
|
|
|
54
55
|
self._client._build_url(f"/session/{id}/recording-url")
|
|
55
56
|
)
|
|
56
57
|
return GetSessionRecordingUrlResponse(**response.data)
|
|
58
|
+
|
|
59
|
+
def get_downloads_url(self, id: str) -> GetSessionDownloadsUrlResponse:
|
|
60
|
+
response = self._client.transport.get(
|
|
61
|
+
self._client._build_url(f"/session/{id}/downloads-url")
|
|
62
|
+
)
|
|
63
|
+
return GetSessionDownloadsUrlResponse(**response.data)
|
|
@@ -4,6 +4,12 @@ ScrapeFormat = Literal["markdown", "html", "links", "screenshot"]
|
|
|
4
4
|
ScrapeWaitUntil = Literal["load", "domcontentloaded", "networkidle"]
|
|
5
5
|
ScrapePageStatus = Literal["completed", "failed", "pending", "running"]
|
|
6
6
|
ScrapeScreenshotFormat = Literal["jpeg", "png", "webp"]
|
|
7
|
+
RecordingStatus = Literal[
|
|
8
|
+
"not_enabled", "pending", "in_progress", "completed", "failed"
|
|
9
|
+
]
|
|
10
|
+
DownloadsStatus = Literal[
|
|
11
|
+
"not_enabled", "pending", "in_progress", "completed", "failed"
|
|
12
|
+
]
|
|
7
13
|
|
|
8
14
|
POLLING_ATTEMPTS = 5
|
|
9
15
|
|
|
@@ -6,8 +6,10 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
|
6
6
|
from hyperbrowser.models.consts import (
|
|
7
7
|
ISO639_1,
|
|
8
8
|
Country,
|
|
9
|
+
DownloadsStatus,
|
|
9
10
|
OperatingSystem,
|
|
10
11
|
Platform,
|
|
12
|
+
RecordingStatus,
|
|
11
13
|
State,
|
|
12
14
|
)
|
|
13
15
|
|
|
@@ -144,7 +146,7 @@ class CreateSessionParams(BaseModel):
|
|
|
144
146
|
default=None, serialization_alias="proxyServerUsername"
|
|
145
147
|
)
|
|
146
148
|
proxy_country: Optional[Country] = Field(
|
|
147
|
-
default=
|
|
149
|
+
default=None, serialization_alias="proxyCountry"
|
|
148
150
|
)
|
|
149
151
|
proxy_state: Optional[State] = Field(default=None, serialization_alias="proxyState")
|
|
150
152
|
proxy_city: Optional[str] = Field(default=None, serialization_alias="proxyCity")
|
|
@@ -176,6 +178,9 @@ class CreateSessionParams(BaseModel):
|
|
|
176
178
|
browser_args: Optional[List[str]] = Field(
|
|
177
179
|
default=None, serialization_alias="browserArgs"
|
|
178
180
|
)
|
|
181
|
+
save_downloads: Optional[bool] = Field(
|
|
182
|
+
default=None, serialization_alias="saveDownloads"
|
|
183
|
+
)
|
|
179
184
|
|
|
180
185
|
|
|
181
186
|
class SessionRecording(BaseModel):
|
|
@@ -202,4 +207,20 @@ class GetSessionRecordingUrlResponse(BaseModel):
|
|
|
202
207
|
populate_by_alias=True,
|
|
203
208
|
)
|
|
204
209
|
|
|
205
|
-
|
|
210
|
+
status: RecordingStatus = Field(alias="status")
|
|
211
|
+
recording_url: Optional[str] = Field(default=None, alias="recordingUrl")
|
|
212
|
+
error: Optional[str] = Field(default=None, alias="error")
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class GetSessionDownloadsUrlResponse(BaseModel):
|
|
216
|
+
"""
|
|
217
|
+
Response containing the signed URL for the session downloads.
|
|
218
|
+
"""
|
|
219
|
+
|
|
220
|
+
model_config = ConfigDict(
|
|
221
|
+
populate_by_alias=True,
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
status: DownloadsStatus = Field(alias="status")
|
|
225
|
+
downloads_url: Optional[str] = Field(default=None, alias="downloadsUrl")
|
|
226
|
+
error: Optional[str] = Field(default=None, alias="error")
|
|
@@ -80,11 +80,15 @@ class AsyncTransport(TransportStrategy):
|
|
|
80
80
|
except Exception as e:
|
|
81
81
|
raise HyperbrowserError("Post request failed", original_error=e)
|
|
82
82
|
|
|
83
|
-
async def get(
|
|
83
|
+
async def get(
|
|
84
|
+
self, url: str, params: Optional[dict] = None, follow_redirects: bool = False
|
|
85
|
+
) -> APIResponse:
|
|
84
86
|
if params:
|
|
85
87
|
params = {k: v for k, v in params.items() if v is not None}
|
|
86
88
|
try:
|
|
87
|
-
response = await self.client.get(
|
|
89
|
+
response = await self.client.get(
|
|
90
|
+
url, params=params, follow_redirects=follow_redirects
|
|
91
|
+
)
|
|
88
92
|
return await self._handle_response(response)
|
|
89
93
|
except HyperbrowserError:
|
|
90
94
|
raise
|
|
@@ -59,11 +59,15 @@ class SyncTransport(TransportStrategy):
|
|
|
59
59
|
except Exception as e:
|
|
60
60
|
raise HyperbrowserError("Post request failed", original_error=e)
|
|
61
61
|
|
|
62
|
-
def get(
|
|
62
|
+
def get(
|
|
63
|
+
self, url: str, params: Optional[dict] = None, follow_redirects: bool = False
|
|
64
|
+
) -> APIResponse:
|
|
63
65
|
if params:
|
|
64
66
|
params = {k: v for k, v in params.items() if v is not None}
|
|
65
67
|
try:
|
|
66
|
-
response = self.client.get(
|
|
68
|
+
response = self.client.get(
|
|
69
|
+
url, params=params, follow_redirects=follow_redirects
|
|
70
|
+
)
|
|
67
71
|
return self._handle_response(response)
|
|
68
72
|
except HyperbrowserError:
|
|
69
73
|
raise
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/crawl.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/extension.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/extract.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/profile.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/async_manager/scrape.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/crawl.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/extension.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/extract.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/profile.py
RENAMED
|
File without changes
|
{hyperbrowser-0.29.0 → hyperbrowser-0.30.0}/hyperbrowser/client/managers/sync_manager/scrape.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|