From 5fc80a36727b460b45baaf70e1af25f8521ed44e Mon Sep 17 00:00:00 2001 From: lolcat Date: Wed, 22 Jul 2026 02:02:54 -0400 Subject: [PATCH] google cse pagination fix, thanks nikolay --- scraper/google_cse.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/scraper/google_cse.php b/scraper/google_cse.php index 02ab462..8576f96 100644 --- a/scraper/google_cse.php +++ b/scraper/google_cse.php @@ -910,11 +910,10 @@ class google_cse{ "image" => [] ]; - // detect next page - if( - isset($json["cursor"]["isExactTotalResults"]) || // detects last page - !isset($json["cursor"]["pages"]) // detects no results on page - ){ + // A response can contain a final page of image results while also marking + // the cursor as exact/finished. Parse those results before deciding + // whether another page token should be offered. + if(!isset($json["results"]) || !is_array($json["results"])){ return $out; } @@ -939,6 +938,16 @@ class google_cse{ ]; } + // Only decide whether a following page exists after preserving every + // result returned on this page. + if( + isset($json["cursor"]["isExactTotalResults"]) || // detects last page + !isset($json["cursor"]["pages"]) // detects no results on page + ){ + + return $out; + } + // get next page $out["npt"] = $this->backend->store(