Skip to content

Commit 84a0a25

Browse files
sync: sync: update from Docs [automated] (#574)
Synced from monorepo directory: webextrator
1 parent f40c874 commit 84a0a25

2 files changed

Lines changed: 31 additions & 12 deletions

File tree

tests/test_commands.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,17 @@ def test_extract_with_block_resources_and_headers(self, runner, mock_extract_res
127127
"extract",
128128
"https://example.com",
129129
"--block-resources",
130+
"image",
131+
"--block-resources",
132+
"font",
130133
"--headers",
131134
'{"Accept-Language":"en-US"}',
132135
"--json",
133136
],
134137
)
135138
assert result.exit_code == 0
136139
sent = json.loads(route.calls[0].request.content)
137-
assert sent["block_resources"] is True
140+
assert sent["block_resources"] == ["image", "font"]
138141
assert sent["headers"] == {"Accept-Language": "en-US"}
139142

140143
def test_extract_no_token(self, runner):
@@ -221,14 +224,17 @@ def test_render_with_block_resources_and_headers(self, runner, mock_render_respo
221224
"render",
222225
"https://example.com",
223226
"--block-resources",
227+
"image",
228+
"--block-resources",
229+
"stylesheet",
224230
"--headers",
225231
'{"X-Test":"1"}',
226232
"--json",
227233
],
228234
)
229235
assert result.exit_code == 0
230236
sent = json.loads(route.calls[0].request.content)
231-
assert sent["block_resources"] is True
237+
assert sent["block_resources"] == ["image", "stylesheet"]
232238
assert sent["headers"] == {"X-Test": "1"}
233239

234240
def test_render_no_token(self, runner):

webextrator_cli/commands/web.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from webextrator_cli.core.client import get_client
88
from webextrator_cli.core.exceptions import WebExtratorError
99
from webextrator_cli.core.output import (
10+
BLOCK_RESOURCE_TYPES,
1011
WAIT_UNTIL_OPTIONS,
1112
print_error,
1213
print_extract_result,
@@ -68,9 +69,14 @@ def _parse_headers(headers: str | None) -> dict[str, str] | None:
6869
help="CSS selector to wait for before starting extraction.",
6970
)
7071
@click.option(
71-
"--block-resources/--no-block-resources",
72-
default=None,
73-
help="Block non-essential resources (images/fonts/media) during page load.",
72+
"--block-resources",
73+
"block_resources",
74+
type=click.Choice(BLOCK_RESOURCE_TYPES),
75+
multiple=True,
76+
help=(
77+
"Resource type(s) to block during page load. "
78+
"Can be specified multiple times (e.g. --block-resources image --block-resources font)."
79+
),
7480
)
7581
@click.option(
7682
"--headers",
@@ -105,7 +111,7 @@ def extract(
105111
timeout: float | None,
106112
delay: float | None,
107113
wait_for_selector: str | None,
108-
block_resources: bool | None,
114+
block_resources: tuple[str, ...],
109115
headers: str | None,
110116
user_agent: str | None,
111117
callback_url: str | None,
@@ -121,6 +127,7 @@ def extract(
121127
webextrator extract https://www.amazon.com/dp/B0C1234567
122128
webextrator extract https://example.com/article --expected-type article
123129
webextrator extract https://shop.example.com --enable-llm
130+
webextrator extract https://example.com --block-resources image --block-resources font
124131
"""
125132
client = get_client(ctx.obj.get("token"))
126133
payload: dict[str, object] = {
@@ -131,7 +138,7 @@ def extract(
131138
"timeout": timeout,
132139
"delay": delay,
133140
"wait_for_selector": wait_for_selector,
134-
"block_resources": block_resources,
141+
"block_resources": list(block_resources) if block_resources else None,
135142
"headers": _parse_headers(headers),
136143
"user_agent": user_agent,
137144
"callback_url": callback_url,
@@ -175,9 +182,14 @@ def extract(
175182
help="CSS selector to wait for before capturing HTML.",
176183
)
177184
@click.option(
178-
"--block-resources/--no-block-resources",
179-
default=None,
180-
help="Block non-essential resources (images/fonts/media) during page load.",
185+
"--block-resources",
186+
"block_resources",
187+
type=click.Choice(BLOCK_RESOURCE_TYPES),
188+
multiple=True,
189+
help=(
190+
"Resource type(s) to block during page load. "
191+
"Can be specified multiple times (e.g. --block-resources image --block-resources font)."
192+
),
181193
)
182194
@click.option(
183195
"--headers",
@@ -210,7 +222,7 @@ def render(
210222
timeout: float | None,
211223
delay: float | None,
212224
wait_for_selector: str | None,
213-
block_resources: bool | None,
225+
block_resources: tuple[str, ...],
214226
headers: str | None,
215227
user_agent: str | None,
216228
callback_url: str | None,
@@ -226,6 +238,7 @@ def render(
226238
webextrator render https://example.com
227239
webextrator render https://example.com --wait-until load
228240
webextrator render https://spa.example.com --delay 2 --wait-for-selector "#app"
241+
webextrator render https://example.com --block-resources image --block-resources stylesheet
229242
"""
230243
client = get_client(ctx.obj.get("token"))
231244
payload: dict[str, object] = {
@@ -234,7 +247,7 @@ def render(
234247
"timeout": timeout,
235248
"delay": delay,
236249
"wait_for_selector": wait_for_selector,
237-
"block_resources": block_resources,
250+
"block_resources": list(block_resources) if block_resources else None,
238251
"headers": _parse_headers(headers),
239252
"user_agent": user_agent,
240253
"callback_url": callback_url,

0 commit comments

Comments
 (0)