77from webextrator_cli .core .client import get_client
88from webextrator_cli .core .exceptions import WebExtratorError
99from 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