2023-08-07 09:54:25 -04:00
|
|
|
<?php
|
2023-08-07 12:01:12 -04:00
|
|
|
|
2023-08-07 09:54:25 -04:00
|
|
|
function get_librex_results($query, $page)
|
|
|
|
{
|
|
|
|
global $config;
|
|
|
|
|
2023-08-19 14:23:54 -04:00
|
|
|
if (isset($_REQUEST["nfb"]) && $_REQUEST["nfb"] == "1")
|
|
|
|
return array();
|
|
|
|
|
2023-08-07 09:54:25 -04:00
|
|
|
if (!$config->instance_fallback)
|
|
|
|
return array();
|
|
|
|
|
|
|
|
$instances_json = json_decode(file_get_contents("instances.json"), true);
|
2023-08-07 13:27:54 -04:00
|
|
|
|
|
|
|
if (empty($instances_json["instances"]))
|
|
|
|
return array();
|
|
|
|
|
|
|
|
|
2023-08-07 09:54:25 -04:00
|
|
|
$instances = array_map(fn($n) => $n['clearnet'], array_filter($instances_json['instances'], fn($n) => !is_null($n['clearnet'])));
|
2023-08-07 13:27:54 -04:00
|
|
|
shuffle($instances);
|
|
|
|
|
2023-08-07 09:54:25 -04:00
|
|
|
$query_encoded = urlencode($query);
|
|
|
|
|
2023-08-07 10:05:41 -04:00
|
|
|
$results = array();
|
2023-08-07 13:27:54 -04:00
|
|
|
$tries = 0;
|
2023-08-07 10:05:41 -04:00
|
|
|
|
|
|
|
do {
|
2023-08-07 13:27:54 -04:00
|
|
|
$tries++;
|
|
|
|
|
|
|
|
$instance = array_pop($instances);
|
|
|
|
|
|
|
|
if (parse_url($instance)["host"] == parse_url($_SERVER['HTTP_HOST'])["host"])
|
|
|
|
continue;
|
|
|
|
|
2023-08-19 14:23:54 -04:00
|
|
|
$url = $instance . "api.php?q=$query_encoded&p=$page&t=0&nfb=1";
|
2023-08-07 10:05:41 -04:00
|
|
|
|
|
|
|
$librex_ch = curl_init($url);
|
|
|
|
curl_setopt_array($librex_ch, $config->curl_settings);
|
2023-08-07 12:01:12 -04:00
|
|
|
copy_cookies($librex_ch);
|
2023-08-07 10:05:41 -04:00
|
|
|
$response = curl_exec($librex_ch);
|
|
|
|
curl_close($librex_ch);
|
2023-08-07 12:01:12 -04:00
|
|
|
|
2023-08-07 10:05:41 -04:00
|
|
|
$code = curl_getinfo($librex_ch)["http_code"];
|
|
|
|
$results = json_decode($response, true);
|
2023-08-07 09:54:25 -04:00
|
|
|
|
2023-08-19 15:16:43 -04:00
|
|
|
} while ( !empty($instances) && ($results == null || count($results) <= 1));
|
|
|
|
|
|
|
|
if (empty($instances))
|
|
|
|
return array();
|
2023-08-07 09:54:25 -04:00
|
|
|
|
2023-08-07 10:05:41 -04:00
|
|
|
return array_values($results);
|
2023-08-07 09:54:25 -04:00
|
|
|
}
|
|
|
|
?>
|