Skip to content

Commit 45444db

Browse files
committed
fix: add max_scrolls parameter to prevent infinite scrolling
1 parent 2dd296a commit 45444db

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

ayejax/__init__.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def _create_browser_context(self, *, har_file_path: Path | None = None) -> Gener
232232
b.close(reason="done")
233233
p.stop()
234234

235-
def __call__(self, *, url: str, query: str, load_state_timeout: float | None = None):
235+
def __call__(self, *, url: str, query: str, max_scrolls: int, load_state_timeout: float | None):
236236
prompt = PROMPT_TEMPLATE % query
237237
datetime_fmt = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
238238
har_file_path = Path(gettempdir()) / f"{datetime_fmt}--ayejax.har"
@@ -249,9 +249,10 @@ def __call__(self, *, url: str, query: str, load_state_timeout: float | None = N
249249

250250
self.logger.info("Performing initial scroll")
251251
self.scroll(page) # Scroll first to fetch some ajax responses
252+
max_scrolls -= 1
252253
self.logger.info(f"Initial scroll complete | response_count={len(self.url_to_response)}")
253254

254-
while len(self.url_to_score) == 0:
255+
while len(self.url_to_score) == 0 and max_scrolls > 0:
255256
try:
256257
self.fetch_keywords(prompt, page)
257258
except Exception as e:
@@ -262,6 +263,7 @@ def __call__(self, *, url: str, query: str, load_state_timeout: float | None = N
262263
break
263264

264265
self.scroll(page)
266+
max_scrolls -= 1
265267

266268
har_data = read_har(har_file_path)
267269
har_file_path.unlink()
@@ -284,11 +286,12 @@ def __call__(self, *, url: str, query: str, load_state_timeout: float | None = N
284286
def find(
285287
url: str,
286288
query: str,
289+
max_scrolls: int = 10,
287290
*,
288291
llm_client: llm.LLMClientInterface,
289292
browser: Browser | Literal["headless", "headed"] = "headed",
290293
relevance_threshold: float = 0.4,
291294
load_state_timeout: float | None = None,
292295
):
293296
finder = _Finder(llm_client=llm_client, browser=browser, relevance_threshold=relevance_threshold)
294-
return finder(url=url, query=query, load_state_timeout=load_state_timeout)
297+
return finder(url=url, query=query, max_scrolls=max_scrolls, load_state_timeout=load_state_timeout)

0 commit comments

Comments
 (0)