aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-02-24 01:30:46 -0500
committerfrosty <gabriel@bwaaa.monster>2026-02-24 01:30:46 -0500
commit7b595962d4757f982dee0985ad23b992fbe6b3fb (patch)
tree304922f7d6a4d16224eb8b69ca0af7559fe4bc0c
parentb280ab6bcdf6c9bae46a7a21b7138d46d953dd71 (diff)
downloadomnisearch-7b595962d4757f982dee0985ad23b992fbe6b3fb.tar.gz
added pagination to image search
-rw-r--r--src/Routes/Images.c18
-rw-r--r--templates/images.html9
2 files changed, 25 insertions, 2 deletions
diff --git a/src/Routes/Images.c b/src/Routes/Images.c
index 67ae94c..ab07849 100644
--- a/src/Routes/Images.c
+++ b/src/Routes/Images.c
@@ -65,16 +65,29 @@ static char *fetch_images_html(const char *url) {
int images_handler(UrlParams *params) {
TemplateContext ctx = new_context();
char *raw_query = "";
+ int page = 1;
if (params) {
for (int i = 0; i < params->count; i++) {
if (strcmp(params->params[i].key, "q") == 0) {
raw_query = params->params[i].value;
- break;
+ } else if (strcmp(params->params[i].key, "p") == 0) {
+ int parsed = atoi(params->params[i].value);
+ if (parsed > 1) page = parsed;
}
}
}
+ context_set(&ctx, "query", raw_query);
+
+ char page_str[16], prev_str[16], next_str[16];
+ snprintf(page_str, sizeof(page_str), "%d", page);
+ snprintf(prev_str, sizeof(prev_str), "%d", page > 1 ? page - 1 : 0);
+ snprintf(next_str, sizeof(next_str), "%d", page + 1);
+ context_set(&ctx, "page", page_str);
+ context_set(&ctx, "prev_page", prev_str);
+ context_set(&ctx, "next_page", next_str);
+
char *display_query = url_decode_query(raw_query);
context_set(&ctx, "query", display_query);
@@ -103,8 +116,9 @@ int images_handler(UrlParams *params) {
}
char url[1024];
+ int first = (page - 1) * 32 + 1;
snprintf(url, sizeof(url),
- "https://www.bing.com/images/search?q=%s", encoded_query);
+ "https://www.bing.com/images/search?q=%s&first=%d", encoded_query, first);
fprintf(stderr, "[DEBUG] Fetching URL: %s\n", url);
char *html = fetch_images_html(url);
diff --git a/templates/images.html b/templates/images.html
index fd4915a..2f1bb40 100644
--- a/templates/images.html
+++ b/templates/images.html
@@ -60,6 +60,15 @@
</div>
{{endfor}}
</div>
+ <nav class="pagination">
+ <a class="pagination-btn prev" href="/images?q={{query}}&p={{prev_page}}">
+ &larr; Page {{prev_page}}
+ </a>
+ <span class="pagination-current">Page {{page}}</span>
+ <a class="pagination-btn next" href="/images?q={{query}}&p={{next_page}}">
+ Page {{next_page}} &rarr;
+ </a>
+ </nav>
</main>
</body>