offset detection
Build and Push Docker Images / build-and-push (push) Successful in 19s

This commit is contained in:
2025-05-06 14:18:46 +02:00
parent ebfda3f155
commit ccfd088cb4
+28 -2
View File
@@ -231,7 +231,7 @@ async def detect_pagination_service(decoded_url):
// Try to find the last page number // Try to find the last page number
const pageNumbers = numberedLinks const pageNumbers = numberedLinks
.map(el => parseInt(el.innerText.trim())) .map(el => parseInt(el.innerText.replace(/[^\d]/g, '')))
.filter(num => !isNaN(num)); .filter(num => !isNaN(num));
if (pageNumbers.length > 0) { if (pageNumbers.length > 0) {
@@ -313,6 +313,7 @@ async def detect_pagination_service(decoded_url):
next_page_url = None next_page_url = None
pagination_parameter = None pagination_parameter = None
url_template = None url_template = None
step_size = None
if pagination_data['hasPagination']: if pagination_data['hasPagination']:
print("Pagination detected, attempting to click on a pagination element") print("Pagination detected, attempting to click on a pagination element")
@@ -479,6 +480,7 @@ async def detect_pagination_service(decoded_url):
}}''', original_url) }}''', original_url)
# Determine the pagination parameter and create URL template # Determine the pagination parameter and create URL template
print(original_parsed)
if original_parsed['paramDiff']: if original_parsed['paramDiff']:
param_name = original_parsed['paramDiff']['name'] param_name = original_parsed['paramDiff']['name']
pagination_parameter = { pagination_parameter = {
@@ -487,6 +489,17 @@ async def detect_pagination_service(decoded_url):
'value': original_parsed['paramDiff']['currentValue'] 'value': original_parsed['paramDiff']['currentValue']
} }
# --- STEP SIZE DETECTION FOR QUERY PARAM ---
orig_val = original_parsed['paramDiff']['originalValue'] if original_parsed['paramDiff']['originalValue'] is not None else 0
curr_val = original_parsed['paramDiff']['currentValue']
try:
if orig_val is not None and curr_val is not None:
orig_num = int(orig_val)
curr_num = int(curr_val)
step_size = abs(curr_num - orig_num)
except Exception:
step_size = None
# Create URL template for query parameter # Create URL template for query parameter
url_obj = await page.evaluate(f'''(url, paramName) => {{ url_obj = await page.evaluate(f'''(url, paramName) => {{
const urlObj = new URL(url); const urlObj = new URL(url);
@@ -504,6 +517,17 @@ async def detect_pagination_service(decoded_url):
'value': original_parsed['pathDiff']['currentValue'] 'value': original_parsed['pathDiff']['currentValue']
} }
# --- STEP SIZE DETECTION FOR PATH PARAM ---
orig_val = original_parsed['pathDiff']['originalValue']
curr_val = original_parsed['pathDiff']['currentValue']
try:
if orig_val is not None and curr_val is not None:
orig_num = int(orig_val)
curr_num = int(curr_val)
step_size = abs(curr_num - orig_num)
except Exception:
step_size = None
# Create URL template for path parameter # Create URL template for path parameter
url_template = await page.evaluate(f'''(url, pathIndex) => {{ url_template = await page.evaluate(f'''(url, pathIndex) => {{
const urlObj = new URL(url); const urlObj = new URL(url);
@@ -532,7 +556,8 @@ async def detect_pagination_service(decoded_url):
"status": "success", "status": "success",
"hasPagination": pagination_data['hasPagination'], "hasPagination": pagination_data['hasPagination'],
"urlTemplate": url_template, "urlTemplate": url_template,
"lastPage": pagination_data['lastPageNumber'] "lastPage": pagination_data['lastPageNumber'],
"stepSize": step_size
} }
return result return result
@@ -544,6 +569,7 @@ async def detect_pagination_service(decoded_url):
"hasPagination": False, "hasPagination": False,
"urlTemplate": None, "urlTemplate": None,
"lastPage": None, "lastPage": None,
"stepSize": None,
"error": str(e) "error": str(e)
} }