2025-03-28 06:56:36 +01:00
|
|
|
#include "http_curl.h"
|
2025-03-22 03:15:49 +01:00
|
|
|
#include <curl/curl.h>
|
|
|
|
#include <json-c/json.h>
|
|
|
|
#include <json-c/json_util.h>
|
2025-03-28 06:56:36 +01:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
2025-03-22 03:15:49 +01:00
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
char *url_encode(char *s) { return curl_easy_escape(NULL, s, 0); }
|
2025-03-22 03:15:49 +01:00
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
char *web_search_news(char *q) {
|
|
|
|
char *news = malloc(4096);
|
|
|
|
news[0] = 0;
|
|
|
|
char *q_encoded = url_encode(q);
|
|
|
|
sprintf(news,
|
|
|
|
"https://search.molodetz.nl/search?q=%s&format=json&categories=news",
|
|
|
|
q_encoded);
|
|
|
|
free(q_encoded);
|
|
|
|
char *ret = curl_get(news);
|
|
|
|
free(news);
|
|
|
|
json_object *json_ret = json_tokener_parse(ret);
|
2025-03-22 03:15:49 +01:00
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
json_object *json_results = json_object_object_get(json_ret, "results");
|
|
|
|
json_object *json_result = json_object_array_get_idx(json_results, 0);
|
|
|
|
if (!json_result) {
|
2025-03-22 03:15:49 +01:00
|
|
|
json_object_put(json_ret);
|
2025-03-28 06:56:36 +01:00
|
|
|
free(ret);
|
|
|
|
return web_search_news(q);
|
|
|
|
}
|
|
|
|
json_object_put(json_ret);
|
|
|
|
return ret;
|
2025-03-22 03:15:49 +01:00
|
|
|
}
|
2025-03-28 01:55:04 +01:00
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
char *web_search(char *q) {
|
|
|
|
char *news = (char *)malloc(4096);
|
|
|
|
news[0] = 0;
|
|
|
|
char *q_encoded = url_encode(q);
|
|
|
|
sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json",
|
|
|
|
q_encoded);
|
|
|
|
free(q_encoded);
|
|
|
|
char *ret = curl_get(news);
|
|
|
|
free(news);
|
|
|
|
json_object *json_ret = json_tokener_parse(ret);
|
2025-03-28 01:55:04 +01:00
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
json_object *json_results = json_object_object_get(json_ret, "results");
|
|
|
|
json_object *json_result = json_object_array_get_idx(json_results, 0);
|
|
|
|
if (!json_result) {
|
2025-03-28 01:55:04 +01:00
|
|
|
json_object_put(json_ret);
|
2025-03-28 06:56:36 +01:00
|
|
|
free(ret);
|
|
|
|
return web_search(q);
|
|
|
|
}
|
|
|
|
json_object_put(json_ret);
|
|
|
|
return ret;
|
2025-03-28 01:55:04 +01:00
|
|
|
}
|
|
|
|
|
2025-03-28 06:56:36 +01:00
|
|
|
char *web_search_engine(char *q) {
|
|
|
|
char *searx = malloc(4096);
|
|
|
|
searx[0] = 0;
|
|
|
|
sprintf(searx, "https://searx.molodetz.nl/search?q=%s&format=json", q);
|
|
|
|
char *ret = curl_get(searx);
|
|
|
|
free(searx);
|
|
|
|
return ret;
|
2025-03-22 03:15:49 +01:00
|
|
|
}
|