hyperbrowser 0.28.0__py3-none-any.whl → 0.30.0__py3-none-any.whl
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/client/managers/async_manager/session.py +8 -1
- hyperbrowser/client/managers/sync_manager/session.py +8 -1
- hyperbrowser/models/consts.py +109 -0
- hyperbrowser/models/extract.py +1 -0
- hyperbrowser/models/session.py +32 -3
- hyperbrowser/transport/async_transport.py +6 -2
- hyperbrowser/transport/sync.py +6 -2
- {hyperbrowser-0.28.0.dist-info → hyperbrowser-0.30.0.dist-info}/METADATA +1 -1
- {hyperbrowser-0.28.0.dist-info → hyperbrowser-0.30.0.dist-info}/RECORD +11 -11
- {hyperbrowser-0.28.0.dist-info → hyperbrowser-0.30.0.dist-info}/WHEEL +1 -1
- {hyperbrowser-0.28.0.dist-info → hyperbrowser-0.30.0.dist-info}/LICENSE +0 -0
|
@@ -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)
|
|
@@ -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)
|
hyperbrowser/models/consts.py
CHANGED
|
@@ -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
|
|
|
@@ -486,3 +492,106 @@ ISO639_1 = Literal[
|
|
|
486
492
|
"zh",
|
|
487
493
|
"zu",
|
|
488
494
|
]
|
|
495
|
+
|
|
496
|
+
State = Literal[
|
|
497
|
+
"AL",
|
|
498
|
+
"AK",
|
|
499
|
+
"AZ",
|
|
500
|
+
"AR",
|
|
501
|
+
"CA",
|
|
502
|
+
"CO",
|
|
503
|
+
"CT",
|
|
504
|
+
"DE",
|
|
505
|
+
"FL",
|
|
506
|
+
"GA",
|
|
507
|
+
"HI",
|
|
508
|
+
"ID",
|
|
509
|
+
"IL",
|
|
510
|
+
"IN",
|
|
511
|
+
"IA",
|
|
512
|
+
"KS",
|
|
513
|
+
"KY",
|
|
514
|
+
"LA",
|
|
515
|
+
"ME",
|
|
516
|
+
"MD",
|
|
517
|
+
"MA",
|
|
518
|
+
"MI",
|
|
519
|
+
"MN",
|
|
520
|
+
"MS",
|
|
521
|
+
"MO",
|
|
522
|
+
"MT",
|
|
523
|
+
"NE",
|
|
524
|
+
"NV",
|
|
525
|
+
"NH",
|
|
526
|
+
"NJ",
|
|
527
|
+
"NM",
|
|
528
|
+
"NY",
|
|
529
|
+
"NC",
|
|
530
|
+
"ND",
|
|
531
|
+
"OH",
|
|
532
|
+
"OK",
|
|
533
|
+
"OR",
|
|
534
|
+
"PA",
|
|
535
|
+
"RI",
|
|
536
|
+
"SC",
|
|
537
|
+
"SD",
|
|
538
|
+
"TN",
|
|
539
|
+
"TX",
|
|
540
|
+
"UT",
|
|
541
|
+
"VT",
|
|
542
|
+
"VA",
|
|
543
|
+
"WA",
|
|
544
|
+
"WV",
|
|
545
|
+
"WI",
|
|
546
|
+
"WY",
|
|
547
|
+
"al",
|
|
548
|
+
"ak",
|
|
549
|
+
"az",
|
|
550
|
+
"ar",
|
|
551
|
+
"ca",
|
|
552
|
+
"co",
|
|
553
|
+
"ct",
|
|
554
|
+
"de",
|
|
555
|
+
"fl",
|
|
556
|
+
"ga",
|
|
557
|
+
"hi",
|
|
558
|
+
"id",
|
|
559
|
+
"il",
|
|
560
|
+
"in",
|
|
561
|
+
"ia",
|
|
562
|
+
"ks",
|
|
563
|
+
"ky",
|
|
564
|
+
"la",
|
|
565
|
+
"me",
|
|
566
|
+
"md",
|
|
567
|
+
"ma",
|
|
568
|
+
"mi",
|
|
569
|
+
"mn",
|
|
570
|
+
"ms",
|
|
571
|
+
"mo",
|
|
572
|
+
"mt",
|
|
573
|
+
"ne",
|
|
574
|
+
"nv",
|
|
575
|
+
"nh",
|
|
576
|
+
"nj",
|
|
577
|
+
"nm",
|
|
578
|
+
"ny",
|
|
579
|
+
"nc",
|
|
580
|
+
"nd",
|
|
581
|
+
"oh",
|
|
582
|
+
"ok",
|
|
583
|
+
"or",
|
|
584
|
+
"pa",
|
|
585
|
+
"ri",
|
|
586
|
+
"sc",
|
|
587
|
+
"sd",
|
|
588
|
+
"tn",
|
|
589
|
+
"tx",
|
|
590
|
+
"ut",
|
|
591
|
+
"vt",
|
|
592
|
+
"va",
|
|
593
|
+
"wa",
|
|
594
|
+
"wv",
|
|
595
|
+
"wi",
|
|
596
|
+
"wy",
|
|
597
|
+
]
|
hyperbrowser/models/extract.py
CHANGED
|
@@ -24,6 +24,7 @@ class StartExtractJobParams(BaseModel):
|
|
|
24
24
|
schema_: Optional[Any] = pydantic.Field(
|
|
25
25
|
None, alias="schema", serialization_alias="schema"
|
|
26
26
|
)
|
|
27
|
+
wait_for: Optional[int] = Field(default=None, serialization_alias="waitFor")
|
|
27
28
|
session_options: Optional[CreateSessionParams] = Field(
|
|
28
29
|
default=None, serialization_alias="sessionOptions"
|
|
29
30
|
)
|
hyperbrowser/models/session.py
CHANGED
|
@@ -3,7 +3,15 @@ from typing import Any, List, Literal, Optional, Union
|
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
5
5
|
|
|
6
|
-
from hyperbrowser.models.consts import
|
|
6
|
+
from hyperbrowser.models.consts import (
|
|
7
|
+
ISO639_1,
|
|
8
|
+
Country,
|
|
9
|
+
DownloadsStatus,
|
|
10
|
+
OperatingSystem,
|
|
11
|
+
Platform,
|
|
12
|
+
RecordingStatus,
|
|
13
|
+
State,
|
|
14
|
+
)
|
|
7
15
|
|
|
8
16
|
SessionStatus = Literal["active", "closed", "error"]
|
|
9
17
|
|
|
@@ -138,8 +146,10 @@ class CreateSessionParams(BaseModel):
|
|
|
138
146
|
default=None, serialization_alias="proxyServerUsername"
|
|
139
147
|
)
|
|
140
148
|
proxy_country: Optional[Country] = Field(
|
|
141
|
-
default=
|
|
149
|
+
default=None, serialization_alias="proxyCountry"
|
|
142
150
|
)
|
|
151
|
+
proxy_state: Optional[State] = Field(default=None, serialization_alias="proxyState")
|
|
152
|
+
proxy_city: Optional[str] = Field(default=None, serialization_alias="proxyCity")
|
|
143
153
|
operating_systems: Optional[List[OperatingSystem]] = Field(
|
|
144
154
|
default=None, serialization_alias="operatingSystems"
|
|
145
155
|
)
|
|
@@ -168,6 +178,9 @@ class CreateSessionParams(BaseModel):
|
|
|
168
178
|
browser_args: Optional[List[str]] = Field(
|
|
169
179
|
default=None, serialization_alias="browserArgs"
|
|
170
180
|
)
|
|
181
|
+
save_downloads: Optional[bool] = Field(
|
|
182
|
+
default=None, serialization_alias="saveDownloads"
|
|
183
|
+
)
|
|
171
184
|
|
|
172
185
|
|
|
173
186
|
class SessionRecording(BaseModel):
|
|
@@ -194,4 +207,20 @@ class GetSessionRecordingUrlResponse(BaseModel):
|
|
|
194
207
|
populate_by_alias=True,
|
|
195
208
|
)
|
|
196
209
|
|
|
197
|
-
|
|
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
|
hyperbrowser/transport/sync.py
CHANGED
|
@@ -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
|
|
@@ -6,31 +6,31 @@ hyperbrowser/client/managers/async_manager/extension.py,sha256=a-xYtXXdCspukYtsg
|
|
|
6
6
|
hyperbrowser/client/managers/async_manager/extract.py,sha256=9p8dGLYmoow7smnQ0BTRN6diDmIayjW-EPRGzzvheZk,2102
|
|
7
7
|
hyperbrowser/client/managers/async_manager/profile.py,sha256=f2uX2GGYdgL0fyzB0jnI-L-nWleqG6cwZ0pc1K1zdQY,1244
|
|
8
8
|
hyperbrowser/client/managers/async_manager/scrape.py,sha256=Lr6oicTX3U1xooczUVQlsq2mzIhAKEW-A9909ZdSzKc,5720
|
|
9
|
-
hyperbrowser/client/managers/async_manager/session.py,sha256=
|
|
9
|
+
hyperbrowser/client/managers/async_manager/session.py,sha256=jO9Z2MSooG9eTmdsOWiNU0mFYdrxh5HirNnFqgwDIn0,2330
|
|
10
10
|
hyperbrowser/client/managers/sync_manager/crawl.py,sha256=uAVmjhUbamVnzAAyfswq1bdBR5c7JrfGVvPdVmmw4R8,3799
|
|
11
11
|
hyperbrowser/client/managers/sync_manager/extension.py,sha256=1YoyTZtMo43trl9jAsXv95aor0nBHiJEmLva39jFW-k,1415
|
|
12
12
|
hyperbrowser/client/managers/sync_manager/extract.py,sha256=XocMKC0qAarRpE12KU4m_mi1KhUOHp3-TK4dLeiIn6E,2034
|
|
13
13
|
hyperbrowser/client/managers/sync_manager/profile.py,sha256=va6mlhQ5SKZa-viEGFNzV6UBZEP5SqwVp32_oxC_NzM,1196
|
|
14
14
|
hyperbrowser/client/managers/sync_manager/scrape.py,sha256=y4YB-NusXRi3brE7jBGRBHGANY-_-aHMBirKuuU6mdg,5579
|
|
15
|
-
hyperbrowser/client/managers/sync_manager/session.py,sha256=
|
|
15
|
+
hyperbrowser/client/managers/sync_manager/session.py,sha256=aE4T9LWbOKcKCnh04n3rwnjeyus73Z47otrdCGTTKSM,2224
|
|
16
16
|
hyperbrowser/client/sync.py,sha256=HgglJY9pNdW987OzNO_5dSZgj1AfAqovCmY99WYQD2E,1213
|
|
17
17
|
hyperbrowser/config.py,sha256=2J6GYNR_83vzJZ6jEV-LXO1U-q6DHIrfyAU0WrUPhw8,625
|
|
18
18
|
hyperbrowser/exceptions.py,sha256=SUUkptK2OL36xDORYmSicaTYR7pMbxeWAjAgz35xnM8,1171
|
|
19
|
-
hyperbrowser/models/consts.py,sha256=
|
|
19
|
+
hyperbrowser/models/consts.py,sha256=yEPR3_Kmx44KDA3HC7p_96fTVIfNs2VwVfltIwe5Kgg,6415
|
|
20
20
|
hyperbrowser/models/crawl.py,sha256=22hP_DPZMfa2MAfOeJ90qj5CH4rr7VtQT1gCQqO8jO8,2610
|
|
21
21
|
hyperbrowser/models/extension.py,sha256=nXjKXKt9R7RxyZ4hd3EvfqZsEGy_ufh1r5j2mqCLykQ,804
|
|
22
|
-
hyperbrowser/models/extract.py,sha256=
|
|
22
|
+
hyperbrowser/models/extract.py,sha256=Thq1wQhXlS-dh4442JLDONGOYix06s3gjWSnP1OuyN4,1528
|
|
23
23
|
hyperbrowser/models/profile.py,sha256=KRb_LNxxW00AsD_thzzthFS51vInJawt1RcoNz4Q9i8,1322
|
|
24
24
|
hyperbrowser/models/scrape.py,sha256=ZdVNN4rh7EKLh-O1Ou5aU_OgTNxC9pFQlkG-Q2fR-Z4,4611
|
|
25
|
-
hyperbrowser/models/session.py,sha256=
|
|
25
|
+
hyperbrowser/models/session.py,sha256=i1NkrQWNlKziDd98ySdrUUH7XSv6qOa2cmiK5vV7VeI,6730
|
|
26
26
|
hyperbrowser/tools/__init__.py,sha256=OUaTUM-kiigYmzfbpx3XQhzMK1xT1wd8cqXgR4znsAY,2021
|
|
27
27
|
hyperbrowser/tools/anthropic.py,sha256=5pEkJm1H-26GToTwXsDjo4GGqVy1hATws4Pg59mumow,1667
|
|
28
28
|
hyperbrowser/tools/openai.py,sha256=4-71IIWSxc_ByhywcfWj9-QI9iYNEe0xO6B2spE8WG0,2200
|
|
29
29
|
hyperbrowser/tools/schema.py,sha256=cR2MUX8TvUyN8TnCyeX0pccp4AmPjrdaKzuAXRThOJo,3075
|
|
30
|
-
hyperbrowser/transport/async_transport.py,sha256=
|
|
30
|
+
hyperbrowser/transport/async_transport.py,sha256=6HKoeM5TutIqraEscEWobvSPWF3iVKh2hPflGNKwykw,4128
|
|
31
31
|
hyperbrowser/transport/base.py,sha256=ildpMrDiM8nvrSGrH2LTOafmB17T7PQB_NQ1ODA378U,1703
|
|
32
|
-
hyperbrowser/transport/sync.py,sha256=
|
|
33
|
-
hyperbrowser-0.
|
|
34
|
-
hyperbrowser-0.
|
|
35
|
-
hyperbrowser-0.
|
|
36
|
-
hyperbrowser-0.
|
|
32
|
+
hyperbrowser/transport/sync.py,sha256=aUVpxWF8sqSycLNKxVNEZvlsZSoqc1eHgPK1Y1QA1u8,3422
|
|
33
|
+
hyperbrowser-0.30.0.dist-info/LICENSE,sha256=6rUGKlyKb_1ZAH7h7YITYAAUNFN3MNGGKCyfrw49NLE,1071
|
|
34
|
+
hyperbrowser-0.30.0.dist-info/METADATA,sha256=EdPIlQtwBgME4yioEdu6GUiJcEHt87woh5MVLQRHE3s,3438
|
|
35
|
+
hyperbrowser-0.30.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
36
|
+
hyperbrowser-0.30.0.dist-info/RECORD,,
|
|
File without changes
|