Skip to content

Commit 9997fec

Browse files
feat: refactor pagination and optimize displayWebsites function
- remove redundant nextPage/prevPage functions, add direct event listeners - create unified updatePagination function for both search and websites tabs - implement smart pagination distribution with max 10 pages constraint - add sequential filling for datasets ≤100 items (10 per page) - apply logarithmic scaling for large datasets (>500 items) - add item numbering to websites list for better readability - convert all createElement assignments from let to const - clean up redundant variables and inline calculations - fix early return guard clause in displayResults function - optimize code structure for better maintainability and performance - move all fixed DOM elements at script level
1 parent 9ae011b commit 9997fec

2 files changed

Lines changed: 174 additions & 200 deletions

File tree

search.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def google_search(api_key, search_engine_id, query, start, sort_by):
3131
return results, next_start, total_results, search_time
3232
except Exception as e:
3333
app.logger.error(f"\n\n[ERROR]: search -> {e}\n----------\n")
34-
return [], 0, 0, 0
34+
return [], 0, -1, 0
3535

3636
def extract_results(json_response):
3737
"""Extracts search results from API response."""
@@ -80,14 +80,15 @@ def fetch_all_results(api_key, search_engine_id, query, sort_by, max_queries):
8080
"""Fetch search results for a query dynamically using parallel requests."""
8181
# First, make a single request to get initial results and total count
8282
results, next_start, total_results, search_time = google_search(api_key, search_engine_id, query, 1, sort_by)
83+
if total_results < 1: return [], total_results, 0 # early exit on: no results found or an error occurred
8384
results_map = {1: results} # store first page results
8485
total_search_time = search_time
8586
remaining_pages = min(max_queries - 1, (total_results - 1) // MAX_RESULTS) # calculate remaining pages to fetch
8687
# app.logger.info(f"\n\n[DEBUG]: remaining_pages={remaining_pages}\n----------\n")
87-
if remaining_pages and next_start: # fetch remaining pages in parallel
88+
if remaining_pages and next_start: # fetch remaining pages in parallel (if any)
8889
with ThreadPoolExecutor() as executor:
8990
remaining_indices = [next_start + i * MAX_RESULTS for i in range(remaining_pages)]
90-
futures = {
91+
futures = {
9192
executor.submit(google_search, api_key, search_engine_id, query, start, sort_by): start
9293
for start in remaining_indices
9394
}

0 commit comments

Comments
 (0)